OLD | NEW |
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 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 | 140 |
141 // Get code that evaluates to the field's default value. | 141 // Get code that evaluates to the field's default value. |
142 string DefaultValue(const FieldDescriptor* field); | 142 string DefaultValue(const FieldDescriptor* field); |
143 | 143 |
144 // Convert a file name into a valid identifier. | 144 // Convert a file name into a valid identifier. |
145 string FilenameIdentifier(const string& filename); | 145 string FilenameIdentifier(const string& filename); |
146 | 146 |
147 // Return the name of the AddDescriptors() function for a given file. | 147 // Return the name of the AddDescriptors() function for a given file. |
148 string GlobalAddDescriptorsName(const string& filename); | 148 string GlobalAddDescriptorsName(const string& filename); |
149 | 149 |
150 // Return the name of the InitDefaults() function for a given file. | 150 // Return the name of the AssignDescriptors() function for a given file. |
151 string GlobalInitDefaultsName(const string& filename); | 151 string GlobalAssignDescriptorsName(const string& filename); |
152 | |
153 // Return the name of the offset table function for a given file. | |
154 string GlobalOffsetTableName(const string& filename); | |
155 | 152 |
156 // Return the qualified C++ name for a file level symbol. | 153 // Return the qualified C++ name for a file level symbol. |
157 string QualifiedFileLevelSymbol(const string& package, const string& name); | 154 string QualifiedFileLevelSymbol(const string& package, const string& name); |
158 | 155 |
159 // Return the name of the ShutdownFile() function for a given file. | 156 // Return the name of the ShutdownFile() function for a given file. |
160 string GlobalShutdownFileName(const string& filename); | 157 string GlobalShutdownFileName(const string& filename); |
161 | 158 |
162 // Escape C++ trigraphs by escaping question marks to \? | 159 // Escape C++ trigraphs by escaping question marks to \? |
163 string EscapeTrigraphs(const string& to_escape); | 160 string EscapeTrigraphs(const string& to_escape); |
164 | 161 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 // size. | 216 // size. |
220 inline bool HasFastArraySerialization(const FileDescriptor* file, | 217 inline bool HasFastArraySerialization(const FileDescriptor* file, |
221 const Options& options) { | 218 const Options& options) { |
222 return GetOptimizeFor(file, options) == FileOptions::SPEED; | 219 return GetOptimizeFor(file, options) == FileOptions::SPEED; |
223 } | 220 } |
224 | 221 |
225 // Returns whether we have to generate code with static initializers. | 222 // Returns whether we have to generate code with static initializers. |
226 bool StaticInitializersForced(const FileDescriptor* file, | 223 bool StaticInitializersForced(const FileDescriptor* file, |
227 const Options& options); | 224 const Options& options); |
228 | 225 |
| 226 // Prints 'with_static_init' if static initializers have to be used for the |
| 227 // provided file. Otherwise emits both 'with_static_init' and |
| 228 // 'without_static_init' using #ifdef. |
| 229 void PrintHandlingOptionalStaticInitializers( |
| 230 const FileDescriptor* file, const Options& options, io::Printer* printer, |
| 231 const char* with_static_init, const char* without_static_init, |
| 232 const char* var1 = NULL, const string& val1 = "", const char* var2 = NULL, |
| 233 const string& val2 = ""); |
| 234 |
| 235 void PrintHandlingOptionalStaticInitializers(const map<string, string>& vars, |
| 236 const FileDescriptor* file, |
| 237 const Options& options, |
| 238 io::Printer* printer, |
| 239 const char* with_static_init, |
| 240 const char* without_static_init); |
| 241 |
229 | 242 |
230 inline bool IsMapEntryMessage(const Descriptor* descriptor) { | 243 inline bool IsMapEntryMessage(const Descriptor* descriptor) { |
231 return descriptor->options().map_entry(); | 244 return descriptor->options().map_entry(); |
232 } | 245 } |
233 | 246 |
234 // Returns true if the field's CPPTYPE is string or message. | 247 // Returns true if the field's CPPTYPE is string or message. |
235 bool IsStringOrMessage(const FieldDescriptor* field); | 248 bool IsStringOrMessage(const FieldDescriptor* field); |
236 | 249 |
237 // For a string field, returns the effective ctype. If the actual ctype is | 250 // For a string field, returns the effective ctype. If the actual ctype is |
238 // not supported, returns the default of STRING. | 251 // not supported, returns the default of STRING. |
(...skipping 23 matching lines...) Expand all Loading... |
262 return SupportsArenas(field->file()); | 275 return SupportsArenas(field->file()); |
263 } | 276 } |
264 | 277 |
265 bool IsAnyMessage(const FileDescriptor* descriptor); | 278 bool IsAnyMessage(const FileDescriptor* descriptor); |
266 bool IsAnyMessage(const Descriptor* descriptor); | 279 bool IsAnyMessage(const Descriptor* descriptor); |
267 | 280 |
268 bool IsWellKnownMessage(const FileDescriptor* descriptor); | 281 bool IsWellKnownMessage(const FileDescriptor* descriptor); |
269 | 282 |
270 void GenerateUtf8CheckCodeForString(const FieldDescriptor* field, | 283 void GenerateUtf8CheckCodeForString(const FieldDescriptor* field, |
271 const Options& options, bool for_parse, | 284 const Options& options, bool for_parse, |
272 const std::map<string, string>& variables, | 285 const map<string, string>& variables, |
273 const char* parameters, | 286 const char* parameters, |
274 io::Printer* printer); | 287 io::Printer* printer); |
275 | 288 |
276 void GenerateUtf8CheckCodeForCord(const FieldDescriptor* field, | 289 void GenerateUtf8CheckCodeForCord(const FieldDescriptor* field, |
277 const Options& options, bool for_parse, | 290 const Options& options, bool for_parse, |
278 const std::map<string, string>& variables, | 291 const map<string, string>& variables, |
279 const char* parameters, io::Printer* printer); | 292 const char* parameters, io::Printer* printer); |
280 | 293 |
281 inline ::google::protobuf::FileOptions_OptimizeMode GetOptimizeFor( | 294 inline ::google::protobuf::FileOptions_OptimizeMode GetOptimizeFor( |
282 const FileDescriptor* file, const Options& options) { | 295 const FileDescriptor* file, const Options& options) { |
283 return options.enforce_lite | 296 return options.enforce_lite |
284 ? FileOptions::LITE_RUNTIME | 297 ? FileOptions::LITE_RUNTIME |
285 : file->options().optimize_for(); | 298 : file->options().optimize_for(); |
286 } | 299 } |
287 | 300 |
288 } // namespace cpp | 301 } // namespace cpp |
289 } // namespace compiler | 302 } // namespace compiler |
290 } // namespace protobuf | 303 } // namespace protobuf |
291 | 304 |
292 } // namespace google | 305 } // namespace google |
293 #endif // GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__ | 306 #endif // GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__ |
OLD | NEW |