#include <google/protobuf/descriptor_database.h>
#include <algorithm>
#include <set>
#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/stubs/map_util.h>
#include <google/protobuf/stubs/stl_util.h>
namespace google {
namespace protobuf {
namespace {
void RecordMessageNames(const DescriptorProto& desc_proto,
const std::string& prefix,
std::set<std::string>* output) { … }
void RecordMessageNames(const FileDescriptorProto& file_proto,
std::set<std::string>* output) { … }
template <typename Fn>
bool ForAllFileProtos(DescriptorDatabase* db, Fn callback,
std::vector<std::string>* output) { … }
}
DescriptorDatabase::~DescriptorDatabase() { … }
bool DescriptorDatabase::FindAllPackageNames(std::vector<std::string>* output) { … }
bool DescriptorDatabase::FindAllMessageNames(std::vector<std::string>* output) { … }
SimpleDescriptorDatabase::SimpleDescriptorDatabase() { … }
SimpleDescriptorDatabase::~SimpleDescriptorDatabase() { … }
template <typename Value>
bool SimpleDescriptorDatabase::DescriptorIndex<Value>::AddFile(
const FileDescriptorProto& file, Value value) { … }
namespace {
bool ValidateSymbolName(StringPiece name) { … }
template <typename Container, typename Key>
typename Container::const_iterator FindLastLessOrEqual(
const Container* container, const Key& key) { … }
template <typename Container, typename Key, typename Cmp>
typename Container::const_iterator FindLastLessOrEqual(
const Container* container, const Key& key, const Cmp& cmp) { … }
bool IsSubSymbol(StringPiece sub_symbol, StringPiece super_symbol) { … }
}
template <typename Value>
bool SimpleDescriptorDatabase::DescriptorIndex<Value>::AddSymbol(
const std::string& name, Value value) { … }
template <typename Value>
bool SimpleDescriptorDatabase::DescriptorIndex<Value>::AddNestedExtensions(
const std::string& filename, const DescriptorProto& message_type,
Value value) { … }
template <typename Value>
bool SimpleDescriptorDatabase::DescriptorIndex<Value>::AddExtension(
const std::string& filename, const FieldDescriptorProto& field,
Value value) { … }
template <typename Value>
Value SimpleDescriptorDatabase::DescriptorIndex<Value>::FindFile(
const std::string& filename) { … }
template <typename Value>
Value SimpleDescriptorDatabase::DescriptorIndex<Value>::FindSymbol(
const std::string& name) { … }
template <typename Value>
Value SimpleDescriptorDatabase::DescriptorIndex<Value>::FindExtension(
const std::string& containing_type, int field_number) { … }
template <typename Value>
bool SimpleDescriptorDatabase::DescriptorIndex<Value>::FindAllExtensionNumbers(
const std::string& containing_type, std::vector<int>* output) { … }
template <typename Value>
void SimpleDescriptorDatabase::DescriptorIndex<Value>::FindAllFileNames(
std::vector<std::string>* output) { … }
bool SimpleDescriptorDatabase::Add(const FileDescriptorProto& file) { … }
bool SimpleDescriptorDatabase::AddAndOwn(const FileDescriptorProto* file) { … }
bool SimpleDescriptorDatabase::FindFileByName(const std::string& filename,
FileDescriptorProto* output) { … }
bool SimpleDescriptorDatabase::FindFileContainingSymbol(
const std::string& symbol_name, FileDescriptorProto* output) { … }
bool SimpleDescriptorDatabase::FindFileContainingExtension(
const std::string& containing_type, int field_number,
FileDescriptorProto* output) { … }
bool SimpleDescriptorDatabase::FindAllExtensionNumbers(
const std::string& extendee_type, std::vector<int>* output) { … }
bool SimpleDescriptorDatabase::FindAllFileNames(
std::vector<std::string>* output) { … }
bool SimpleDescriptorDatabase::MaybeCopy(const FileDescriptorProto* file,
FileDescriptorProto* output) { … }
class EncodedDescriptorDatabase::DescriptorIndex { … };
bool EncodedDescriptorDatabase::Add(const void* encoded_file_descriptor,
int size) { … }
bool EncodedDescriptorDatabase::AddCopy(const void* encoded_file_descriptor,
int size) { … }
bool EncodedDescriptorDatabase::FindFileByName(const std::string& filename,
FileDescriptorProto* output) { … }
bool EncodedDescriptorDatabase::FindFileContainingSymbol(
const std::string& symbol_name, FileDescriptorProto* output) { … }
bool EncodedDescriptorDatabase::FindNameOfFileContainingSymbol(
const std::string& symbol_name, std::string* output) { … }
bool EncodedDescriptorDatabase::FindFileContainingExtension(
const std::string& containing_type, int field_number,
FileDescriptorProto* output) { … }
bool EncodedDescriptorDatabase::FindAllExtensionNumbers(
const std::string& extendee_type, std::vector<int>* output) { … }
template <typename FileProto>
bool EncodedDescriptorDatabase::DescriptorIndex::AddFile(const FileProto& file,
Value value) { … }
template <typename Iter, typename Iter2, typename Index>
static bool CheckForMutualSubsymbols(StringPiece symbol_name, Iter* iter,
Iter2 end, const Index& index) { … }
bool EncodedDescriptorDatabase::DescriptorIndex::AddSymbol(
StringPiece symbol) { … }
template <typename DescProto>
bool EncodedDescriptorDatabase::DescriptorIndex::AddNestedExtensions(
StringPiece filename, const DescProto& message_type) { … }
template <typename FieldProto>
bool EncodedDescriptorDatabase::DescriptorIndex::AddExtension(
StringPiece filename, const FieldProto& field) { … }
std::pair<const void*, int>
EncodedDescriptorDatabase::DescriptorIndex::FindSymbol(StringPiece name) { … }
std::pair<const void*, int>
EncodedDescriptorDatabase::DescriptorIndex::FindSymbolOnlyFlat(
StringPiece name) const { … }
std::pair<const void*, int>
EncodedDescriptorDatabase::DescriptorIndex::FindExtension(
StringPiece containing_type, int field_number) { … }
template <typename T, typename Less>
static void MergeIntoFlat(std::set<T, Less>* s, std::vector<T>* flat) { … }
void EncodedDescriptorDatabase::DescriptorIndex::EnsureFlat() { … }
bool EncodedDescriptorDatabase::DescriptorIndex::FindAllExtensionNumbers(
StringPiece containing_type, std::vector<int>* output) { … }
void EncodedDescriptorDatabase::DescriptorIndex::FindAllFileNames(
std::vector<std::string>* output) const { … }
std::pair<const void*, int>
EncodedDescriptorDatabase::DescriptorIndex::FindFile(
StringPiece filename) { … }
bool EncodedDescriptorDatabase::FindAllFileNames(
std::vector<std::string>* output) { … }
bool EncodedDescriptorDatabase::MaybeParse(
std::pair<const void*, int> encoded_file, FileDescriptorProto* output) { … }
EncodedDescriptorDatabase::EncodedDescriptorDatabase()
: … { … }
EncodedDescriptorDatabase::~EncodedDescriptorDatabase() { … }
DescriptorPoolDatabase::DescriptorPoolDatabase(const DescriptorPool& pool)
: … { … }
DescriptorPoolDatabase::~DescriptorPoolDatabase() { … }
bool DescriptorPoolDatabase::FindFileByName(const std::string& filename,
FileDescriptorProto* output) { … }
bool DescriptorPoolDatabase::FindFileContainingSymbol(
const std::string& symbol_name, FileDescriptorProto* output) { … }
bool DescriptorPoolDatabase::FindFileContainingExtension(
const std::string& containing_type, int field_number,
FileDescriptorProto* output) { … }
bool DescriptorPoolDatabase::FindAllExtensionNumbers(
const std::string& extendee_type, std::vector<int>* output) { … }
MergedDescriptorDatabase::MergedDescriptorDatabase(
DescriptorDatabase* source1, DescriptorDatabase* source2) { … }
MergedDescriptorDatabase::MergedDescriptorDatabase(
const std::vector<DescriptorDatabase*>& sources)
: … { … }
MergedDescriptorDatabase::~MergedDescriptorDatabase() { … }
bool MergedDescriptorDatabase::FindFileByName(const std::string& filename,
FileDescriptorProto* output) { … }
bool MergedDescriptorDatabase::FindFileContainingSymbol(
const std::string& symbol_name, FileDescriptorProto* output) { … }
bool MergedDescriptorDatabase::FindFileContainingExtension(
const std::string& containing_type, int field_number,
FileDescriptorProto* output) { … }
bool MergedDescriptorDatabase::FindAllExtensionNumbers(
const std::string& extendee_type, std::vector<int>* output) { … }
bool MergedDescriptorDatabase::FindAllFileNames(
std::vector<std::string>* output) { … }
}
}