| Index: third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h
|
| diff --git a/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h b/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h
|
| index 86ea9bde281cc047609552f96570258d26fbd953..f196ffc57704b5c690502bb4c9ee693200c5a65f 100644
|
| --- a/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h
|
| +++ b/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h
|
| @@ -1,6 +1,6 @@
|
| // Protocol Buffers - Google's data interchange format
|
| // Copyright 2008 Google Inc. All rights reserved.
|
| -// http://code.google.com/p/protobuf/
|
| +// https://developers.google.com/protocol-buffers/
|
| //
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| @@ -39,6 +39,7 @@
|
| #define GOOGLE_PROTOBUF_COMPILER_COMMAND_LINE_INTERFACE_H__
|
|
|
| #include <google/protobuf/stubs/common.h>
|
| +#include <google/protobuf/stubs/hash.h>
|
| #include <string>
|
| #include <vector>
|
| #include <map>
|
| @@ -48,8 +49,9 @@
|
| namespace google {
|
| namespace protobuf {
|
|
|
| -class FileDescriptor; // descriptor.h
|
| +class Descriptor; // descriptor.h
|
| class DescriptorPool; // descriptor.h
|
| +class FileDescriptor; // descriptor.h
|
| class FileDescriptorProto; // descriptor.pb.h
|
| template<typename T> class RepeatedPtrField; // repeated_field.h
|
|
|
| @@ -189,6 +191,7 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| class ErrorPrinter;
|
| class GeneratorContextImpl;
|
| class MemoryOutputStream;
|
| + typedef hash_map<string, GeneratorContextImpl*> GeneratorContextMap;
|
|
|
| // Clear state from previous Run().
|
| void Clear();
|
| @@ -213,7 +216,7 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| // true if the next argument in the argv should be used as the value,
|
| // false otherwise.
|
| //
|
| - // Exmaples:
|
| + // Examples:
|
| // "-Isrc/protos" ->
|
| // name = "-I", value = "src/protos"
|
| // "--cpp_out=src/foo.pb2.cc" ->
|
| @@ -246,6 +249,12 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| // Implements the --descriptor_set_out option.
|
| bool WriteDescriptorSet(const vector<const FileDescriptor*> parsed_files);
|
|
|
| + // Implements the --dependency_out option
|
| + bool GenerateDependencyManifestFile(
|
| + const vector<const FileDescriptor*>& parsed_files,
|
| + const GeneratorContextMap& output_directories,
|
| + DiskSourceTree* source_tree);
|
| +
|
| // Get all transitive dependencies of the given file (including the file
|
| // itself), adding them to the given list of FileDescriptorProtos. The
|
| // protos will be ordered such that every file is listed before any file that
|
| @@ -253,12 +262,31 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| // in order. Any files in *already_seen will not be added, and each file
|
| // added will be inserted into *already_seen. If include_source_code_info is
|
| // true then include the source code information in the FileDescriptorProtos.
|
| + // If include_json_name is true, populate the json_name field of
|
| + // FieldDescriptorProto for all fields.
|
| static void GetTransitiveDependencies(
|
| const FileDescriptor* file,
|
| + bool include_json_name,
|
| bool include_source_code_info,
|
| set<const FileDescriptor*>* already_seen,
|
| RepeatedPtrField<FileDescriptorProto>* output);
|
|
|
| + // Implements the --print_free_field_numbers. This function prints free field
|
| + // numbers into stdout for the message and it's nested message types in
|
| + // post-order, i.e. nested types first. Printed range are left-right
|
| + // inclusive, i.e. [a, b].
|
| + //
|
| + // Groups:
|
| + // For historical reasons, groups are considered to share the same
|
| + // field number space with the parent message, thus it will not print free
|
| + // field numbers for groups. The field numbers used in the groups are
|
| + // excluded in the free field numbers of the parent message.
|
| + //
|
| + // Extension Ranges:
|
| + // Extension ranges are considered ocuppied field numbers and they will not be
|
| + // listed as free numbers in the output.
|
| + void PrintFreeFieldNumbers(const Descriptor* descriptor);
|
| +
|
| // -----------------------------------------------------------------
|
|
|
| // The name of the executable as invoked (i.e. argv[0]).
|
| @@ -295,11 +323,19 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| enum Mode {
|
| MODE_COMPILE, // Normal mode: parse .proto files and compile them.
|
| MODE_ENCODE, // --encode: read text from stdin, write binary to stdout.
|
| - MODE_DECODE // --decode: read binary from stdin, write text to stdout.
|
| + MODE_DECODE, // --decode: read binary from stdin, write text to stdout.
|
| + MODE_PRINT, // Print mode: print info of the given .proto files and exit.
|
| };
|
|
|
| Mode mode_;
|
|
|
| + enum PrintMode {
|
| + PRINT_NONE, // Not in MODE_PRINT
|
| + PRINT_FREE_FIELDS, // --print_free_fields
|
| + };
|
| +
|
| + PrintMode print_mode_;
|
| +
|
| enum ErrorFormat {
|
| ERROR_FORMAT_GCC, // GCC error output format (default).
|
| ERROR_FORMAT_MSVS // Visual Studio output (--error_format=msvs).
|
| @@ -328,6 +364,10 @@ class LIBPROTOC_EXPORT CommandLineInterface {
|
| // FileDescriptorSet should be written. Otherwise, empty.
|
| string descriptor_set_name_;
|
|
|
| + // If --dependency_out was given, this is the path to the file where the
|
| + // dependency file will be written. Otherwise, empty.
|
| + string dependency_out_name_;
|
| +
|
| // True if --include_imports was given, meaning that we should
|
| // write all transitive dependencies to the DescriptorSet. Otherwise, only
|
| // the .proto files listed on the command-line are added.
|
|
|