37 #ifndef GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__
38 #define GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__
44 #include <google/protobuf/stubs/common.h>
45 #include <google/protobuf/descriptor.h>
47 #include <google/protobuf/port_def.inc>
50 #error "You cannot SWIG proto headers"
59 class EncodedDescriptorDatabase;
106 std::vector<int>* ) {
128 bool FindAllPackageNames(std::vector<std::string>*
output);
135 bool FindAllMessageNames(std::vector<std::string>*
output);
184 bool FindAllExtensionNumbers(
const std::string& extendee_type,
185 std::vector<int>*
output)
override;
187 bool FindAllFileNames(std::vector<std::string>*
output)
override;
192 template <
typename Value>
193 class DescriptorIndex {
208 std::vector<int>*
output);
209 void FindAllFileNames(std::vector<std::string>*
output);
212 std::map<std::string, Value> by_name_;
213 std::map<std::string, Value> by_symbol_;
214 std::map<std::pair<std::string, int>,
Value> by_extension_;
268 DescriptorIndex<const FileDescriptorProto*>
index_;
269 std::vector<std::unique_ptr<const FileDescriptorProto>> files_to_delete_;
285 EncodedDescriptorDatabase();
286 ~EncodedDescriptorDatabase()
override;
294 bool Add(
const void* encoded_file_descriptor,
int size);
298 bool AddCopy(
const void* encoded_file_descriptor,
int size);
301 bool FindNameOfFileContainingSymbol(
const std::string& symbol_name,
312 bool FindAllExtensionNumbers(
const std::string& extendee_type,
313 std::vector<int>*
output)
override;
314 bool FindAllFileNames(std::vector<std::string>*
output)
override;
320 std::unique_ptr<DescriptorIndex>
index_;
321 std::vector<void*> files_to_delete_;
325 bool MaybeParse(std::pair<const void*, int> encoded_file,
345 bool FindAllExtensionNumbers(
const std::string& extendee_type,
346 std::vector<int>*
output)
override;
364 const std::vector<DescriptorDatabase*>&
sources);
377 bool FindAllExtensionNumbers(
const std::string& extendee_type,
378 std::vector<int>*
output)
override;
382 std::vector<DescriptorDatabase*> sources_;
389 #include <google/protobuf/port_undef.inc>
391 #endif // GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__