Index: third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h |
index 2deefaa86b521f38981674983317e15534652e52..29cdaea53d25bb4ca5140c730d9afc01d86fbc13 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h |
+++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h |
@@ -1,6 +1,6 @@ |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
-// http://code.google.com/p/protobuf/ |
+// https://developers.google.com/protocol-buffers/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
@@ -35,6 +35,10 @@ |
#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__ |
#define GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__ |
+#include <memory> |
+#ifndef _SHARED_PTR_H |
+#include <google/protobuf/stubs/shared_ptr.h> |
+#endif |
#include <string> |
#include <vector> |
#include <google/protobuf/stubs/common.h> |
@@ -65,10 +69,14 @@ class FileGenerator { |
const Options& options); |
~FileGenerator(); |
- void GenerateHeader(io::Printer* printer); |
+ void GenerateProtoHeader(io::Printer* printer); |
+ void GeneratePBHeader(io::Printer* printer); |
void GenerateSource(io::Printer* printer); |
private: |
+ // Internal type used by GenerateForwardDeclarations (defined in file.cc). |
+ class ForwardDeclarations; |
+ |
// Generate the BuildDescriptors() procedure, which builds all descriptors |
// for types defined in the file. |
void GenerateBuildDescriptors(io::Printer* printer); |
@@ -76,16 +84,64 @@ class FileGenerator { |
void GenerateNamespaceOpeners(io::Printer* printer); |
void GenerateNamespaceClosers(io::Printer* printer); |
+ // For other imports, generates their forward-declarations. |
+ void GenerateForwardDeclarations(io::Printer* printer); |
+ |
+ // Internal helper used by GenerateForwardDeclarations: fills 'decls' |
+ // with all necessary forward-declarations for this file and its |
+ // transient depednencies. |
+ void FillForwardDeclarations(ForwardDeclarations* decls); |
+ |
+ // Generates top or bottom of a header file. |
+ void GenerateTopHeaderGuard(io::Printer* printer, |
+ const string& filename_identifier); |
+ void GenerateBottomHeaderGuard(io::Printer* printer, |
+ const string& filename_identifier); |
+ |
+ // Generates #include directives. |
+ void GenerateLibraryIncludes(io::Printer* printer); |
+ void GenerateDependencyIncludes(io::Printer* printer); |
+ |
+ // Generates a couple of different pieces before definitions: |
+ void GenerateGlobalStateFunctionDeclarations(io::Printer* printer); |
+ |
+ // Generates types for classes. |
+ void GenerateMessageDefinitions(io::Printer* printer); |
+ |
+ // Generates forward-declarations for just this file's classes. This is |
+ // used for .pb.h headers, but not in proto_h mode. |
+ void GenerateMessageForwardDeclarations(io::Printer* printer); |
+ |
+ // Fills in types for forward declarations. This is used internally, and |
+ // also by other FileGenerators to determine imports' declarations. |
+ void FillMessageForwardDeclarations(ForwardDeclarations* decls); |
+ void FillMessageDefinitions(ForwardDeclarations* decls); |
+ |
+ // Generates enum definitions. |
+ void GenerateEnumForwardDeclarations(io::Printer* printer); |
+ void FillEnumForwardDeclarations(ForwardDeclarations* decls); |
+ void GenerateEnumDefinitions(io::Printer* printer); |
+ |
+ // Generates generic service definitions. |
+ void GenerateServiceDefinitions(io::Printer* printer); |
+ |
+ // Generates extension identifiers. |
+ void GenerateExtensionIdentifiers(io::Printer* printer); |
+ |
+ // Generates inline function defintions. |
+ void GenerateInlineFunctionDefinitions(io::Printer* printer); |
+ |
+ void GenerateProto2NamespaceEnumSpecializations(io::Printer* printer); |
+ |
const FileDescriptor* file_; |
- scoped_array<scoped_ptr<MessageGenerator> > message_generators_; |
- scoped_array<scoped_ptr<EnumGenerator> > enum_generators_; |
- scoped_array<scoped_ptr<ServiceGenerator> > service_generators_; |
- scoped_array<scoped_ptr<ExtensionGenerator> > extension_generators_; |
+ google::protobuf::scoped_array<google::protobuf::scoped_ptr<MessageGenerator> > message_generators_; |
+ google::protobuf::scoped_array<google::protobuf::scoped_ptr<EnumGenerator> > enum_generators_; |
+ google::protobuf::scoped_array<google::protobuf::scoped_ptr<ServiceGenerator> > service_generators_; |
+ google::protobuf::scoped_array<google::protobuf::scoped_ptr<ExtensionGenerator> > extension_generators_; |
// E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. |
vector<string> package_parts_; |
- |
const Options options_; |
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); |