#include <stdlib.h>
#include <limits>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/compiler/plugin.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream.h>
#include "perfetto/ext/base/string_utils.h"
namespace protozero {
namespace {
Descriptor;
EnumDescriptor;
EnumValueDescriptor;
FieldDescriptor;
FileDescriptor;
GeneratorContext;
Printer;
ZeroCopyOutputStream;
ReplaceAll;
SplitString;
StripChars;
StripPrefix;
StripSuffix;
ToUpper;
Uppercase;
constexpr int kMaxDecoderFieldId = …;
void Assert(bool condition) { … }
struct FileDescriptorComp { … };
struct DescriptorComp { … };
struct EnumDescriptorComp { … };
inline std::string ProtoStubName(const FileDescriptor* proto) { … }
class GeneratorJob { … };
class ProtoZeroGenerator : public ::google::protobuf::compiler::CodeGenerator { … };
ProtoZeroGenerator::ProtoZeroGenerator() { … }
ProtoZeroGenerator::~ProtoZeroGenerator() { … }
bool ProtoZeroGenerator::Generate(const FileDescriptor* file,
const std::string& options,
GeneratorContext* context,
std::string* error) const { … }
}
}
int main(int argc, char* argv[]) { … }