Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(688)

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h

Issue 2599263002: third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Address comments Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 class MessageGenerator; // message.h 61 class MessageGenerator; // message.h
62 class ServiceGenerator; // service.h 62 class ServiceGenerator; // service.h
63 class ExtensionGenerator; // extension.h 63 class ExtensionGenerator; // extension.h
64 64
65 class FileGenerator { 65 class FileGenerator {
66 public: 66 public:
67 // See generator.cc for the meaning of dllexport_decl. 67 // See generator.cc for the meaning of dllexport_decl.
68 FileGenerator(const FileDescriptor* file, const Options& options); 68 FileGenerator(const FileDescriptor* file, const Options& options);
69 ~FileGenerator(); 69 ~FileGenerator();
70 70
71 // Shared code between the two header generators below.
72 void GenerateHeader(io::Printer* printer);
73
71 // info_path, if non-empty, should be the path (relative to printer's output) 74 // info_path, if non-empty, should be the path (relative to printer's output)
72 // to the metadata file describing this proto header. 75 // to the metadata file describing this proto header.
73 void GenerateProtoHeader(io::Printer* printer, 76 void GenerateProtoHeader(io::Printer* printer,
74 const string& info_path); 77 const string& info_path);
75 // info_path, if non-empty, should be the path (relative to printer's output) 78 // info_path, if non-empty, should be the path (relative to printer's output)
76 // to the metadata file describing this PB header. 79 // to the metadata file describing this PB header.
77 void GeneratePBHeader(io::Printer* printer, 80 void GeneratePBHeader(io::Printer* printer,
78 const string& info_path); 81 const string& info_path);
79 void GenerateSource(io::Printer* printer); 82 void GenerateSource(io::Printer* printer);
80 83
(...skipping 29 matching lines...) Expand all
110 // Generate a pragma to pull in metadata using the given info_path (if 113 // Generate a pragma to pull in metadata using the given info_path (if
111 // non-empty). info_path should be relative to printer's output. 114 // non-empty). info_path should be relative to printer's output.
112 void GenerateMetadataPragma(io::Printer* printer, const string& info_path); 115 void GenerateMetadataPragma(io::Printer* printer, const string& info_path);
113 116
114 // Generates a couple of different pieces before definitions: 117 // Generates a couple of different pieces before definitions:
115 void GenerateGlobalStateFunctionDeclarations(io::Printer* printer); 118 void GenerateGlobalStateFunctionDeclarations(io::Printer* printer);
116 119
117 // Generates types for classes. 120 // Generates types for classes.
118 void GenerateMessageDefinitions(io::Printer* printer); 121 void GenerateMessageDefinitions(io::Printer* printer);
119 122
120 // Generates forward-declarations for just this file's classes. This is
121 // used for .pb.h headers, but not in proto_h mode.
122 void GenerateMessageForwardDeclarations(io::Printer* printer);
123
124 // Fills in types for forward declarations. This is used internally, and
125 // also by other FileGenerators to determine imports' declarations.
126 void FillMessageForwardDeclarations(ForwardDeclarations* decls);
127 void FillMessageDefinitions(ForwardDeclarations* decls);
128
129 // Generates enum definitions.
130 void GenerateEnumForwardDeclarations(io::Printer* printer);
131 void FillEnumForwardDeclarations(ForwardDeclarations* decls);
132 void GenerateEnumDefinitions(io::Printer* printer); 123 void GenerateEnumDefinitions(io::Printer* printer);
133 124
134 // Generates generic service definitions. 125 // Generates generic service definitions.
135 void GenerateServiceDefinitions(io::Printer* printer); 126 void GenerateServiceDefinitions(io::Printer* printer);
136 127
137 // Generates extension identifiers. 128 // Generates extension identifiers.
138 void GenerateExtensionIdentifiers(io::Printer* printer); 129 void GenerateExtensionIdentifiers(io::Printer* printer);
139 130
140 // Generates inline function defintions. 131 // Generates inline function defintions.
141 void GenerateInlineFunctionDefinitions(io::Printer* printer); 132 void GenerateInlineFunctionDefinitions(io::Printer* printer);
142 133
143 void GenerateProto2NamespaceEnumSpecializations(io::Printer* printer); 134 void GenerateProto2NamespaceEnumSpecializations(io::Printer* printer);
144 135
145 const FileDescriptor* file_; 136 const FileDescriptor* file_;
146 const Options options_; 137 const Options options_;
147 138
148 google::protobuf::scoped_array<google::protobuf::scoped_ptr<MessageGenerator> > message_generators_; 139 // Contains the post-order walk of all the messages (and child messages) in
149 google::protobuf::scoped_array<google::protobuf::scoped_ptr<EnumGenerator> > e num_generators_; 140 // this file. If you need a pre-order walk just reverse iterate.
150 google::protobuf::scoped_array<google::protobuf::scoped_ptr<ServiceGenerator> > service_generators_; 141 std::vector<MessageGenerator*> message_generators_;
151 google::protobuf::scoped_array<google::protobuf::scoped_ptr<ExtensionGenerator > > extension_generators_; 142 std::vector<EnumGenerator*> enum_generators_;
143 std::vector<ServiceGenerator*> service_generators_;
144 std::vector<ExtensionGenerator*> extension_generators_;
145
146 // These members are just for owning (and thus proper deleting). Some of the
147 // message_ and enum_generators above are owned by child messages.
148 google::protobuf::scoped_array<google::protobuf::scoped_ptr<MessageGenerator> >
149 message_generators_owner_;
150 google::protobuf::scoped_array<google::protobuf::scoped_ptr<EnumGenerator> > e num_generators_owner_;
151 google::protobuf::scoped_array<google::protobuf::scoped_ptr<ServiceGenerator> >
152 service_generators_owner_;
153 google::protobuf::scoped_array<google::protobuf::scoped_ptr<ExtensionGenerator > >
154 extension_generators_owner_;
152 155
153 // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}. 156 // E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}.
154 vector<string> package_parts_; 157 std::vector<string> package_parts_;
155 158
156 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); 159 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator);
157 }; 160 };
158 161
159 } // namespace cpp 162 } // namespace cpp
160 } // namespace compiler 163 } // namespace compiler
161 } // namespace protobuf 164 } // namespace protobuf
162 165
163 } // namespace google 166 } // namespace google
164 #endif // GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__ 167 #endif // GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698