#include <iomanip>
#include <sstream>
#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 <google/protobuf/compiler/ruby/ruby_generator.h>
namespace google {
namespace protobuf {
namespace compiler {
namespace ruby {
template <class numeric_type>
std::string NumberToString(numeric_type value);
std::string GetRequireName(const std::string& proto_file);
std::string LabelForField(FieldDescriptor* field);
std::string TypeName(FieldDescriptor* field);
bool GenerateMessage(const Descriptor* message, io::Printer* printer,
std::string* error);
void GenerateEnum(const EnumDescriptor* en, io::Printer* printer);
void GenerateMessageAssignment(const std::string& prefix,
const Descriptor* message, io::Printer* printer);
void GenerateEnumAssignment(const std::string& prefix, const EnumDescriptor* en,
io::Printer* printer);
std::string DefaultValueForField(const FieldDescriptor* field);
template<class numeric_type>
std::string NumberToString(numeric_type value) { … }
std::string GetRequireName(const std::string& proto_file) { … }
std::string GetOutputFilename(const std::string& proto_file) { … }
std::string LabelForField(const FieldDescriptor* field) { … }
std::string TypeName(const FieldDescriptor* field) { … }
std::string StringifySyntax(FileDescriptor::Syntax syntax) { … }
std::string DefaultValueForField(const FieldDescriptor* field) { … }
void GenerateField(const FieldDescriptor* field, io::Printer* printer) { … }
void GenerateOneof(const OneofDescriptor* oneof, io::Printer* printer) { … }
bool GenerateMessage(const Descriptor* message, io::Printer* printer,
std::string* error) { … }
void GenerateEnum(const EnumDescriptor* en, io::Printer* printer) { … }
bool IsLower(char ch) { … }
bool IsUpper(char ch) { … }
bool IsAlpha(char ch) { … }
char UpperChar(char ch) { … }
std::string PackageToModule(const std::string& name) { … }
std::string RubifyConstant(const std::string& name) { … }
void GenerateMessageAssignment(const std::string& prefix,
const Descriptor* message,
io::Printer* printer) { … }
void GenerateEnumAssignment(const std::string& prefix, const EnumDescriptor* en,
io::Printer* printer) { … }
int GeneratePackageModules(const FileDescriptor* file, io::Printer* printer) { … }
void EndPackageModules(int levels, io::Printer* printer) { … }
bool GenerateDslDescriptor(const FileDescriptor* file, io::Printer* printer,
std::string* error) { … }
bool GenerateBinaryDescriptor(const FileDescriptor* file, io::Printer* printer,
std::string* error) { … }
bool GenerateFile(const FileDescriptor* file, io::Printer* printer,
std::string* error) { … }
bool Generator::Generate(
const FileDescriptor* file,
const std::string& parameter,
GeneratorContext* generator_context,
std::string* error) const { … }
}
}
}
}