From b083470799b4382c315b47dd92a69d5abc7d541c Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Wed, 11 Apr 2018 20:03:10 +0300 Subject: Make this repo only a container for protoc --- nimpb_build.nimble | 4 +- src/nimpb_build.nim | 108 +- src/nimpb_buildpkg/descriptor_pb.nim | 4801 ---------------------------------- src/nimpb_buildpkg/plugin.nim | 1084 -------- 4 files changed, 13 insertions(+), 5984 deletions(-) delete mode 100644 src/nimpb_buildpkg/descriptor_pb.nim delete mode 100644 src/nimpb_buildpkg/plugin.nim diff --git a/nimpb_build.nimble b/nimpb_build.nimble index 9ce9ca9..5808482 100644 --- a/nimpb_build.nimble +++ b/nimpb_build.nimble @@ -2,15 +2,13 @@ version = "0.1.0" author = "Oskari Timperi" -description = "A Protocol Buffers code generator for nimpb" +description = "Protocol Buffers compiler for nimpb" license = "MIT" srcDir = "src" -bin = @["nimpb_build"] # Dependencies requires "nim >= 0.18.0" -requires "nimpb" task fetch, "fetch prebuilt protoc binaries": exec "nim c -d:ssl -r fetch" diff --git a/src/nimpb_build.nim b/src/nimpb_build.nim index f1d4c0d..9a3f018 100644 --- a/src/nimpb_build.nim +++ b/src/nimpb_build.nim @@ -1,13 +1,5 @@ import os -import osproc -import streams import strformat -import strtabs -import strutils - -from nimpb_buildpkg/plugin import processFileDescriptorSet, ServiceGenerator, Service, ServiceMethod - -export Service, ServiceMethod when defined(windows): const compilerId = "win32" @@ -35,14 +27,16 @@ when defined(windows): else: const exeSuffix = "" -proc findCompiler(): string = +let + paths = @[ + # getAppDir() / "src" / "nimpb_buildpkg" / "protobuf", + # getAppDir() / "nimpb_buildpkg" / "protobuf", + parentDir(currentSourcePath()) / "nimpb_buildpkg" / "protobuf", + ] + +proc getCompilerPath*(): string = let compilerName = &"protoc-{compilerId}{exeSuffix}" - paths = @[ - getAppDir() / "src" / "nimpb_buildpkg" / "protobuf", - getAppDir() / "nimpb_buildpkg" / "protobuf", - parentDir(currentSourcePath()) / "nimpb_buildpkg" / "protobuf", - ] for path in paths: if fileExists(path / compilerName): @@ -50,85 +44,7 @@ proc findCompiler(): string = raise newException(Exception, &"{compilerName} not found!") -proc builtinIncludeDir(compilerPath: string): string = - parentDir(compilerPath) / "include" - -template verboseEcho(x: untyped): untyped = - if verbose: - echo(x) - -proc myTempDir(): string = - result = getTempDir() / "nimpb_build_tmp" - -proc compileProtos*(protos: openArray[string], - includes: openArray[string], - outdir: string, - serviceGenerator: ServiceGenerator = nil) = - let command = findCompiler() - var args: seq[string] = @[] - - var outputFilename = myTempDir() / "file-descriptor-set" - createDir(myTempDir()) - - add(args, "--include_imports") - add(args, "--include_source_info") - add(args, &"-o{outputFilename}") - - for incdir in includes: - add(args, &"-I{incdir}") - - add(args, &"-I{builtinIncludeDir(command)}") - - for proto in protos: - add(args, proto) - - var cmdline: string = quoteShell(command) - for arg in args: - cmdline &= " " & quoteShell(arg) - - let (outp, rc) = execCmdEx(cmdline) - - if rc != 0: - raise newException(Exception, outp) - - processFileDescriptorSet(outputFilename, outdir, protos, serviceGenerator) - - -when isMainModule: - proc usage() {.noreturn.} = - echo(&""" - {getAppFilename()} --out=OUTDIR [-IPATH [-IPATH]...] PROTOFILE... - - --out The output directory for the generated files - -I Add a path to the set of include paths - """) - quit(QuitFailure) - - var includes: seq[string] = @[] - var protos: seq[string] = @[] - var outdir: string - - if paramCount() == 0: - usage() - - for idx in 1..paramCount(): - let param = paramStr(idx) - - if param.startsWith("-I"): - add(includes, param[2..^1]) - elif param.startsWith("--out="): - outdir = param[6..^1] - elif param == "--help": - usage() - else: - add(protos, param) - - if outdir == nil: - echo("error: --out is required") - quit(QuitFailure) - - if len(protos) == 0: - echo("error: no input files") - quit(QuitFailure) - - compileProtos(protos, includes, outdir) +proc getProtoIncludeDir*(): string = + for path in paths: + if fileExists(path / "include"): + return path / "include" diff --git a/src/nimpb_buildpkg/descriptor_pb.nim b/src/nimpb_buildpkg/descriptor_pb.nim deleted file mode 100644 index b6ed832..0000000 --- a/src/nimpb_buildpkg/descriptor_pb.nim +++ /dev/null @@ -1,4801 +0,0 @@ -# Generated by protoc_gen_nim. Do not edit! - -import intsets - -import nimpb/nimpb - -type - google_protobuf_FieldDescriptorProto_Type* {.pure.} = enum - TYPE_DOUBLE = 1 - TYPE_FLOAT = 2 - TYPE_INT64 = 3 - TYPE_UINT64 = 4 - TYPE_INT32 = 5 - TYPE_FIXED64 = 6 - TYPE_FIXED32 = 7 - TYPE_BOOL = 8 - TYPE_STRING = 9 - TYPE_GROUP = 10 - TYPE_MESSAGE = 11 - TYPE_BYTES = 12 - TYPE_UINT32 = 13 - TYPE_ENUM = 14 - TYPE_SFIXED32 = 15 - TYPE_SFIXED64 = 16 - TYPE_SINT32 = 17 - TYPE_SINT64 = 18 - google_protobuf_FieldDescriptorProto_Label* {.pure.} = enum - LABEL_OPTIONAL = 1 - LABEL_REQUIRED = 2 - LABEL_REPEATED = 3 - google_protobuf_FileOptions_OptimizeMode* {.pure.} = enum - SPEED = 1 - CODE_SIZE = 2 - LITE_RUNTIME = 3 - google_protobuf_FieldOptions_CType* {.pure.} = enum - STRING = 0 - CORD = 1 - STRING_PIECE = 2 - google_protobuf_FieldOptions_JSType* {.pure.} = enum - JS_NORMAL = 0 - JS_STRING = 1 - JS_NUMBER = 2 - google_protobuf_MethodOptions_IdempotencyLevel* {.pure.} = enum - IDEMPOTENCY_UNKNOWN = 0 - NO_SIDE_EFFECTS = 1 - IDEMPOTENT = 2 - google_protobuf_FileDescriptorSet* = ref google_protobuf_FileDescriptorSetObj - google_protobuf_FileDescriptorSetObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - file: seq[google_protobuf_FileDescriptorProto] - google_protobuf_FileDescriptorProto* = ref google_protobuf_FileDescriptorProtoObj - google_protobuf_FileDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - package: string - dependency: seq[string] - public_dependency: seq[int32] - weak_dependency: seq[int32] - message_type: seq[google_protobuf_DescriptorProto] - enum_type: seq[google_protobuf_EnumDescriptorProto] - service: seq[google_protobuf_ServiceDescriptorProto] - extension: seq[google_protobuf_FieldDescriptorProto] - options: google_protobuf_FileOptions - source_code_info: google_protobuf_SourceCodeInfo - syntax: string - google_protobuf_DescriptorProto* = ref google_protobuf_DescriptorProtoObj - google_protobuf_DescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - field: seq[google_protobuf_FieldDescriptorProto] - extension: seq[google_protobuf_FieldDescriptorProto] - nested_type: seq[google_protobuf_DescriptorProto] - enum_type: seq[google_protobuf_EnumDescriptorProto] - extension_range: seq[google_protobuf_DescriptorProto_ExtensionRange] - oneof_decl: seq[google_protobuf_OneofDescriptorProto] - options: google_protobuf_MessageOptions - reserved_range: seq[google_protobuf_DescriptorProto_ReservedRange] - reserved_name: seq[string] - google_protobuf_DescriptorProto_ReservedRange* = ref google_protobuf_DescriptorProto_ReservedRangeObj - google_protobuf_DescriptorProto_ReservedRangeObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - start: int32 - fend: int32 - google_protobuf_DescriptorProto_ExtensionRange* = ref google_protobuf_DescriptorProto_ExtensionRangeObj - google_protobuf_DescriptorProto_ExtensionRangeObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - start: int32 - fend: int32 - options: google_protobuf_ExtensionRangeOptions - google_protobuf_ExtensionRangeOptions* = ref google_protobuf_ExtensionRangeOptionsObj - google_protobuf_ExtensionRangeOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_FieldDescriptorProto* = ref google_protobuf_FieldDescriptorProtoObj - google_protobuf_FieldDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - number: int32 - label: google_protobuf_FieldDescriptorProto_Label - ftype: google_protobuf_FieldDescriptorProto_Type - type_name: string - extendee: string - default_value: string - oneof_index: int32 - json_name: string - options: google_protobuf_FieldOptions - google_protobuf_OneofDescriptorProto* = ref google_protobuf_OneofDescriptorProtoObj - google_protobuf_OneofDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - options: google_protobuf_OneofOptions - google_protobuf_EnumDescriptorProto* = ref google_protobuf_EnumDescriptorProtoObj - google_protobuf_EnumDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - value: seq[google_protobuf_EnumValueDescriptorProto] - options: google_protobuf_EnumOptions - reserved_range: seq[google_protobuf_EnumDescriptorProto_EnumReservedRange] - reserved_name: seq[string] - google_protobuf_EnumDescriptorProto_EnumReservedRange* = ref google_protobuf_EnumDescriptorProto_EnumReservedRangeObj - google_protobuf_EnumDescriptorProto_EnumReservedRangeObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - start: int32 - fend: int32 - google_protobuf_EnumValueDescriptorProto* = ref google_protobuf_EnumValueDescriptorProtoObj - google_protobuf_EnumValueDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - number: int32 - options: google_protobuf_EnumValueOptions - google_protobuf_ServiceDescriptorProto* = ref google_protobuf_ServiceDescriptorProtoObj - google_protobuf_ServiceDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - fmethod: seq[google_protobuf_MethodDescriptorProto] - options: google_protobuf_ServiceOptions - google_protobuf_MethodDescriptorProto* = ref google_protobuf_MethodDescriptorProtoObj - google_protobuf_MethodDescriptorProtoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: string - input_type: string - output_type: string - options: google_protobuf_MethodOptions - client_streaming: bool - server_streaming: bool - google_protobuf_FileOptions* = ref google_protobuf_FileOptionsObj - google_protobuf_FileOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - java_package: string - java_outer_classname: string - java_multiple_files: bool - java_generate_equals_and_hash: bool - java_string_check_utf8: bool - optimize_for: google_protobuf_FileOptions_OptimizeMode - go_package: string - cc_generic_services: bool - java_generic_services: bool - py_generic_services: bool - php_generic_services: bool - deprecated: bool - cc_enable_arenas: bool - objc_class_prefix: string - csharp_namespace: string - swift_prefix: string - php_class_prefix: string - php_namespace: string - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_MessageOptions* = ref google_protobuf_MessageOptionsObj - google_protobuf_MessageOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - message_set_wire_format: bool - no_standard_descriptor_accessor: bool - deprecated: bool - map_entry: bool - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_FieldOptions* = ref google_protobuf_FieldOptionsObj - google_protobuf_FieldOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - ctype: google_protobuf_FieldOptions_CType - packed: bool - jstype: google_protobuf_FieldOptions_JSType - lazy: bool - deprecated: bool - weak: bool - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_OneofOptions* = ref google_protobuf_OneofOptionsObj - google_protobuf_OneofOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_EnumOptions* = ref google_protobuf_EnumOptionsObj - google_protobuf_EnumOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - allow_alias: bool - deprecated: bool - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_EnumValueOptions* = ref google_protobuf_EnumValueOptionsObj - google_protobuf_EnumValueOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - deprecated: bool - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_ServiceOptions* = ref google_protobuf_ServiceOptionsObj - google_protobuf_ServiceOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - deprecated: bool - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_MethodOptions* = ref google_protobuf_MethodOptionsObj - google_protobuf_MethodOptionsObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - deprecated: bool - idempotency_level: google_protobuf_MethodOptions_IdempotencyLevel - uninterpreted_option: seq[google_protobuf_UninterpretedOption] - google_protobuf_UninterpretedOption* = ref google_protobuf_UninterpretedOptionObj - google_protobuf_UninterpretedOptionObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name: seq[google_protobuf_UninterpretedOption_NamePart] - identifier_value: string - positive_int_value: uint64 - negative_int_value: int64 - double_value: float64 - string_value: bytes - aggregate_value: string - google_protobuf_UninterpretedOption_NamePart* = ref google_protobuf_UninterpretedOption_NamePartObj - google_protobuf_UninterpretedOption_NamePartObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - name_part: string - is_extension: bool - google_protobuf_SourceCodeInfo* = ref google_protobuf_SourceCodeInfoObj - google_protobuf_SourceCodeInfoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - location: seq[google_protobuf_SourceCodeInfo_Location] - google_protobuf_SourceCodeInfo_Location* = ref google_protobuf_SourceCodeInfo_LocationObj - google_protobuf_SourceCodeInfo_LocationObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - path: seq[int32] - span: seq[int32] - leading_comments: string - trailing_comments: string - leading_detached_comments: seq[string] - google_protobuf_GeneratedCodeInfo* = ref google_protobuf_GeneratedCodeInfoObj - google_protobuf_GeneratedCodeInfoObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - annotation: seq[google_protobuf_GeneratedCodeInfo_Annotation] - google_protobuf_GeneratedCodeInfo_Annotation* = ref google_protobuf_GeneratedCodeInfo_AnnotationObj - google_protobuf_GeneratedCodeInfo_AnnotationObj* = object of RootObj - hasField: IntSet - unknownFields: seq[UnknownField] - path: seq[int32] - source_file: string - begin: int32 - fend: int32 - -proc newgoogle_protobuf_UninterpretedOption_NamePart*(): google_protobuf_UninterpretedOption_NamePart -proc newgoogle_protobuf_UninterpretedOption_NamePart*(data: string): google_protobuf_UninterpretedOption_NamePart -proc writegoogle_protobuf_UninterpretedOption_NamePart*(stream: ProtobufStream, message: google_protobuf_UninterpretedOption_NamePart) -proc readgoogle_protobuf_UninterpretedOption_NamePart*(stream: ProtobufStream): google_protobuf_UninterpretedOption_NamePart -proc sizeOfgoogle_protobuf_UninterpretedOption_NamePart*(message: google_protobuf_UninterpretedOption_NamePart): uint64 - -proc newgoogle_protobuf_UninterpretedOption*(): google_protobuf_UninterpretedOption -proc newgoogle_protobuf_UninterpretedOption*(data: string): google_protobuf_UninterpretedOption -proc writegoogle_protobuf_UninterpretedOption*(stream: ProtobufStream, message: google_protobuf_UninterpretedOption) -proc readgoogle_protobuf_UninterpretedOption*(stream: ProtobufStream): google_protobuf_UninterpretedOption -proc sizeOfgoogle_protobuf_UninterpretedOption*(message: google_protobuf_UninterpretedOption): uint64 - -proc newgoogle_protobuf_EnumValueOptions*(): google_protobuf_EnumValueOptions -proc newgoogle_protobuf_EnumValueOptions*(data: string): google_protobuf_EnumValueOptions -proc writegoogle_protobuf_EnumValueOptions*(stream: ProtobufStream, message: google_protobuf_EnumValueOptions) -proc readgoogle_protobuf_EnumValueOptions*(stream: ProtobufStream): google_protobuf_EnumValueOptions -proc sizeOfgoogle_protobuf_EnumValueOptions*(message: google_protobuf_EnumValueOptions): uint64 - -proc newgoogle_protobuf_EnumValueDescriptorProto*(): google_protobuf_EnumValueDescriptorProto -proc newgoogle_protobuf_EnumValueDescriptorProto*(data: string): google_protobuf_EnumValueDescriptorProto -proc writegoogle_protobuf_EnumValueDescriptorProto*(stream: ProtobufStream, message: google_protobuf_EnumValueDescriptorProto) -proc readgoogle_protobuf_EnumValueDescriptorProto*(stream: ProtobufStream): google_protobuf_EnumValueDescriptorProto -proc sizeOfgoogle_protobuf_EnumValueDescriptorProto*(message: google_protobuf_EnumValueDescriptorProto): uint64 - -proc newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(): google_protobuf_EnumDescriptorProto_EnumReservedRange -proc newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(data: string): google_protobuf_EnumDescriptorProto_EnumReservedRange -proc writegoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(stream: ProtobufStream, message: google_protobuf_EnumDescriptorProto_EnumReservedRange) -proc readgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(stream: ProtobufStream): google_protobuf_EnumDescriptorProto_EnumReservedRange -proc sizeOfgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): uint64 - -proc newgoogle_protobuf_EnumOptions*(): google_protobuf_EnumOptions -proc newgoogle_protobuf_EnumOptions*(data: string): google_protobuf_EnumOptions -proc writegoogle_protobuf_EnumOptions*(stream: ProtobufStream, message: google_protobuf_EnumOptions) -proc readgoogle_protobuf_EnumOptions*(stream: ProtobufStream): google_protobuf_EnumOptions -proc sizeOfgoogle_protobuf_EnumOptions*(message: google_protobuf_EnumOptions): uint64 - -proc newgoogle_protobuf_EnumDescriptorProto*(): google_protobuf_EnumDescriptorProto -proc newgoogle_protobuf_EnumDescriptorProto*(data: string): google_protobuf_EnumDescriptorProto -proc writegoogle_protobuf_EnumDescriptorProto*(stream: ProtobufStream, message: google_protobuf_EnumDescriptorProto) -proc readgoogle_protobuf_EnumDescriptorProto*(stream: ProtobufStream): google_protobuf_EnumDescriptorProto -proc sizeOfgoogle_protobuf_EnumDescriptorProto*(message: google_protobuf_EnumDescriptorProto): uint64 - -proc newgoogle_protobuf_ExtensionRangeOptions*(): google_protobuf_ExtensionRangeOptions -proc newgoogle_protobuf_ExtensionRangeOptions*(data: string): google_protobuf_ExtensionRangeOptions -proc writegoogle_protobuf_ExtensionRangeOptions*(stream: ProtobufStream, message: google_protobuf_ExtensionRangeOptions) -proc readgoogle_protobuf_ExtensionRangeOptions*(stream: ProtobufStream): google_protobuf_ExtensionRangeOptions -proc sizeOfgoogle_protobuf_ExtensionRangeOptions*(message: google_protobuf_ExtensionRangeOptions): uint64 - -proc newgoogle_protobuf_SourceCodeInfo_Location*(): google_protobuf_SourceCodeInfo_Location -proc newgoogle_protobuf_SourceCodeInfo_Location*(data: string): google_protobuf_SourceCodeInfo_Location -proc writegoogle_protobuf_SourceCodeInfo_Location*(stream: ProtobufStream, message: google_protobuf_SourceCodeInfo_Location) -proc readgoogle_protobuf_SourceCodeInfo_Location*(stream: ProtobufStream): google_protobuf_SourceCodeInfo_Location -proc sizeOfgoogle_protobuf_SourceCodeInfo_Location*(message: google_protobuf_SourceCodeInfo_Location): uint64 - -proc newgoogle_protobuf_SourceCodeInfo*(): google_protobuf_SourceCodeInfo -proc newgoogle_protobuf_SourceCodeInfo*(data: string): google_protobuf_SourceCodeInfo -proc writegoogle_protobuf_SourceCodeInfo*(stream: ProtobufStream, message: google_protobuf_SourceCodeInfo) -proc readgoogle_protobuf_SourceCodeInfo*(stream: ProtobufStream): google_protobuf_SourceCodeInfo -proc sizeOfgoogle_protobuf_SourceCodeInfo*(message: google_protobuf_SourceCodeInfo): uint64 - -proc newgoogle_protobuf_FieldOptions*(): google_protobuf_FieldOptions -proc newgoogle_protobuf_FieldOptions*(data: string): google_protobuf_FieldOptions -proc writegoogle_protobuf_FieldOptions*(stream: ProtobufStream, message: google_protobuf_FieldOptions) -proc readgoogle_protobuf_FieldOptions*(stream: ProtobufStream): google_protobuf_FieldOptions -proc sizeOfgoogle_protobuf_FieldOptions*(message: google_protobuf_FieldOptions): uint64 - -proc newgoogle_protobuf_FieldDescriptorProto*(): google_protobuf_FieldDescriptorProto -proc newgoogle_protobuf_FieldDescriptorProto*(data: string): google_protobuf_FieldDescriptorProto -proc writegoogle_protobuf_FieldDescriptorProto*(stream: ProtobufStream, message: google_protobuf_FieldDescriptorProto) -proc readgoogle_protobuf_FieldDescriptorProto*(stream: ProtobufStream): google_protobuf_FieldDescriptorProto -proc sizeOfgoogle_protobuf_FieldDescriptorProto*(message: google_protobuf_FieldDescriptorProto): uint64 - -proc newgoogle_protobuf_DescriptorProto_ExtensionRange*(): google_protobuf_DescriptorProto_ExtensionRange -proc newgoogle_protobuf_DescriptorProto_ExtensionRange*(data: string): google_protobuf_DescriptorProto_ExtensionRange -proc writegoogle_protobuf_DescriptorProto_ExtensionRange*(stream: ProtobufStream, message: google_protobuf_DescriptorProto_ExtensionRange) -proc readgoogle_protobuf_DescriptorProto_ExtensionRange*(stream: ProtobufStream): google_protobuf_DescriptorProto_ExtensionRange -proc sizeOfgoogle_protobuf_DescriptorProto_ExtensionRange*(message: google_protobuf_DescriptorProto_ExtensionRange): uint64 - -proc newgoogle_protobuf_MessageOptions*(): google_protobuf_MessageOptions -proc newgoogle_protobuf_MessageOptions*(data: string): google_protobuf_MessageOptions -proc writegoogle_protobuf_MessageOptions*(stream: ProtobufStream, message: google_protobuf_MessageOptions) -proc readgoogle_protobuf_MessageOptions*(stream: ProtobufStream): google_protobuf_MessageOptions -proc sizeOfgoogle_protobuf_MessageOptions*(message: google_protobuf_MessageOptions): uint64 - -proc newgoogle_protobuf_OneofOptions*(): google_protobuf_OneofOptions -proc newgoogle_protobuf_OneofOptions*(data: string): google_protobuf_OneofOptions -proc writegoogle_protobuf_OneofOptions*(stream: ProtobufStream, message: google_protobuf_OneofOptions) -proc readgoogle_protobuf_OneofOptions*(stream: ProtobufStream): google_protobuf_OneofOptions -proc sizeOfgoogle_protobuf_OneofOptions*(message: google_protobuf_OneofOptions): uint64 - -proc newgoogle_protobuf_OneofDescriptorProto*(): google_protobuf_OneofDescriptorProto -proc newgoogle_protobuf_OneofDescriptorProto*(data: string): google_protobuf_OneofDescriptorProto -proc writegoogle_protobuf_OneofDescriptorProto*(stream: ProtobufStream, message: google_protobuf_OneofDescriptorProto) -proc readgoogle_protobuf_OneofDescriptorProto*(stream: ProtobufStream): google_protobuf_OneofDescriptorProto -proc sizeOfgoogle_protobuf_OneofDescriptorProto*(message: google_protobuf_OneofDescriptorProto): uint64 - -proc newgoogle_protobuf_DescriptorProto_ReservedRange*(): google_protobuf_DescriptorProto_ReservedRange -proc newgoogle_protobuf_DescriptorProto_ReservedRange*(data: string): google_protobuf_DescriptorProto_ReservedRange -proc writegoogle_protobuf_DescriptorProto_ReservedRange*(stream: ProtobufStream, message: google_protobuf_DescriptorProto_ReservedRange) -proc readgoogle_protobuf_DescriptorProto_ReservedRange*(stream: ProtobufStream): google_protobuf_DescriptorProto_ReservedRange -proc sizeOfgoogle_protobuf_DescriptorProto_ReservedRange*(message: google_protobuf_DescriptorProto_ReservedRange): uint64 - -proc newgoogle_protobuf_DescriptorProto*(): google_protobuf_DescriptorProto -proc newgoogle_protobuf_DescriptorProto*(data: string): google_protobuf_DescriptorProto -proc writegoogle_protobuf_DescriptorProto*(stream: ProtobufStream, message: google_protobuf_DescriptorProto) -proc readgoogle_protobuf_DescriptorProto*(stream: ProtobufStream): google_protobuf_DescriptorProto -proc sizeOfgoogle_protobuf_DescriptorProto*(message: google_protobuf_DescriptorProto): uint64 - -proc newgoogle_protobuf_FileOptions*(): google_protobuf_FileOptions -proc newgoogle_protobuf_FileOptions*(data: string): google_protobuf_FileOptions -proc writegoogle_protobuf_FileOptions*(stream: ProtobufStream, message: google_protobuf_FileOptions) -proc readgoogle_protobuf_FileOptions*(stream: ProtobufStream): google_protobuf_FileOptions -proc sizeOfgoogle_protobuf_FileOptions*(message: google_protobuf_FileOptions): uint64 - -proc newgoogle_protobuf_ServiceOptions*(): google_protobuf_ServiceOptions -proc newgoogle_protobuf_ServiceOptions*(data: string): google_protobuf_ServiceOptions -proc writegoogle_protobuf_ServiceOptions*(stream: ProtobufStream, message: google_protobuf_ServiceOptions) -proc readgoogle_protobuf_ServiceOptions*(stream: ProtobufStream): google_protobuf_ServiceOptions -proc sizeOfgoogle_protobuf_ServiceOptions*(message: google_protobuf_ServiceOptions): uint64 - -proc newgoogle_protobuf_MethodOptions*(): google_protobuf_MethodOptions -proc newgoogle_protobuf_MethodOptions*(data: string): google_protobuf_MethodOptions -proc writegoogle_protobuf_MethodOptions*(stream: ProtobufStream, message: google_protobuf_MethodOptions) -proc readgoogle_protobuf_MethodOptions*(stream: ProtobufStream): google_protobuf_MethodOptions -proc sizeOfgoogle_protobuf_MethodOptions*(message: google_protobuf_MethodOptions): uint64 - -proc newgoogle_protobuf_MethodDescriptorProto*(): google_protobuf_MethodDescriptorProto -proc newgoogle_protobuf_MethodDescriptorProto*(data: string): google_protobuf_MethodDescriptorProto -proc writegoogle_protobuf_MethodDescriptorProto*(stream: ProtobufStream, message: google_protobuf_MethodDescriptorProto) -proc readgoogle_protobuf_MethodDescriptorProto*(stream: ProtobufStream): google_protobuf_MethodDescriptorProto -proc sizeOfgoogle_protobuf_MethodDescriptorProto*(message: google_protobuf_MethodDescriptorProto): uint64 - -proc newgoogle_protobuf_ServiceDescriptorProto*(): google_protobuf_ServiceDescriptorProto -proc newgoogle_protobuf_ServiceDescriptorProto*(data: string): google_protobuf_ServiceDescriptorProto -proc writegoogle_protobuf_ServiceDescriptorProto*(stream: ProtobufStream, message: google_protobuf_ServiceDescriptorProto) -proc readgoogle_protobuf_ServiceDescriptorProto*(stream: ProtobufStream): google_protobuf_ServiceDescriptorProto -proc sizeOfgoogle_protobuf_ServiceDescriptorProto*(message: google_protobuf_ServiceDescriptorProto): uint64 - -proc newgoogle_protobuf_FileDescriptorProto*(): google_protobuf_FileDescriptorProto -proc newgoogle_protobuf_FileDescriptorProto*(data: string): google_protobuf_FileDescriptorProto -proc writegoogle_protobuf_FileDescriptorProto*(stream: ProtobufStream, message: google_protobuf_FileDescriptorProto) -proc readgoogle_protobuf_FileDescriptorProto*(stream: ProtobufStream): google_protobuf_FileDescriptorProto -proc sizeOfgoogle_protobuf_FileDescriptorProto*(message: google_protobuf_FileDescriptorProto): uint64 - -proc newgoogle_protobuf_FileDescriptorSet*(): google_protobuf_FileDescriptorSet -proc newgoogle_protobuf_FileDescriptorSet*(data: string): google_protobuf_FileDescriptorSet -proc writegoogle_protobuf_FileDescriptorSet*(stream: ProtobufStream, message: google_protobuf_FileDescriptorSet) -proc readgoogle_protobuf_FileDescriptorSet*(stream: ProtobufStream): google_protobuf_FileDescriptorSet -proc sizeOfgoogle_protobuf_FileDescriptorSet*(message: google_protobuf_FileDescriptorSet): uint64 - -proc newgoogle_protobuf_GeneratedCodeInfo_Annotation*(): google_protobuf_GeneratedCodeInfo_Annotation -proc newgoogle_protobuf_GeneratedCodeInfo_Annotation*(data: string): google_protobuf_GeneratedCodeInfo_Annotation -proc writegoogle_protobuf_GeneratedCodeInfo_Annotation*(stream: ProtobufStream, message: google_protobuf_GeneratedCodeInfo_Annotation) -proc readgoogle_protobuf_GeneratedCodeInfo_Annotation*(stream: ProtobufStream): google_protobuf_GeneratedCodeInfo_Annotation -proc sizeOfgoogle_protobuf_GeneratedCodeInfo_Annotation*(message: google_protobuf_GeneratedCodeInfo_Annotation): uint64 - -proc newgoogle_protobuf_GeneratedCodeInfo*(): google_protobuf_GeneratedCodeInfo -proc newgoogle_protobuf_GeneratedCodeInfo*(data: string): google_protobuf_GeneratedCodeInfo -proc writegoogle_protobuf_GeneratedCodeInfo*(stream: ProtobufStream, message: google_protobuf_GeneratedCodeInfo) -proc readgoogle_protobuf_GeneratedCodeInfo*(stream: ProtobufStream): google_protobuf_GeneratedCodeInfo -proc sizeOfgoogle_protobuf_GeneratedCodeInfo*(message: google_protobuf_GeneratedCodeInfo): uint64 - -proc newgoogle_protobuf_UninterpretedOption_NamePart*(): google_protobuf_UninterpretedOption_NamePart = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name_part = "" - result.is_extension = false - -proc clearname_part*(message: google_protobuf_UninterpretedOption_NamePart) = - message.name_part = "" - excl(message.hasField, [1]) - -proc hasname_part*(message: google_protobuf_UninterpretedOption_NamePart): bool = - result = contains(message.hasField, 1) - -proc setname_part*(message: google_protobuf_UninterpretedOption_NamePart, value: string) = - message.name_part = value - incl(message.hasField, 1) - -proc name_part*(message: google_protobuf_UninterpretedOption_NamePart): string {.inline.} = - message.name_part - -proc `name_part=`*(message: google_protobuf_UninterpretedOption_NamePart, value: string) {.inline.} = - setname_part(message, value) - -proc clearis_extension*(message: google_protobuf_UninterpretedOption_NamePart) = - message.is_extension = false - excl(message.hasField, [2]) - -proc hasis_extension*(message: google_protobuf_UninterpretedOption_NamePart): bool = - result = contains(message.hasField, 2) - -proc setis_extension*(message: google_protobuf_UninterpretedOption_NamePart, value: bool) = - message.is_extension = value - incl(message.hasField, 2) - -proc is_extension*(message: google_protobuf_UninterpretedOption_NamePart): bool {.inline.} = - message.is_extension - -proc `is_extension=`*(message: google_protobuf_UninterpretedOption_NamePart, value: bool) {.inline.} = - setis_extension(message, value) - -proc sizeOfgoogle_protobuf_UninterpretedOption_NamePart*(message: google_protobuf_UninterpretedOption_NamePart): uint64 = - if hasname_part(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name_part) - if hasis_extension(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfBool(message.is_extension) - -proc writegoogle_protobuf_UninterpretedOption_NamePart*(stream: ProtobufStream, message: google_protobuf_UninterpretedOption_NamePart) = - if hasname_part(message): - writeString(stream, message.name_part, 1) - if hasis_extension(message): - writeBool(stream, message.is_extension, 2) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_UninterpretedOption_NamePart*(stream: ProtobufStream): google_protobuf_UninterpretedOption_NamePart = - result = newgoogle_protobuf_UninterpretedOption_NamePart() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname_part(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setis_extension(result, readBool(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_UninterpretedOption_NamePart): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_UninterpretedOption_NamePart(pbs, message) - result = ss.data - -proc newgoogle_protobuf_UninterpretedOption_NamePart*(data: string): google_protobuf_UninterpretedOption_NamePart = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_UninterpretedOption_NamePart(pbs) - - -proc newgoogle_protobuf_UninterpretedOption*(): google_protobuf_UninterpretedOption = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = @[] - result.identifier_value = "" - result.positive_int_value = 0 - result.negative_int_value = 0 - result.double_value = 0 - result.string_value = bytes("") - result.aggregate_value = "" - -proc clearname*(message: google_protobuf_UninterpretedOption) = - message.name = @[] - excl(message.hasField, [2]) - -proc hasname*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 2) or (len(message.name) > 0) - -proc setname*(message: google_protobuf_UninterpretedOption, value: seq[google_protobuf_UninterpretedOption_NamePart]) = - message.name = value - incl(message.hasField, 2) - -proc addname*(message: google_protobuf_UninterpretedOption, value: google_protobuf_UninterpretedOption_NamePart) = - add(message.name, value) - incl(message.hasField, 2) - -proc name*(message: google_protobuf_UninterpretedOption): seq[google_protobuf_UninterpretedOption_NamePart] {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_UninterpretedOption, value: seq[google_protobuf_UninterpretedOption_NamePart]) {.inline.} = - setname(message, value) - -proc clearidentifier_value*(message: google_protobuf_UninterpretedOption) = - message.identifier_value = "" - excl(message.hasField, [3]) - -proc hasidentifier_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 3) - -proc setidentifier_value*(message: google_protobuf_UninterpretedOption, value: string) = - message.identifier_value = value - incl(message.hasField, 3) - -proc identifier_value*(message: google_protobuf_UninterpretedOption): string {.inline.} = - message.identifier_value - -proc `identifier_value=`*(message: google_protobuf_UninterpretedOption, value: string) {.inline.} = - setidentifier_value(message, value) - -proc clearpositive_int_value*(message: google_protobuf_UninterpretedOption) = - message.positive_int_value = 0 - excl(message.hasField, [4]) - -proc haspositive_int_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 4) - -proc setpositive_int_value*(message: google_protobuf_UninterpretedOption, value: uint64) = - message.positive_int_value = value - incl(message.hasField, 4) - -proc positive_int_value*(message: google_protobuf_UninterpretedOption): uint64 {.inline.} = - message.positive_int_value - -proc `positive_int_value=`*(message: google_protobuf_UninterpretedOption, value: uint64) {.inline.} = - setpositive_int_value(message, value) - -proc clearnegative_int_value*(message: google_protobuf_UninterpretedOption) = - message.negative_int_value = 0 - excl(message.hasField, [5]) - -proc hasnegative_int_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 5) - -proc setnegative_int_value*(message: google_protobuf_UninterpretedOption, value: int64) = - message.negative_int_value = value - incl(message.hasField, 5) - -proc negative_int_value*(message: google_protobuf_UninterpretedOption): int64 {.inline.} = - message.negative_int_value - -proc `negative_int_value=`*(message: google_protobuf_UninterpretedOption, value: int64) {.inline.} = - setnegative_int_value(message, value) - -proc cleardouble_value*(message: google_protobuf_UninterpretedOption) = - message.double_value = 0 - excl(message.hasField, [6]) - -proc hasdouble_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 6) - -proc setdouble_value*(message: google_protobuf_UninterpretedOption, value: float64) = - message.double_value = value - incl(message.hasField, 6) - -proc double_value*(message: google_protobuf_UninterpretedOption): float64 {.inline.} = - message.double_value - -proc `double_value=`*(message: google_protobuf_UninterpretedOption, value: float64) {.inline.} = - setdouble_value(message, value) - -proc clearstring_value*(message: google_protobuf_UninterpretedOption) = - message.string_value = bytes("") - excl(message.hasField, [7]) - -proc hasstring_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 7) - -proc setstring_value*(message: google_protobuf_UninterpretedOption, value: bytes) = - message.string_value = value - incl(message.hasField, 7) - -proc string_value*(message: google_protobuf_UninterpretedOption): bytes {.inline.} = - message.string_value - -proc `string_value=`*(message: google_protobuf_UninterpretedOption, value: bytes) {.inline.} = - setstring_value(message, value) - -proc clearaggregate_value*(message: google_protobuf_UninterpretedOption) = - message.aggregate_value = "" - excl(message.hasField, [8]) - -proc hasaggregate_value*(message: google_protobuf_UninterpretedOption): bool = - result = contains(message.hasField, 8) - -proc setaggregate_value*(message: google_protobuf_UninterpretedOption, value: string) = - message.aggregate_value = value - incl(message.hasField, 8) - -proc aggregate_value*(message: google_protobuf_UninterpretedOption): string {.inline.} = - message.aggregate_value - -proc `aggregate_value=`*(message: google_protobuf_UninterpretedOption, value: string) {.inline.} = - setaggregate_value(message, value) - -proc sizeOfgoogle_protobuf_UninterpretedOption*(message: google_protobuf_UninterpretedOption): uint64 = - for value in message.name: - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption_NamePart(value)) - if hasidentifier_value(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfString(message.identifier_value) - if haspositive_int_value(message): - result = result + sizeOfTag(4, WireType.Varint) - result = result + sizeOfUInt64(message.positive_int_value) - if hasnegative_int_value(message): - result = result + sizeOfTag(5, WireType.Varint) - result = result + sizeOfInt64(message.negative_int_value) - if hasdouble_value(message): - result = result + sizeOfTag(6, WireType.Fixed64) - result = result + sizeOfDouble(message.double_value) - if hasstring_value(message): - result = result + sizeOfTag(7, WireType.LengthDelimited) - result = result + sizeOfBytes(message.string_value) - if hasaggregate_value(message): - result = result + sizeOfTag(8, WireType.LengthDelimited) - result = result + sizeOfString(message.aggregate_value) - -proc writegoogle_protobuf_UninterpretedOption*(stream: ProtobufStream, message: google_protobuf_UninterpretedOption) = - for value in message.name: - writeMessage(stream, value, 2) - if hasidentifier_value(message): - writeString(stream, message.identifier_value, 3) - if haspositive_int_value(message): - writeUInt64(stream, message.positive_int_value, 4) - if hasnegative_int_value(message): - writeInt64(stream, message.negative_int_value, 5) - if hasdouble_value(message): - writeDouble(stream, message.double_value, 6) - if hasstring_value(message): - writeBytes(stream, message.string_value, 7) - if hasaggregate_value(message): - writeString(stream, message.aggregate_value, 8) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_UninterpretedOption*(stream: ProtobufStream): google_protobuf_UninterpretedOption = - result = newgoogle_protobuf_UninterpretedOption() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 2: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addname(result, newgoogle_protobuf_UninterpretedOption_NamePart(data)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - setidentifier_value(result, readString(stream)) - of 4: - expectWireType(wireType, WireType.Varint) - setpositive_int_value(result, readUInt64(stream)) - of 5: - expectWireType(wireType, WireType.Varint) - setnegative_int_value(result, readInt64(stream)) - of 6: - expectWireType(wireType, WireType.Fixed64) - setdouble_value(result, readDouble(stream)) - of 7: - expectWireType(wireType, WireType.LengthDelimited) - setstring_value(result, readBytes(stream)) - of 8: - expectWireType(wireType, WireType.LengthDelimited) - setaggregate_value(result, readString(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_UninterpretedOption): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_UninterpretedOption(pbs, message) - result = ss.data - -proc newgoogle_protobuf_UninterpretedOption*(data: string): google_protobuf_UninterpretedOption = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_UninterpretedOption(pbs) - - -proc newgoogle_protobuf_EnumValueOptions*(): google_protobuf_EnumValueOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.deprecated = false - result.uninterpreted_option = @[] - -proc cleardeprecated*(message: google_protobuf_EnumValueOptions) = - message.deprecated = false - excl(message.hasField, [1]) - -proc hasdeprecated*(message: google_protobuf_EnumValueOptions): bool = - result = contains(message.hasField, 1) - -proc setdeprecated*(message: google_protobuf_EnumValueOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 1) - -proc deprecated*(message: google_protobuf_EnumValueOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_EnumValueOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_EnumValueOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_EnumValueOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_EnumValueOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_EnumValueOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_EnumValueOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_EnumValueOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_EnumValueOptions*(message: google_protobuf_EnumValueOptions): uint64 = - if hasdeprecated(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_EnumValueOptions*(stream: ProtobufStream, message: google_protobuf_EnumValueOptions) = - if hasdeprecated(message): - writeBool(stream, message.deprecated, 1) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_EnumValueOptions*(stream: ProtobufStream): google_protobuf_EnumValueOptions = - result = newgoogle_protobuf_EnumValueOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_EnumValueOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_EnumValueOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_EnumValueOptions*(data: string): google_protobuf_EnumValueOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_EnumValueOptions(pbs) - - -proc newgoogle_protobuf_EnumValueDescriptorProto*(): google_protobuf_EnumValueDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.number = 0 - result.options = nil - -proc clearname*(message: google_protobuf_EnumValueDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_EnumValueDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_EnumValueDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_EnumValueDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_EnumValueDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearnumber*(message: google_protobuf_EnumValueDescriptorProto) = - message.number = 0 - excl(message.hasField, [2]) - -proc hasnumber*(message: google_protobuf_EnumValueDescriptorProto): bool = - result = contains(message.hasField, 2) - -proc setnumber*(message: google_protobuf_EnumValueDescriptorProto, value: int32) = - message.number = value - incl(message.hasField, 2) - -proc number*(message: google_protobuf_EnumValueDescriptorProto): int32 {.inline.} = - message.number - -proc `number=`*(message: google_protobuf_EnumValueDescriptorProto, value: int32) {.inline.} = - setnumber(message, value) - -proc clearoptions*(message: google_protobuf_EnumValueDescriptorProto) = - message.options = nil - excl(message.hasField, [3]) - -proc hasoptions*(message: google_protobuf_EnumValueDescriptorProto): bool = - result = contains(message.hasField, 3) - -proc setoptions*(message: google_protobuf_EnumValueDescriptorProto, value: google_protobuf_EnumValueOptions) = - message.options = value - incl(message.hasField, 3) - -proc options*(message: google_protobuf_EnumValueDescriptorProto): google_protobuf_EnumValueOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_EnumValueDescriptorProto, value: google_protobuf_EnumValueOptions) {.inline.} = - setoptions(message, value) - -proc sizeOfgoogle_protobuf_EnumValueDescriptorProto*(message: google_protobuf_EnumValueDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - if hasnumber(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfInt32(message.number) - if hasoptions(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumValueOptions(message.options)) - -proc writegoogle_protobuf_EnumValueDescriptorProto*(stream: ProtobufStream, message: google_protobuf_EnumValueDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - if hasnumber(message): - writeInt32(stream, message.number, 2) - if hasoptions(message): - writeMessage(stream, message.options, 3) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_EnumValueDescriptorProto*(stream: ProtobufStream): google_protobuf_EnumValueDescriptorProto = - result = newgoogle_protobuf_EnumValueDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setnumber(result, readInt32(stream)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_EnumValueOptions(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_EnumValueDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_EnumValueDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_EnumValueDescriptorProto*(data: string): google_protobuf_EnumValueDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_EnumValueDescriptorProto(pbs) - - -proc newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(): google_protobuf_EnumDescriptorProto_EnumReservedRange = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.start = 0 - result.fend = 0 - -proc clearstart*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange) = - message.start = 0 - excl(message.hasField, [1]) - -proc hasstart*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): bool = - result = contains(message.hasField, 1) - -proc setstart*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange, value: int32) = - message.start = value - incl(message.hasField, 1) - -proc start*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): int32 {.inline.} = - message.start - -proc `start=`*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange, value: int32) {.inline.} = - setstart(message, value) - -proc clearfend*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange) = - message.fend = 0 - excl(message.hasField, [2]) - -proc hasfend*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): bool = - result = contains(message.hasField, 2) - -proc setfend*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange, value: int32) = - message.fend = value - incl(message.hasField, 2) - -proc fend*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): int32 {.inline.} = - message.fend - -proc `fend=`*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange, value: int32) {.inline.} = - setfend(message, value) - -proc sizeOfgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): uint64 = - if hasstart(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfInt32(message.start) - if hasfend(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfInt32(message.fend) - -proc writegoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(stream: ProtobufStream, message: google_protobuf_EnumDescriptorProto_EnumReservedRange) = - if hasstart(message): - writeInt32(stream, message.start, 1) - if hasfend(message): - writeInt32(stream, message.fend, 2) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(stream: ProtobufStream): google_protobuf_EnumDescriptorProto_EnumReservedRange = - result = newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setstart(result, readInt32(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setfend(result, readInt32(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_EnumDescriptorProto_EnumReservedRange): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_EnumDescriptorProto_EnumReservedRange(pbs, message) - result = ss.data - -proc newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange*(data: string): google_protobuf_EnumDescriptorProto_EnumReservedRange = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_EnumDescriptorProto_EnumReservedRange(pbs) - - -proc newgoogle_protobuf_EnumOptions*(): google_protobuf_EnumOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.allow_alias = false - result.deprecated = false - result.uninterpreted_option = @[] - -proc clearallow_alias*(message: google_protobuf_EnumOptions) = - message.allow_alias = false - excl(message.hasField, [2]) - -proc hasallow_alias*(message: google_protobuf_EnumOptions): bool = - result = contains(message.hasField, 2) - -proc setallow_alias*(message: google_protobuf_EnumOptions, value: bool) = - message.allow_alias = value - incl(message.hasField, 2) - -proc allow_alias*(message: google_protobuf_EnumOptions): bool {.inline.} = - message.allow_alias - -proc `allow_alias=`*(message: google_protobuf_EnumOptions, value: bool) {.inline.} = - setallow_alias(message, value) - -proc cleardeprecated*(message: google_protobuf_EnumOptions) = - message.deprecated = false - excl(message.hasField, [3]) - -proc hasdeprecated*(message: google_protobuf_EnumOptions): bool = - result = contains(message.hasField, 3) - -proc setdeprecated*(message: google_protobuf_EnumOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 3) - -proc deprecated*(message: google_protobuf_EnumOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_EnumOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_EnumOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_EnumOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_EnumOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_EnumOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_EnumOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_EnumOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_EnumOptions*(message: google_protobuf_EnumOptions): uint64 = - if hasallow_alias(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfBool(message.allow_alias) - if hasdeprecated(message): - result = result + sizeOfTag(3, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_EnumOptions*(stream: ProtobufStream, message: google_protobuf_EnumOptions) = - if hasallow_alias(message): - writeBool(stream, message.allow_alias, 2) - if hasdeprecated(message): - writeBool(stream, message.deprecated, 3) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_EnumOptions*(stream: ProtobufStream): google_protobuf_EnumOptions = - result = newgoogle_protobuf_EnumOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 2: - expectWireType(wireType, WireType.Varint) - setallow_alias(result, readBool(stream)) - of 3: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_EnumOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_EnumOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_EnumOptions*(data: string): google_protobuf_EnumOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_EnumOptions(pbs) - - -proc newgoogle_protobuf_EnumDescriptorProto*(): google_protobuf_EnumDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.value = @[] - result.options = nil - result.reserved_range = @[] - result.reserved_name = @[] - -proc clearname*(message: google_protobuf_EnumDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_EnumDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_EnumDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_EnumDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_EnumDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearvalue*(message: google_protobuf_EnumDescriptorProto) = - message.value = @[] - excl(message.hasField, [2]) - -proc hasvalue*(message: google_protobuf_EnumDescriptorProto): bool = - result = contains(message.hasField, 2) or (len(message.value) > 0) - -proc setvalue*(message: google_protobuf_EnumDescriptorProto, value: seq[google_protobuf_EnumValueDescriptorProto]) = - message.value = value - incl(message.hasField, 2) - -proc addvalue*(message: google_protobuf_EnumDescriptorProto, value: google_protobuf_EnumValueDescriptorProto) = - add(message.value, value) - incl(message.hasField, 2) - -proc value*(message: google_protobuf_EnumDescriptorProto): seq[google_protobuf_EnumValueDescriptorProto] {.inline.} = - message.value - -proc `value=`*(message: google_protobuf_EnumDescriptorProto, value: seq[google_protobuf_EnumValueDescriptorProto]) {.inline.} = - setvalue(message, value) - -proc clearoptions*(message: google_protobuf_EnumDescriptorProto) = - message.options = nil - excl(message.hasField, [3]) - -proc hasoptions*(message: google_protobuf_EnumDescriptorProto): bool = - result = contains(message.hasField, 3) - -proc setoptions*(message: google_protobuf_EnumDescriptorProto, value: google_protobuf_EnumOptions) = - message.options = value - incl(message.hasField, 3) - -proc options*(message: google_protobuf_EnumDescriptorProto): google_protobuf_EnumOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_EnumDescriptorProto, value: google_protobuf_EnumOptions) {.inline.} = - setoptions(message, value) - -proc clearreserved_range*(message: google_protobuf_EnumDescriptorProto) = - message.reserved_range = @[] - excl(message.hasField, [4]) - -proc hasreserved_range*(message: google_protobuf_EnumDescriptorProto): bool = - result = contains(message.hasField, 4) or (len(message.reserved_range) > 0) - -proc setreserved_range*(message: google_protobuf_EnumDescriptorProto, value: seq[google_protobuf_EnumDescriptorProto_EnumReservedRange]) = - message.reserved_range = value - incl(message.hasField, 4) - -proc addreserved_range*(message: google_protobuf_EnumDescriptorProto, value: google_protobuf_EnumDescriptorProto_EnumReservedRange) = - add(message.reserved_range, value) - incl(message.hasField, 4) - -proc reserved_range*(message: google_protobuf_EnumDescriptorProto): seq[google_protobuf_EnumDescriptorProto_EnumReservedRange] {.inline.} = - message.reserved_range - -proc `reserved_range=`*(message: google_protobuf_EnumDescriptorProto, value: seq[google_protobuf_EnumDescriptorProto_EnumReservedRange]) {.inline.} = - setreserved_range(message, value) - -proc clearreserved_name*(message: google_protobuf_EnumDescriptorProto) = - message.reserved_name = @[] - excl(message.hasField, [5]) - -proc hasreserved_name*(message: google_protobuf_EnumDescriptorProto): bool = - result = contains(message.hasField, 5) or (len(message.reserved_name) > 0) - -proc setreserved_name*(message: google_protobuf_EnumDescriptorProto, value: seq[string]) = - message.reserved_name = value - incl(message.hasField, 5) - -proc addreserved_name*(message: google_protobuf_EnumDescriptorProto, value: string) = - add(message.reserved_name, value) - incl(message.hasField, 5) - -proc reserved_name*(message: google_protobuf_EnumDescriptorProto): seq[string] {.inline.} = - message.reserved_name - -proc `reserved_name=`*(message: google_protobuf_EnumDescriptorProto, value: seq[string]) {.inline.} = - setreserved_name(message, value) - -proc sizeOfgoogle_protobuf_EnumDescriptorProto*(message: google_protobuf_EnumDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - for value in message.value: - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumValueDescriptorProto(value)) - if hasoptions(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumOptions(message.options)) - for value in message.reserved_range: - result = result + sizeOfTag(4, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumDescriptorProto_EnumReservedRange(value)) - for value in message.reserved_name: - result = result + sizeOfTag(5, WireType.LengthDelimited) - result = result + sizeOfString(value) - -proc writegoogle_protobuf_EnumDescriptorProto*(stream: ProtobufStream, message: google_protobuf_EnumDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - for value in message.value: - writeMessage(stream, value, 2) - if hasoptions(message): - writeMessage(stream, message.options, 3) - for value in message.reserved_range: - writeMessage(stream, value, 4) - for value in message.reserved_name: - writeString(stream, value, 5) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_EnumDescriptorProto*(stream: ProtobufStream): google_protobuf_EnumDescriptorProto = - result = newgoogle_protobuf_EnumDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addvalue(result, newgoogle_protobuf_EnumValueDescriptorProto(data)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_EnumOptions(data)) - of 4: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addreserved_range(result, newgoogle_protobuf_EnumDescriptorProto_EnumReservedRange(data)) - of 5: - expectWireType(wireType, WireType.LengthDelimited) - addreserved_name(result, readString(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_EnumDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_EnumDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_EnumDescriptorProto*(data: string): google_protobuf_EnumDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_EnumDescriptorProto(pbs) - - -proc newgoogle_protobuf_ExtensionRangeOptions*(): google_protobuf_ExtensionRangeOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.uninterpreted_option = @[] - -proc clearuninterpreted_option*(message: google_protobuf_ExtensionRangeOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_ExtensionRangeOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_ExtensionRangeOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_ExtensionRangeOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_ExtensionRangeOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_ExtensionRangeOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_ExtensionRangeOptions*(message: google_protobuf_ExtensionRangeOptions): uint64 = - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_ExtensionRangeOptions*(stream: ProtobufStream, message: google_protobuf_ExtensionRangeOptions) = - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_ExtensionRangeOptions*(stream: ProtobufStream): google_protobuf_ExtensionRangeOptions = - result = newgoogle_protobuf_ExtensionRangeOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_ExtensionRangeOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_ExtensionRangeOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_ExtensionRangeOptions*(data: string): google_protobuf_ExtensionRangeOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_ExtensionRangeOptions(pbs) - - -proc newgoogle_protobuf_SourceCodeInfo_Location*(): google_protobuf_SourceCodeInfo_Location = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.path = @[] - result.span = @[] - result.leading_comments = "" - result.trailing_comments = "" - result.leading_detached_comments = @[] - -proc clearpath*(message: google_protobuf_SourceCodeInfo_Location) = - message.path = @[] - excl(message.hasField, [1]) - -proc haspath*(message: google_protobuf_SourceCodeInfo_Location): bool = - result = contains(message.hasField, 1) or (len(message.path) > 0) - -proc setpath*(message: google_protobuf_SourceCodeInfo_Location, value: seq[int32]) = - message.path = value - incl(message.hasField, 1) - -proc addpath*(message: google_protobuf_SourceCodeInfo_Location, value: int32) = - add(message.path, value) - incl(message.hasField, 1) - -proc path*(message: google_protobuf_SourceCodeInfo_Location): seq[int32] {.inline.} = - message.path - -proc `path=`*(message: google_protobuf_SourceCodeInfo_Location, value: seq[int32]) {.inline.} = - setpath(message, value) - -proc clearspan*(message: google_protobuf_SourceCodeInfo_Location) = - message.span = @[] - excl(message.hasField, [2]) - -proc hasspan*(message: google_protobuf_SourceCodeInfo_Location): bool = - result = contains(message.hasField, 2) or (len(message.span) > 0) - -proc setspan*(message: google_protobuf_SourceCodeInfo_Location, value: seq[int32]) = - message.span = value - incl(message.hasField, 2) - -proc addspan*(message: google_protobuf_SourceCodeInfo_Location, value: int32) = - add(message.span, value) - incl(message.hasField, 2) - -proc span*(message: google_protobuf_SourceCodeInfo_Location): seq[int32] {.inline.} = - message.span - -proc `span=`*(message: google_protobuf_SourceCodeInfo_Location, value: seq[int32]) {.inline.} = - setspan(message, value) - -proc clearleading_comments*(message: google_protobuf_SourceCodeInfo_Location) = - message.leading_comments = "" - excl(message.hasField, [3]) - -proc hasleading_comments*(message: google_protobuf_SourceCodeInfo_Location): bool = - result = contains(message.hasField, 3) - -proc setleading_comments*(message: google_protobuf_SourceCodeInfo_Location, value: string) = - message.leading_comments = value - incl(message.hasField, 3) - -proc leading_comments*(message: google_protobuf_SourceCodeInfo_Location): string {.inline.} = - message.leading_comments - -proc `leading_comments=`*(message: google_protobuf_SourceCodeInfo_Location, value: string) {.inline.} = - setleading_comments(message, value) - -proc cleartrailing_comments*(message: google_protobuf_SourceCodeInfo_Location) = - message.trailing_comments = "" - excl(message.hasField, [4]) - -proc hastrailing_comments*(message: google_protobuf_SourceCodeInfo_Location): bool = - result = contains(message.hasField, 4) - -proc settrailing_comments*(message: google_protobuf_SourceCodeInfo_Location, value: string) = - message.trailing_comments = value - incl(message.hasField, 4) - -proc trailing_comments*(message: google_protobuf_SourceCodeInfo_Location): string {.inline.} = - message.trailing_comments - -proc `trailing_comments=`*(message: google_protobuf_SourceCodeInfo_Location, value: string) {.inline.} = - settrailing_comments(message, value) - -proc clearleading_detached_comments*(message: google_protobuf_SourceCodeInfo_Location) = - message.leading_detached_comments = @[] - excl(message.hasField, [6]) - -proc hasleading_detached_comments*(message: google_protobuf_SourceCodeInfo_Location): bool = - result = contains(message.hasField, 6) or (len(message.leading_detached_comments) > 0) - -proc setleading_detached_comments*(message: google_protobuf_SourceCodeInfo_Location, value: seq[string]) = - message.leading_detached_comments = value - incl(message.hasField, 6) - -proc addleading_detached_comments*(message: google_protobuf_SourceCodeInfo_Location, value: string) = - add(message.leading_detached_comments, value) - incl(message.hasField, 6) - -proc leading_detached_comments*(message: google_protobuf_SourceCodeInfo_Location): seq[string] {.inline.} = - message.leading_detached_comments - -proc `leading_detached_comments=`*(message: google_protobuf_SourceCodeInfo_Location, value: seq[string]) {.inline.} = - setleading_detached_comments(message, value) - -proc sizeOfgoogle_protobuf_SourceCodeInfo_Location*(message: google_protobuf_SourceCodeInfo_Location): uint64 = - if haspath(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(packedFieldSize(message.path, FieldType.Int32)) - if hasspan(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(packedFieldSize(message.span, FieldType.Int32)) - if hasleading_comments(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfString(message.leading_comments) - if hastrailing_comments(message): - result = result + sizeOfTag(4, WireType.LengthDelimited) - result = result + sizeOfString(message.trailing_comments) - for value in message.leading_detached_comments: - result = result + sizeOfTag(6, WireType.LengthDelimited) - result = result + sizeOfString(value) - -proc writegoogle_protobuf_SourceCodeInfo_Location*(stream: ProtobufStream, message: google_protobuf_SourceCodeInfo_Location) = - if haspath(message): - writeTag(stream, 1, WireType.LengthDelimited) - writeVarint(stream, packedFieldSize(message.path, FieldType.Int32)) - for value in message.path: - writeInt32(stream, value) - if hasspan(message): - writeTag(stream, 2, WireType.LengthDelimited) - writeVarint(stream, packedFieldSize(message.span, FieldType.Int32)) - for value in message.span: - writeInt32(stream, value) - if hasleading_comments(message): - writeString(stream, message.leading_comments, 3) - if hastrailing_comments(message): - writeString(stream, message.trailing_comments, 4) - for value in message.leading_detached_comments: - writeString(stream, value, 6) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_SourceCodeInfo_Location*(stream: ProtobufStream): google_protobuf_SourceCodeInfo_Location = - result = newgoogle_protobuf_SourceCodeInfo_Location() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint, WireType.LengthDelimited) - if wireType == WireType.LengthDelimited: - let - size = readVarint(stream) - start = uint64(getPosition(stream)) - var consumed = 0'u64 - while consumed < size: - addpath(result, readInt32(stream)) - consumed = uint64(getPosition(stream)) - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - addpath(result, readInt32(stream)) - of 2: - expectWireType(wireType, WireType.Varint, WireType.LengthDelimited) - if wireType == WireType.LengthDelimited: - let - size = readVarint(stream) - start = uint64(getPosition(stream)) - var consumed = 0'u64 - while consumed < size: - addspan(result, readInt32(stream)) - consumed = uint64(getPosition(stream)) - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - addspan(result, readInt32(stream)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - setleading_comments(result, readString(stream)) - of 4: - expectWireType(wireType, WireType.LengthDelimited) - settrailing_comments(result, readString(stream)) - of 6: - expectWireType(wireType, WireType.LengthDelimited) - addleading_detached_comments(result, readString(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_SourceCodeInfo_Location): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_SourceCodeInfo_Location(pbs, message) - result = ss.data - -proc newgoogle_protobuf_SourceCodeInfo_Location*(data: string): google_protobuf_SourceCodeInfo_Location = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_SourceCodeInfo_Location(pbs) - - -proc newgoogle_protobuf_SourceCodeInfo*(): google_protobuf_SourceCodeInfo = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.location = @[] - -proc clearlocation*(message: google_protobuf_SourceCodeInfo) = - message.location = @[] - excl(message.hasField, [1]) - -proc haslocation*(message: google_protobuf_SourceCodeInfo): bool = - result = contains(message.hasField, 1) or (len(message.location) > 0) - -proc setlocation*(message: google_protobuf_SourceCodeInfo, value: seq[google_protobuf_SourceCodeInfo_Location]) = - message.location = value - incl(message.hasField, 1) - -proc addlocation*(message: google_protobuf_SourceCodeInfo, value: google_protobuf_SourceCodeInfo_Location) = - add(message.location, value) - incl(message.hasField, 1) - -proc location*(message: google_protobuf_SourceCodeInfo): seq[google_protobuf_SourceCodeInfo_Location] {.inline.} = - message.location - -proc `location=`*(message: google_protobuf_SourceCodeInfo, value: seq[google_protobuf_SourceCodeInfo_Location]) {.inline.} = - setlocation(message, value) - -proc sizeOfgoogle_protobuf_SourceCodeInfo*(message: google_protobuf_SourceCodeInfo): uint64 = - for value in message.location: - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_SourceCodeInfo_Location(value)) - -proc writegoogle_protobuf_SourceCodeInfo*(stream: ProtobufStream, message: google_protobuf_SourceCodeInfo) = - for value in message.location: - writeMessage(stream, value, 1) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_SourceCodeInfo*(stream: ProtobufStream): google_protobuf_SourceCodeInfo = - result = newgoogle_protobuf_SourceCodeInfo() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addlocation(result, newgoogle_protobuf_SourceCodeInfo_Location(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_SourceCodeInfo): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_SourceCodeInfo(pbs, message) - result = ss.data - -proc newgoogle_protobuf_SourceCodeInfo*(data: string): google_protobuf_SourceCodeInfo = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_SourceCodeInfo(pbs) - - -proc newgoogle_protobuf_FieldOptions*(): google_protobuf_FieldOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.ctype = google_protobuf_FieldOptions_CType.STRING - result.packed = false - result.jstype = google_protobuf_FieldOptions_JSType.JS_NORMAL - result.lazy = false - result.deprecated = false - result.weak = false - result.uninterpreted_option = @[] - -proc clearctype*(message: google_protobuf_FieldOptions) = - message.ctype = google_protobuf_FieldOptions_CType.STRING - excl(message.hasField, [1]) - -proc hasctype*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 1) - -proc setctype*(message: google_protobuf_FieldOptions, value: google_protobuf_FieldOptions_CType) = - message.ctype = value - incl(message.hasField, 1) - -proc ctype*(message: google_protobuf_FieldOptions): google_protobuf_FieldOptions_CType {.inline.} = - message.ctype - -proc `ctype=`*(message: google_protobuf_FieldOptions, value: google_protobuf_FieldOptions_CType) {.inline.} = - setctype(message, value) - -proc clearpacked*(message: google_protobuf_FieldOptions) = - message.packed = false - excl(message.hasField, [2]) - -proc haspacked*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 2) - -proc setpacked*(message: google_protobuf_FieldOptions, value: bool) = - message.packed = value - incl(message.hasField, 2) - -proc packed*(message: google_protobuf_FieldOptions): bool {.inline.} = - message.packed - -proc `packed=`*(message: google_protobuf_FieldOptions, value: bool) {.inline.} = - setpacked(message, value) - -proc clearjstype*(message: google_protobuf_FieldOptions) = - message.jstype = google_protobuf_FieldOptions_JSType.JS_NORMAL - excl(message.hasField, [6]) - -proc hasjstype*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 6) - -proc setjstype*(message: google_protobuf_FieldOptions, value: google_protobuf_FieldOptions_JSType) = - message.jstype = value - incl(message.hasField, 6) - -proc jstype*(message: google_protobuf_FieldOptions): google_protobuf_FieldOptions_JSType {.inline.} = - message.jstype - -proc `jstype=`*(message: google_protobuf_FieldOptions, value: google_protobuf_FieldOptions_JSType) {.inline.} = - setjstype(message, value) - -proc clearlazy*(message: google_protobuf_FieldOptions) = - message.lazy = false - excl(message.hasField, [5]) - -proc haslazy*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 5) - -proc setlazy*(message: google_protobuf_FieldOptions, value: bool) = - message.lazy = value - incl(message.hasField, 5) - -proc lazy*(message: google_protobuf_FieldOptions): bool {.inline.} = - message.lazy - -proc `lazy=`*(message: google_protobuf_FieldOptions, value: bool) {.inline.} = - setlazy(message, value) - -proc cleardeprecated*(message: google_protobuf_FieldOptions) = - message.deprecated = false - excl(message.hasField, [3]) - -proc hasdeprecated*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 3) - -proc setdeprecated*(message: google_protobuf_FieldOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 3) - -proc deprecated*(message: google_protobuf_FieldOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_FieldOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearweak*(message: google_protobuf_FieldOptions) = - message.weak = false - excl(message.hasField, [10]) - -proc hasweak*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 10) - -proc setweak*(message: google_protobuf_FieldOptions, value: bool) = - message.weak = value - incl(message.hasField, 10) - -proc weak*(message: google_protobuf_FieldOptions): bool {.inline.} = - message.weak - -proc `weak=`*(message: google_protobuf_FieldOptions, value: bool) {.inline.} = - setweak(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_FieldOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_FieldOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_FieldOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_FieldOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_FieldOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_FieldOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_FieldOptions*(message: google_protobuf_FieldOptions): uint64 = - if hasctype(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_FieldOptions_CType](message.ctype) - if haspacked(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfBool(message.packed) - if hasjstype(message): - result = result + sizeOfTag(6, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_FieldOptions_JSType](message.jstype) - if haslazy(message): - result = result + sizeOfTag(5, WireType.Varint) - result = result + sizeOfBool(message.lazy) - if hasdeprecated(message): - result = result + sizeOfTag(3, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - if hasweak(message): - result = result + sizeOfTag(10, WireType.Varint) - result = result + sizeOfBool(message.weak) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_FieldOptions*(stream: ProtobufStream, message: google_protobuf_FieldOptions) = - if hasctype(message): - writeEnum(stream, message.ctype, 1) - if haspacked(message): - writeBool(stream, message.packed, 2) - if hasjstype(message): - writeEnum(stream, message.jstype, 6) - if haslazy(message): - writeBool(stream, message.lazy, 5) - if hasdeprecated(message): - writeBool(stream, message.deprecated, 3) - if hasweak(message): - writeBool(stream, message.weak, 10) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_FieldOptions*(stream: ProtobufStream): google_protobuf_FieldOptions = - result = newgoogle_protobuf_FieldOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setctype(result, readEnum[google_protobuf_FieldOptions_CType](stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setpacked(result, readBool(stream)) - of 6: - expectWireType(wireType, WireType.Varint) - setjstype(result, readEnum[google_protobuf_FieldOptions_JSType](stream)) - of 5: - expectWireType(wireType, WireType.Varint) - setlazy(result, readBool(stream)) - of 3: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 10: - expectWireType(wireType, WireType.Varint) - setweak(result, readBool(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_FieldOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_FieldOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_FieldOptions*(data: string): google_protobuf_FieldOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_FieldOptions(pbs) - - -proc newgoogle_protobuf_FieldDescriptorProto*(): google_protobuf_FieldDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.number = 0 - result.label = google_protobuf_FieldDescriptorProto_Label.LABEL_OPTIONAL - result.ftype = google_protobuf_FieldDescriptorProto_Type.TYPE_DOUBLE - result.type_name = "" - result.extendee = "" - result.default_value = "" - result.oneof_index = 0 - result.json_name = "" - result.options = nil - -proc clearname*(message: google_protobuf_FieldDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_FieldDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_FieldDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_FieldDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearnumber*(message: google_protobuf_FieldDescriptorProto) = - message.number = 0 - excl(message.hasField, [3]) - -proc hasnumber*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 3) - -proc setnumber*(message: google_protobuf_FieldDescriptorProto, value: int32) = - message.number = value - incl(message.hasField, 3) - -proc number*(message: google_protobuf_FieldDescriptorProto): int32 {.inline.} = - message.number - -proc `number=`*(message: google_protobuf_FieldDescriptorProto, value: int32) {.inline.} = - setnumber(message, value) - -proc clearlabel*(message: google_protobuf_FieldDescriptorProto) = - message.label = google_protobuf_FieldDescriptorProto_Label.LABEL_OPTIONAL - excl(message.hasField, [4]) - -proc haslabel*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 4) - -proc setlabel*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldDescriptorProto_Label) = - message.label = value - incl(message.hasField, 4) - -proc label*(message: google_protobuf_FieldDescriptorProto): google_protobuf_FieldDescriptorProto_Label {.inline.} = - message.label - -proc `label=`*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldDescriptorProto_Label) {.inline.} = - setlabel(message, value) - -proc clearftype*(message: google_protobuf_FieldDescriptorProto) = - message.ftype = google_protobuf_FieldDescriptorProto_Type.TYPE_DOUBLE - excl(message.hasField, [5]) - -proc hasftype*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 5) - -proc setftype*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldDescriptorProto_Type) = - message.ftype = value - incl(message.hasField, 5) - -proc ftype*(message: google_protobuf_FieldDescriptorProto): google_protobuf_FieldDescriptorProto_Type {.inline.} = - message.ftype - -proc `ftype=`*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldDescriptorProto_Type) {.inline.} = - setftype(message, value) - -proc cleartype_name*(message: google_protobuf_FieldDescriptorProto) = - message.type_name = "" - excl(message.hasField, [6]) - -proc hastype_name*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 6) - -proc settype_name*(message: google_protobuf_FieldDescriptorProto, value: string) = - message.type_name = value - incl(message.hasField, 6) - -proc type_name*(message: google_protobuf_FieldDescriptorProto): string {.inline.} = - message.type_name - -proc `type_name=`*(message: google_protobuf_FieldDescriptorProto, value: string) {.inline.} = - settype_name(message, value) - -proc clearextendee*(message: google_protobuf_FieldDescriptorProto) = - message.extendee = "" - excl(message.hasField, [2]) - -proc hasextendee*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 2) - -proc setextendee*(message: google_protobuf_FieldDescriptorProto, value: string) = - message.extendee = value - incl(message.hasField, 2) - -proc extendee*(message: google_protobuf_FieldDescriptorProto): string {.inline.} = - message.extendee - -proc `extendee=`*(message: google_protobuf_FieldDescriptorProto, value: string) {.inline.} = - setextendee(message, value) - -proc cleardefault_value*(message: google_protobuf_FieldDescriptorProto) = - message.default_value = "" - excl(message.hasField, [7]) - -proc hasdefault_value*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 7) - -proc setdefault_value*(message: google_protobuf_FieldDescriptorProto, value: string) = - message.default_value = value - incl(message.hasField, 7) - -proc default_value*(message: google_protobuf_FieldDescriptorProto): string {.inline.} = - message.default_value - -proc `default_value=`*(message: google_protobuf_FieldDescriptorProto, value: string) {.inline.} = - setdefault_value(message, value) - -proc clearoneof_index*(message: google_protobuf_FieldDescriptorProto) = - message.oneof_index = 0 - excl(message.hasField, [9]) - -proc hasoneof_index*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 9) - -proc setoneof_index*(message: google_protobuf_FieldDescriptorProto, value: int32) = - message.oneof_index = value - incl(message.hasField, 9) - -proc oneof_index*(message: google_protobuf_FieldDescriptorProto): int32 {.inline.} = - message.oneof_index - -proc `oneof_index=`*(message: google_protobuf_FieldDescriptorProto, value: int32) {.inline.} = - setoneof_index(message, value) - -proc clearjson_name*(message: google_protobuf_FieldDescriptorProto) = - message.json_name = "" - excl(message.hasField, [10]) - -proc hasjson_name*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 10) - -proc setjson_name*(message: google_protobuf_FieldDescriptorProto, value: string) = - message.json_name = value - incl(message.hasField, 10) - -proc json_name*(message: google_protobuf_FieldDescriptorProto): string {.inline.} = - message.json_name - -proc `json_name=`*(message: google_protobuf_FieldDescriptorProto, value: string) {.inline.} = - setjson_name(message, value) - -proc clearoptions*(message: google_protobuf_FieldDescriptorProto) = - message.options = nil - excl(message.hasField, [8]) - -proc hasoptions*(message: google_protobuf_FieldDescriptorProto): bool = - result = contains(message.hasField, 8) - -proc setoptions*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldOptions) = - message.options = value - incl(message.hasField, 8) - -proc options*(message: google_protobuf_FieldDescriptorProto): google_protobuf_FieldOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_FieldDescriptorProto, value: google_protobuf_FieldOptions) {.inline.} = - setoptions(message, value) - -proc sizeOfgoogle_protobuf_FieldDescriptorProto*(message: google_protobuf_FieldDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - if hasnumber(message): - result = result + sizeOfTag(3, WireType.Varint) - result = result + sizeOfInt32(message.number) - if haslabel(message): - result = result + sizeOfTag(4, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_FieldDescriptorProto_Label](message.label) - if hasftype(message): - result = result + sizeOfTag(5, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_FieldDescriptorProto_Type](message.ftype) - if hastype_name(message): - result = result + sizeOfTag(6, WireType.LengthDelimited) - result = result + sizeOfString(message.type_name) - if hasextendee(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfString(message.extendee) - if hasdefault_value(message): - result = result + sizeOfTag(7, WireType.LengthDelimited) - result = result + sizeOfString(message.default_value) - if hasoneof_index(message): - result = result + sizeOfTag(9, WireType.Varint) - result = result + sizeOfInt32(message.oneof_index) - if hasjson_name(message): - result = result + sizeOfTag(10, WireType.LengthDelimited) - result = result + sizeOfString(message.json_name) - if hasoptions(message): - result = result + sizeOfTag(8, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FieldOptions(message.options)) - -proc writegoogle_protobuf_FieldDescriptorProto*(stream: ProtobufStream, message: google_protobuf_FieldDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - if hasnumber(message): - writeInt32(stream, message.number, 3) - if haslabel(message): - writeEnum(stream, message.label, 4) - if hasftype(message): - writeEnum(stream, message.ftype, 5) - if hastype_name(message): - writeString(stream, message.type_name, 6) - if hasextendee(message): - writeString(stream, message.extendee, 2) - if hasdefault_value(message): - writeString(stream, message.default_value, 7) - if hasoneof_index(message): - writeInt32(stream, message.oneof_index, 9) - if hasjson_name(message): - writeString(stream, message.json_name, 10) - if hasoptions(message): - writeMessage(stream, message.options, 8) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_FieldDescriptorProto*(stream: ProtobufStream): google_protobuf_FieldDescriptorProto = - result = newgoogle_protobuf_FieldDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 3: - expectWireType(wireType, WireType.Varint) - setnumber(result, readInt32(stream)) - of 4: - expectWireType(wireType, WireType.Varint) - setlabel(result, readEnum[google_protobuf_FieldDescriptorProto_Label](stream)) - of 5: - expectWireType(wireType, WireType.Varint) - setftype(result, readEnum[google_protobuf_FieldDescriptorProto_Type](stream)) - of 6: - expectWireType(wireType, WireType.LengthDelimited) - settype_name(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - setextendee(result, readString(stream)) - of 7: - expectWireType(wireType, WireType.LengthDelimited) - setdefault_value(result, readString(stream)) - of 9: - expectWireType(wireType, WireType.Varint) - setoneof_index(result, readInt32(stream)) - of 10: - expectWireType(wireType, WireType.LengthDelimited) - setjson_name(result, readString(stream)) - of 8: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_FieldOptions(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_FieldDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_FieldDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_FieldDescriptorProto*(data: string): google_protobuf_FieldDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_FieldDescriptorProto(pbs) - - -proc newgoogle_protobuf_DescriptorProto_ExtensionRange*(): google_protobuf_DescriptorProto_ExtensionRange = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.start = 0 - result.fend = 0 - result.options = nil - -proc clearstart*(message: google_protobuf_DescriptorProto_ExtensionRange) = - message.start = 0 - excl(message.hasField, [1]) - -proc hasstart*(message: google_protobuf_DescriptorProto_ExtensionRange): bool = - result = contains(message.hasField, 1) - -proc setstart*(message: google_protobuf_DescriptorProto_ExtensionRange, value: int32) = - message.start = value - incl(message.hasField, 1) - -proc start*(message: google_protobuf_DescriptorProto_ExtensionRange): int32 {.inline.} = - message.start - -proc `start=`*(message: google_protobuf_DescriptorProto_ExtensionRange, value: int32) {.inline.} = - setstart(message, value) - -proc clearfend*(message: google_protobuf_DescriptorProto_ExtensionRange) = - message.fend = 0 - excl(message.hasField, [2]) - -proc hasfend*(message: google_protobuf_DescriptorProto_ExtensionRange): bool = - result = contains(message.hasField, 2) - -proc setfend*(message: google_protobuf_DescriptorProto_ExtensionRange, value: int32) = - message.fend = value - incl(message.hasField, 2) - -proc fend*(message: google_protobuf_DescriptorProto_ExtensionRange): int32 {.inline.} = - message.fend - -proc `fend=`*(message: google_protobuf_DescriptorProto_ExtensionRange, value: int32) {.inline.} = - setfend(message, value) - -proc clearoptions*(message: google_protobuf_DescriptorProto_ExtensionRange) = - message.options = nil - excl(message.hasField, [3]) - -proc hasoptions*(message: google_protobuf_DescriptorProto_ExtensionRange): bool = - result = contains(message.hasField, 3) - -proc setoptions*(message: google_protobuf_DescriptorProto_ExtensionRange, value: google_protobuf_ExtensionRangeOptions) = - message.options = value - incl(message.hasField, 3) - -proc options*(message: google_protobuf_DescriptorProto_ExtensionRange): google_protobuf_ExtensionRangeOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_DescriptorProto_ExtensionRange, value: google_protobuf_ExtensionRangeOptions) {.inline.} = - setoptions(message, value) - -proc sizeOfgoogle_protobuf_DescriptorProto_ExtensionRange*(message: google_protobuf_DescriptorProto_ExtensionRange): uint64 = - if hasstart(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfInt32(message.start) - if hasfend(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfInt32(message.fend) - if hasoptions(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_ExtensionRangeOptions(message.options)) - -proc writegoogle_protobuf_DescriptorProto_ExtensionRange*(stream: ProtobufStream, message: google_protobuf_DescriptorProto_ExtensionRange) = - if hasstart(message): - writeInt32(stream, message.start, 1) - if hasfend(message): - writeInt32(stream, message.fend, 2) - if hasoptions(message): - writeMessage(stream, message.options, 3) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_DescriptorProto_ExtensionRange*(stream: ProtobufStream): google_protobuf_DescriptorProto_ExtensionRange = - result = newgoogle_protobuf_DescriptorProto_ExtensionRange() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setstart(result, readInt32(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setfend(result, readInt32(stream)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_ExtensionRangeOptions(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_DescriptorProto_ExtensionRange): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_DescriptorProto_ExtensionRange(pbs, message) - result = ss.data - -proc newgoogle_protobuf_DescriptorProto_ExtensionRange*(data: string): google_protobuf_DescriptorProto_ExtensionRange = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_DescriptorProto_ExtensionRange(pbs) - - -proc newgoogle_protobuf_MessageOptions*(): google_protobuf_MessageOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.message_set_wire_format = false - result.no_standard_descriptor_accessor = false - result.deprecated = false - result.map_entry = false - result.uninterpreted_option = @[] - -proc clearmessage_set_wire_format*(message: google_protobuf_MessageOptions) = - message.message_set_wire_format = false - excl(message.hasField, [1]) - -proc hasmessage_set_wire_format*(message: google_protobuf_MessageOptions): bool = - result = contains(message.hasField, 1) - -proc setmessage_set_wire_format*(message: google_protobuf_MessageOptions, value: bool) = - message.message_set_wire_format = value - incl(message.hasField, 1) - -proc message_set_wire_format*(message: google_protobuf_MessageOptions): bool {.inline.} = - message.message_set_wire_format - -proc `message_set_wire_format=`*(message: google_protobuf_MessageOptions, value: bool) {.inline.} = - setmessage_set_wire_format(message, value) - -proc clearno_standard_descriptor_accessor*(message: google_protobuf_MessageOptions) = - message.no_standard_descriptor_accessor = false - excl(message.hasField, [2]) - -proc hasno_standard_descriptor_accessor*(message: google_protobuf_MessageOptions): bool = - result = contains(message.hasField, 2) - -proc setno_standard_descriptor_accessor*(message: google_protobuf_MessageOptions, value: bool) = - message.no_standard_descriptor_accessor = value - incl(message.hasField, 2) - -proc no_standard_descriptor_accessor*(message: google_protobuf_MessageOptions): bool {.inline.} = - message.no_standard_descriptor_accessor - -proc `no_standard_descriptor_accessor=`*(message: google_protobuf_MessageOptions, value: bool) {.inline.} = - setno_standard_descriptor_accessor(message, value) - -proc cleardeprecated*(message: google_protobuf_MessageOptions) = - message.deprecated = false - excl(message.hasField, [3]) - -proc hasdeprecated*(message: google_protobuf_MessageOptions): bool = - result = contains(message.hasField, 3) - -proc setdeprecated*(message: google_protobuf_MessageOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 3) - -proc deprecated*(message: google_protobuf_MessageOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_MessageOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearmap_entry*(message: google_protobuf_MessageOptions) = - message.map_entry = false - excl(message.hasField, [7]) - -proc hasmap_entry*(message: google_protobuf_MessageOptions): bool = - result = contains(message.hasField, 7) - -proc setmap_entry*(message: google_protobuf_MessageOptions, value: bool) = - message.map_entry = value - incl(message.hasField, 7) - -proc map_entry*(message: google_protobuf_MessageOptions): bool {.inline.} = - message.map_entry - -proc `map_entry=`*(message: google_protobuf_MessageOptions, value: bool) {.inline.} = - setmap_entry(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_MessageOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_MessageOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_MessageOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_MessageOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_MessageOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_MessageOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_MessageOptions*(message: google_protobuf_MessageOptions): uint64 = - if hasmessage_set_wire_format(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfBool(message.message_set_wire_format) - if hasno_standard_descriptor_accessor(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfBool(message.no_standard_descriptor_accessor) - if hasdeprecated(message): - result = result + sizeOfTag(3, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - if hasmap_entry(message): - result = result + sizeOfTag(7, WireType.Varint) - result = result + sizeOfBool(message.map_entry) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_MessageOptions*(stream: ProtobufStream, message: google_protobuf_MessageOptions) = - if hasmessage_set_wire_format(message): - writeBool(stream, message.message_set_wire_format, 1) - if hasno_standard_descriptor_accessor(message): - writeBool(stream, message.no_standard_descriptor_accessor, 2) - if hasdeprecated(message): - writeBool(stream, message.deprecated, 3) - if hasmap_entry(message): - writeBool(stream, message.map_entry, 7) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_MessageOptions*(stream: ProtobufStream): google_protobuf_MessageOptions = - result = newgoogle_protobuf_MessageOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setmessage_set_wire_format(result, readBool(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setno_standard_descriptor_accessor(result, readBool(stream)) - of 3: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 7: - expectWireType(wireType, WireType.Varint) - setmap_entry(result, readBool(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_MessageOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_MessageOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_MessageOptions*(data: string): google_protobuf_MessageOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_MessageOptions(pbs) - - -proc newgoogle_protobuf_OneofOptions*(): google_protobuf_OneofOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.uninterpreted_option = @[] - -proc clearuninterpreted_option*(message: google_protobuf_OneofOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_OneofOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_OneofOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_OneofOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_OneofOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_OneofOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_OneofOptions*(message: google_protobuf_OneofOptions): uint64 = - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_OneofOptions*(stream: ProtobufStream, message: google_protobuf_OneofOptions) = - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_OneofOptions*(stream: ProtobufStream): google_protobuf_OneofOptions = - result = newgoogle_protobuf_OneofOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_OneofOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_OneofOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_OneofOptions*(data: string): google_protobuf_OneofOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_OneofOptions(pbs) - - -proc newgoogle_protobuf_OneofDescriptorProto*(): google_protobuf_OneofDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.options = nil - -proc clearname*(message: google_protobuf_OneofDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_OneofDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_OneofDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_OneofDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_OneofDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearoptions*(message: google_protobuf_OneofDescriptorProto) = - message.options = nil - excl(message.hasField, [2]) - -proc hasoptions*(message: google_protobuf_OneofDescriptorProto): bool = - result = contains(message.hasField, 2) - -proc setoptions*(message: google_protobuf_OneofDescriptorProto, value: google_protobuf_OneofOptions) = - message.options = value - incl(message.hasField, 2) - -proc options*(message: google_protobuf_OneofDescriptorProto): google_protobuf_OneofOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_OneofDescriptorProto, value: google_protobuf_OneofOptions) {.inline.} = - setoptions(message, value) - -proc sizeOfgoogle_protobuf_OneofDescriptorProto*(message: google_protobuf_OneofDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - if hasoptions(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_OneofOptions(message.options)) - -proc writegoogle_protobuf_OneofDescriptorProto*(stream: ProtobufStream, message: google_protobuf_OneofDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - if hasoptions(message): - writeMessage(stream, message.options, 2) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_OneofDescriptorProto*(stream: ProtobufStream): google_protobuf_OneofDescriptorProto = - result = newgoogle_protobuf_OneofDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_OneofOptions(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_OneofDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_OneofDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_OneofDescriptorProto*(data: string): google_protobuf_OneofDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_OneofDescriptorProto(pbs) - - -proc newgoogle_protobuf_DescriptorProto_ReservedRange*(): google_protobuf_DescriptorProto_ReservedRange = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.start = 0 - result.fend = 0 - -proc clearstart*(message: google_protobuf_DescriptorProto_ReservedRange) = - message.start = 0 - excl(message.hasField, [1]) - -proc hasstart*(message: google_protobuf_DescriptorProto_ReservedRange): bool = - result = contains(message.hasField, 1) - -proc setstart*(message: google_protobuf_DescriptorProto_ReservedRange, value: int32) = - message.start = value - incl(message.hasField, 1) - -proc start*(message: google_protobuf_DescriptorProto_ReservedRange): int32 {.inline.} = - message.start - -proc `start=`*(message: google_protobuf_DescriptorProto_ReservedRange, value: int32) {.inline.} = - setstart(message, value) - -proc clearfend*(message: google_protobuf_DescriptorProto_ReservedRange) = - message.fend = 0 - excl(message.hasField, [2]) - -proc hasfend*(message: google_protobuf_DescriptorProto_ReservedRange): bool = - result = contains(message.hasField, 2) - -proc setfend*(message: google_protobuf_DescriptorProto_ReservedRange, value: int32) = - message.fend = value - incl(message.hasField, 2) - -proc fend*(message: google_protobuf_DescriptorProto_ReservedRange): int32 {.inline.} = - message.fend - -proc `fend=`*(message: google_protobuf_DescriptorProto_ReservedRange, value: int32) {.inline.} = - setfend(message, value) - -proc sizeOfgoogle_protobuf_DescriptorProto_ReservedRange*(message: google_protobuf_DescriptorProto_ReservedRange): uint64 = - if hasstart(message): - result = result + sizeOfTag(1, WireType.Varint) - result = result + sizeOfInt32(message.start) - if hasfend(message): - result = result + sizeOfTag(2, WireType.Varint) - result = result + sizeOfInt32(message.fend) - -proc writegoogle_protobuf_DescriptorProto_ReservedRange*(stream: ProtobufStream, message: google_protobuf_DescriptorProto_ReservedRange) = - if hasstart(message): - writeInt32(stream, message.start, 1) - if hasfend(message): - writeInt32(stream, message.fend, 2) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_DescriptorProto_ReservedRange*(stream: ProtobufStream): google_protobuf_DescriptorProto_ReservedRange = - result = newgoogle_protobuf_DescriptorProto_ReservedRange() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint) - setstart(result, readInt32(stream)) - of 2: - expectWireType(wireType, WireType.Varint) - setfend(result, readInt32(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_DescriptorProto_ReservedRange): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_DescriptorProto_ReservedRange(pbs, message) - result = ss.data - -proc newgoogle_protobuf_DescriptorProto_ReservedRange*(data: string): google_protobuf_DescriptorProto_ReservedRange = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_DescriptorProto_ReservedRange(pbs) - - -proc newgoogle_protobuf_DescriptorProto*(): google_protobuf_DescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.field = @[] - result.extension = @[] - result.nested_type = @[] - result.enum_type = @[] - result.extension_range = @[] - result.oneof_decl = @[] - result.options = nil - result.reserved_range = @[] - result.reserved_name = @[] - -proc clearname*(message: google_protobuf_DescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_DescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_DescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_DescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearfield*(message: google_protobuf_DescriptorProto) = - message.field = @[] - excl(message.hasField, [2]) - -proc hasfield*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 2) or (len(message.field) > 0) - -proc setfield*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) = - message.field = value - incl(message.hasField, 2) - -proc addfield*(message: google_protobuf_DescriptorProto, value: google_protobuf_FieldDescriptorProto) = - add(message.field, value) - incl(message.hasField, 2) - -proc field*(message: google_protobuf_DescriptorProto): seq[google_protobuf_FieldDescriptorProto] {.inline.} = - message.field - -proc `field=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) {.inline.} = - setfield(message, value) - -proc clearextension*(message: google_protobuf_DescriptorProto) = - message.extension = @[] - excl(message.hasField, [6]) - -proc hasextension*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 6) or (len(message.extension) > 0) - -proc setextension*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) = - message.extension = value - incl(message.hasField, 6) - -proc addextension*(message: google_protobuf_DescriptorProto, value: google_protobuf_FieldDescriptorProto) = - add(message.extension, value) - incl(message.hasField, 6) - -proc extension*(message: google_protobuf_DescriptorProto): seq[google_protobuf_FieldDescriptorProto] {.inline.} = - message.extension - -proc `extension=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) {.inline.} = - setextension(message, value) - -proc clearnested_type*(message: google_protobuf_DescriptorProto) = - message.nested_type = @[] - excl(message.hasField, [3]) - -proc hasnested_type*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 3) or (len(message.nested_type) > 0) - -proc setnested_type*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto]) = - message.nested_type = value - incl(message.hasField, 3) - -proc addnested_type*(message: google_protobuf_DescriptorProto, value: google_protobuf_DescriptorProto) = - add(message.nested_type, value) - incl(message.hasField, 3) - -proc nested_type*(message: google_protobuf_DescriptorProto): seq[google_protobuf_DescriptorProto] {.inline.} = - message.nested_type - -proc `nested_type=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto]) {.inline.} = - setnested_type(message, value) - -proc clearenum_type*(message: google_protobuf_DescriptorProto) = - message.enum_type = @[] - excl(message.hasField, [4]) - -proc hasenum_type*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 4) or (len(message.enum_type) > 0) - -proc setenum_type*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_EnumDescriptorProto]) = - message.enum_type = value - incl(message.hasField, 4) - -proc addenum_type*(message: google_protobuf_DescriptorProto, value: google_protobuf_EnumDescriptorProto) = - add(message.enum_type, value) - incl(message.hasField, 4) - -proc enum_type*(message: google_protobuf_DescriptorProto): seq[google_protobuf_EnumDescriptorProto] {.inline.} = - message.enum_type - -proc `enum_type=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_EnumDescriptorProto]) {.inline.} = - setenum_type(message, value) - -proc clearextension_range*(message: google_protobuf_DescriptorProto) = - message.extension_range = @[] - excl(message.hasField, [5]) - -proc hasextension_range*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 5) or (len(message.extension_range) > 0) - -proc setextension_range*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto_ExtensionRange]) = - message.extension_range = value - incl(message.hasField, 5) - -proc addextension_range*(message: google_protobuf_DescriptorProto, value: google_protobuf_DescriptorProto_ExtensionRange) = - add(message.extension_range, value) - incl(message.hasField, 5) - -proc extension_range*(message: google_protobuf_DescriptorProto): seq[google_protobuf_DescriptorProto_ExtensionRange] {.inline.} = - message.extension_range - -proc `extension_range=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto_ExtensionRange]) {.inline.} = - setextension_range(message, value) - -proc clearoneof_decl*(message: google_protobuf_DescriptorProto) = - message.oneof_decl = @[] - excl(message.hasField, [8]) - -proc hasoneof_decl*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 8) or (len(message.oneof_decl) > 0) - -proc setoneof_decl*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_OneofDescriptorProto]) = - message.oneof_decl = value - incl(message.hasField, 8) - -proc addoneof_decl*(message: google_protobuf_DescriptorProto, value: google_protobuf_OneofDescriptorProto) = - add(message.oneof_decl, value) - incl(message.hasField, 8) - -proc oneof_decl*(message: google_protobuf_DescriptorProto): seq[google_protobuf_OneofDescriptorProto] {.inline.} = - message.oneof_decl - -proc `oneof_decl=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_OneofDescriptorProto]) {.inline.} = - setoneof_decl(message, value) - -proc clearoptions*(message: google_protobuf_DescriptorProto) = - message.options = nil - excl(message.hasField, [7]) - -proc hasoptions*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 7) - -proc setoptions*(message: google_protobuf_DescriptorProto, value: google_protobuf_MessageOptions) = - message.options = value - incl(message.hasField, 7) - -proc options*(message: google_protobuf_DescriptorProto): google_protobuf_MessageOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_DescriptorProto, value: google_protobuf_MessageOptions) {.inline.} = - setoptions(message, value) - -proc clearreserved_range*(message: google_protobuf_DescriptorProto) = - message.reserved_range = @[] - excl(message.hasField, [9]) - -proc hasreserved_range*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 9) or (len(message.reserved_range) > 0) - -proc setreserved_range*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto_ReservedRange]) = - message.reserved_range = value - incl(message.hasField, 9) - -proc addreserved_range*(message: google_protobuf_DescriptorProto, value: google_protobuf_DescriptorProto_ReservedRange) = - add(message.reserved_range, value) - incl(message.hasField, 9) - -proc reserved_range*(message: google_protobuf_DescriptorProto): seq[google_protobuf_DescriptorProto_ReservedRange] {.inline.} = - message.reserved_range - -proc `reserved_range=`*(message: google_protobuf_DescriptorProto, value: seq[google_protobuf_DescriptorProto_ReservedRange]) {.inline.} = - setreserved_range(message, value) - -proc clearreserved_name*(message: google_protobuf_DescriptorProto) = - message.reserved_name = @[] - excl(message.hasField, [10]) - -proc hasreserved_name*(message: google_protobuf_DescriptorProto): bool = - result = contains(message.hasField, 10) or (len(message.reserved_name) > 0) - -proc setreserved_name*(message: google_protobuf_DescriptorProto, value: seq[string]) = - message.reserved_name = value - incl(message.hasField, 10) - -proc addreserved_name*(message: google_protobuf_DescriptorProto, value: string) = - add(message.reserved_name, value) - incl(message.hasField, 10) - -proc reserved_name*(message: google_protobuf_DescriptorProto): seq[string] {.inline.} = - message.reserved_name - -proc `reserved_name=`*(message: google_protobuf_DescriptorProto, value: seq[string]) {.inline.} = - setreserved_name(message, value) - -proc sizeOfgoogle_protobuf_DescriptorProto*(message: google_protobuf_DescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - for value in message.field: - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FieldDescriptorProto(value)) - for value in message.extension: - result = result + sizeOfTag(6, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FieldDescriptorProto(value)) - for value in message.nested_type: - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_DescriptorProto(value)) - for value in message.enum_type: - result = result + sizeOfTag(4, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumDescriptorProto(value)) - for value in message.extension_range: - result = result + sizeOfTag(5, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_DescriptorProto_ExtensionRange(value)) - for value in message.oneof_decl: - result = result + sizeOfTag(8, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_OneofDescriptorProto(value)) - if hasoptions(message): - result = result + sizeOfTag(7, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_MessageOptions(message.options)) - for value in message.reserved_range: - result = result + sizeOfTag(9, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_DescriptorProto_ReservedRange(value)) - for value in message.reserved_name: - result = result + sizeOfTag(10, WireType.LengthDelimited) - result = result + sizeOfString(value) - -proc writegoogle_protobuf_DescriptorProto*(stream: ProtobufStream, message: google_protobuf_DescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - for value in message.field: - writeMessage(stream, value, 2) - for value in message.extension: - writeMessage(stream, value, 6) - for value in message.nested_type: - writeMessage(stream, value, 3) - for value in message.enum_type: - writeMessage(stream, value, 4) - for value in message.extension_range: - writeMessage(stream, value, 5) - for value in message.oneof_decl: - writeMessage(stream, value, 8) - if hasoptions(message): - writeMessage(stream, message.options, 7) - for value in message.reserved_range: - writeMessage(stream, value, 9) - for value in message.reserved_name: - writeString(stream, value, 10) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_DescriptorProto*(stream: ProtobufStream): google_protobuf_DescriptorProto = - result = newgoogle_protobuf_DescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addfield(result, newgoogle_protobuf_FieldDescriptorProto(data)) - of 6: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addextension(result, newgoogle_protobuf_FieldDescriptorProto(data)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addnested_type(result, newgoogle_protobuf_DescriptorProto(data)) - of 4: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addenum_type(result, newgoogle_protobuf_EnumDescriptorProto(data)) - of 5: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addextension_range(result, newgoogle_protobuf_DescriptorProto_ExtensionRange(data)) - of 8: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addoneof_decl(result, newgoogle_protobuf_OneofDescriptorProto(data)) - of 7: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_MessageOptions(data)) - of 9: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addreserved_range(result, newgoogle_protobuf_DescriptorProto_ReservedRange(data)) - of 10: - expectWireType(wireType, WireType.LengthDelimited) - addreserved_name(result, readString(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_DescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_DescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_DescriptorProto*(data: string): google_protobuf_DescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_DescriptorProto(pbs) - - -proc newgoogle_protobuf_FileOptions*(): google_protobuf_FileOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.java_package = "" - result.java_outer_classname = "" - result.java_multiple_files = false - result.java_generate_equals_and_hash = false - result.java_string_check_utf8 = false - result.optimize_for = google_protobuf_FileOptions_OptimizeMode.SPEED - result.go_package = "" - result.cc_generic_services = false - result.java_generic_services = false - result.py_generic_services = false - result.php_generic_services = false - result.deprecated = false - result.cc_enable_arenas = false - result.objc_class_prefix = "" - result.csharp_namespace = "" - result.swift_prefix = "" - result.php_class_prefix = "" - result.php_namespace = "" - result.uninterpreted_option = @[] - -proc clearjava_package*(message: google_protobuf_FileOptions) = - message.java_package = "" - excl(message.hasField, [1]) - -proc hasjava_package*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 1) - -proc setjava_package*(message: google_protobuf_FileOptions, value: string) = - message.java_package = value - incl(message.hasField, 1) - -proc java_package*(message: google_protobuf_FileOptions): string {.inline.} = - message.java_package - -proc `java_package=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setjava_package(message, value) - -proc clearjava_outer_classname*(message: google_protobuf_FileOptions) = - message.java_outer_classname = "" - excl(message.hasField, [8]) - -proc hasjava_outer_classname*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 8) - -proc setjava_outer_classname*(message: google_protobuf_FileOptions, value: string) = - message.java_outer_classname = value - incl(message.hasField, 8) - -proc java_outer_classname*(message: google_protobuf_FileOptions): string {.inline.} = - message.java_outer_classname - -proc `java_outer_classname=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setjava_outer_classname(message, value) - -proc clearjava_multiple_files*(message: google_protobuf_FileOptions) = - message.java_multiple_files = false - excl(message.hasField, [10]) - -proc hasjava_multiple_files*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 10) - -proc setjava_multiple_files*(message: google_protobuf_FileOptions, value: bool) = - message.java_multiple_files = value - incl(message.hasField, 10) - -proc java_multiple_files*(message: google_protobuf_FileOptions): bool {.inline.} = - message.java_multiple_files - -proc `java_multiple_files=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setjava_multiple_files(message, value) - -proc clearjava_generate_equals_and_hash*(message: google_protobuf_FileOptions) = - message.java_generate_equals_and_hash = false - excl(message.hasField, [20]) - -proc hasjava_generate_equals_and_hash*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 20) - -proc setjava_generate_equals_and_hash*(message: google_protobuf_FileOptions, value: bool) = - message.java_generate_equals_and_hash = value - incl(message.hasField, 20) - -proc java_generate_equals_and_hash*(message: google_protobuf_FileOptions): bool {.inline.} = - message.java_generate_equals_and_hash - -proc `java_generate_equals_and_hash=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setjava_generate_equals_and_hash(message, value) - -proc clearjava_string_check_utf8*(message: google_protobuf_FileOptions) = - message.java_string_check_utf8 = false - excl(message.hasField, [27]) - -proc hasjava_string_check_utf8*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 27) - -proc setjava_string_check_utf8*(message: google_protobuf_FileOptions, value: bool) = - message.java_string_check_utf8 = value - incl(message.hasField, 27) - -proc java_string_check_utf8*(message: google_protobuf_FileOptions): bool {.inline.} = - message.java_string_check_utf8 - -proc `java_string_check_utf8=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setjava_string_check_utf8(message, value) - -proc clearoptimize_for*(message: google_protobuf_FileOptions) = - message.optimize_for = google_protobuf_FileOptions_OptimizeMode.SPEED - excl(message.hasField, [9]) - -proc hasoptimize_for*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 9) - -proc setoptimize_for*(message: google_protobuf_FileOptions, value: google_protobuf_FileOptions_OptimizeMode) = - message.optimize_for = value - incl(message.hasField, 9) - -proc optimize_for*(message: google_protobuf_FileOptions): google_protobuf_FileOptions_OptimizeMode {.inline.} = - message.optimize_for - -proc `optimize_for=`*(message: google_protobuf_FileOptions, value: google_protobuf_FileOptions_OptimizeMode) {.inline.} = - setoptimize_for(message, value) - -proc cleargo_package*(message: google_protobuf_FileOptions) = - message.go_package = "" - excl(message.hasField, [11]) - -proc hasgo_package*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 11) - -proc setgo_package*(message: google_protobuf_FileOptions, value: string) = - message.go_package = value - incl(message.hasField, 11) - -proc go_package*(message: google_protobuf_FileOptions): string {.inline.} = - message.go_package - -proc `go_package=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setgo_package(message, value) - -proc clearcc_generic_services*(message: google_protobuf_FileOptions) = - message.cc_generic_services = false - excl(message.hasField, [16]) - -proc hascc_generic_services*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 16) - -proc setcc_generic_services*(message: google_protobuf_FileOptions, value: bool) = - message.cc_generic_services = value - incl(message.hasField, 16) - -proc cc_generic_services*(message: google_protobuf_FileOptions): bool {.inline.} = - message.cc_generic_services - -proc `cc_generic_services=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setcc_generic_services(message, value) - -proc clearjava_generic_services*(message: google_protobuf_FileOptions) = - message.java_generic_services = false - excl(message.hasField, [17]) - -proc hasjava_generic_services*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 17) - -proc setjava_generic_services*(message: google_protobuf_FileOptions, value: bool) = - message.java_generic_services = value - incl(message.hasField, 17) - -proc java_generic_services*(message: google_protobuf_FileOptions): bool {.inline.} = - message.java_generic_services - -proc `java_generic_services=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setjava_generic_services(message, value) - -proc clearpy_generic_services*(message: google_protobuf_FileOptions) = - message.py_generic_services = false - excl(message.hasField, [18]) - -proc haspy_generic_services*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 18) - -proc setpy_generic_services*(message: google_protobuf_FileOptions, value: bool) = - message.py_generic_services = value - incl(message.hasField, 18) - -proc py_generic_services*(message: google_protobuf_FileOptions): bool {.inline.} = - message.py_generic_services - -proc `py_generic_services=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setpy_generic_services(message, value) - -proc clearphp_generic_services*(message: google_protobuf_FileOptions) = - message.php_generic_services = false - excl(message.hasField, [42]) - -proc hasphp_generic_services*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 42) - -proc setphp_generic_services*(message: google_protobuf_FileOptions, value: bool) = - message.php_generic_services = value - incl(message.hasField, 42) - -proc php_generic_services*(message: google_protobuf_FileOptions): bool {.inline.} = - message.php_generic_services - -proc `php_generic_services=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setphp_generic_services(message, value) - -proc cleardeprecated*(message: google_protobuf_FileOptions) = - message.deprecated = false - excl(message.hasField, [23]) - -proc hasdeprecated*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 23) - -proc setdeprecated*(message: google_protobuf_FileOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 23) - -proc deprecated*(message: google_protobuf_FileOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearcc_enable_arenas*(message: google_protobuf_FileOptions) = - message.cc_enable_arenas = false - excl(message.hasField, [31]) - -proc hascc_enable_arenas*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 31) - -proc setcc_enable_arenas*(message: google_protobuf_FileOptions, value: bool) = - message.cc_enable_arenas = value - incl(message.hasField, 31) - -proc cc_enable_arenas*(message: google_protobuf_FileOptions): bool {.inline.} = - message.cc_enable_arenas - -proc `cc_enable_arenas=`*(message: google_protobuf_FileOptions, value: bool) {.inline.} = - setcc_enable_arenas(message, value) - -proc clearobjc_class_prefix*(message: google_protobuf_FileOptions) = - message.objc_class_prefix = "" - excl(message.hasField, [36]) - -proc hasobjc_class_prefix*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 36) - -proc setobjc_class_prefix*(message: google_protobuf_FileOptions, value: string) = - message.objc_class_prefix = value - incl(message.hasField, 36) - -proc objc_class_prefix*(message: google_protobuf_FileOptions): string {.inline.} = - message.objc_class_prefix - -proc `objc_class_prefix=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setobjc_class_prefix(message, value) - -proc clearcsharp_namespace*(message: google_protobuf_FileOptions) = - message.csharp_namespace = "" - excl(message.hasField, [37]) - -proc hascsharp_namespace*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 37) - -proc setcsharp_namespace*(message: google_protobuf_FileOptions, value: string) = - message.csharp_namespace = value - incl(message.hasField, 37) - -proc csharp_namespace*(message: google_protobuf_FileOptions): string {.inline.} = - message.csharp_namespace - -proc `csharp_namespace=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setcsharp_namespace(message, value) - -proc clearswift_prefix*(message: google_protobuf_FileOptions) = - message.swift_prefix = "" - excl(message.hasField, [39]) - -proc hasswift_prefix*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 39) - -proc setswift_prefix*(message: google_protobuf_FileOptions, value: string) = - message.swift_prefix = value - incl(message.hasField, 39) - -proc swift_prefix*(message: google_protobuf_FileOptions): string {.inline.} = - message.swift_prefix - -proc `swift_prefix=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setswift_prefix(message, value) - -proc clearphp_class_prefix*(message: google_protobuf_FileOptions) = - message.php_class_prefix = "" - excl(message.hasField, [40]) - -proc hasphp_class_prefix*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 40) - -proc setphp_class_prefix*(message: google_protobuf_FileOptions, value: string) = - message.php_class_prefix = value - incl(message.hasField, 40) - -proc php_class_prefix*(message: google_protobuf_FileOptions): string {.inline.} = - message.php_class_prefix - -proc `php_class_prefix=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setphp_class_prefix(message, value) - -proc clearphp_namespace*(message: google_protobuf_FileOptions) = - message.php_namespace = "" - excl(message.hasField, [41]) - -proc hasphp_namespace*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 41) - -proc setphp_namespace*(message: google_protobuf_FileOptions, value: string) = - message.php_namespace = value - incl(message.hasField, 41) - -proc php_namespace*(message: google_protobuf_FileOptions): string {.inline.} = - message.php_namespace - -proc `php_namespace=`*(message: google_protobuf_FileOptions, value: string) {.inline.} = - setphp_namespace(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_FileOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_FileOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_FileOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_FileOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_FileOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_FileOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_FileOptions*(message: google_protobuf_FileOptions): uint64 = - if hasjava_package(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.java_package) - if hasjava_outer_classname(message): - result = result + sizeOfTag(8, WireType.LengthDelimited) - result = result + sizeOfString(message.java_outer_classname) - if hasjava_multiple_files(message): - result = result + sizeOfTag(10, WireType.Varint) - result = result + sizeOfBool(message.java_multiple_files) - if hasjava_generate_equals_and_hash(message): - result = result + sizeOfTag(20, WireType.Varint) - result = result + sizeOfBool(message.java_generate_equals_and_hash) - if hasjava_string_check_utf8(message): - result = result + sizeOfTag(27, WireType.Varint) - result = result + sizeOfBool(message.java_string_check_utf8) - if hasoptimize_for(message): - result = result + sizeOfTag(9, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_FileOptions_OptimizeMode](message.optimize_for) - if hasgo_package(message): - result = result + sizeOfTag(11, WireType.LengthDelimited) - result = result + sizeOfString(message.go_package) - if hascc_generic_services(message): - result = result + sizeOfTag(16, WireType.Varint) - result = result + sizeOfBool(message.cc_generic_services) - if hasjava_generic_services(message): - result = result + sizeOfTag(17, WireType.Varint) - result = result + sizeOfBool(message.java_generic_services) - if haspy_generic_services(message): - result = result + sizeOfTag(18, WireType.Varint) - result = result + sizeOfBool(message.py_generic_services) - if hasphp_generic_services(message): - result = result + sizeOfTag(42, WireType.Varint) - result = result + sizeOfBool(message.php_generic_services) - if hasdeprecated(message): - result = result + sizeOfTag(23, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - if hascc_enable_arenas(message): - result = result + sizeOfTag(31, WireType.Varint) - result = result + sizeOfBool(message.cc_enable_arenas) - if hasobjc_class_prefix(message): - result = result + sizeOfTag(36, WireType.LengthDelimited) - result = result + sizeOfString(message.objc_class_prefix) - if hascsharp_namespace(message): - result = result + sizeOfTag(37, WireType.LengthDelimited) - result = result + sizeOfString(message.csharp_namespace) - if hasswift_prefix(message): - result = result + sizeOfTag(39, WireType.LengthDelimited) - result = result + sizeOfString(message.swift_prefix) - if hasphp_class_prefix(message): - result = result + sizeOfTag(40, WireType.LengthDelimited) - result = result + sizeOfString(message.php_class_prefix) - if hasphp_namespace(message): - result = result + sizeOfTag(41, WireType.LengthDelimited) - result = result + sizeOfString(message.php_namespace) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_FileOptions*(stream: ProtobufStream, message: google_protobuf_FileOptions) = - if hasjava_package(message): - writeString(stream, message.java_package, 1) - if hasjava_outer_classname(message): - writeString(stream, message.java_outer_classname, 8) - if hasjava_multiple_files(message): - writeBool(stream, message.java_multiple_files, 10) - if hasjava_generate_equals_and_hash(message): - writeBool(stream, message.java_generate_equals_and_hash, 20) - if hasjava_string_check_utf8(message): - writeBool(stream, message.java_string_check_utf8, 27) - if hasoptimize_for(message): - writeEnum(stream, message.optimize_for, 9) - if hasgo_package(message): - writeString(stream, message.go_package, 11) - if hascc_generic_services(message): - writeBool(stream, message.cc_generic_services, 16) - if hasjava_generic_services(message): - writeBool(stream, message.java_generic_services, 17) - if haspy_generic_services(message): - writeBool(stream, message.py_generic_services, 18) - if hasphp_generic_services(message): - writeBool(stream, message.php_generic_services, 42) - if hasdeprecated(message): - writeBool(stream, message.deprecated, 23) - if hascc_enable_arenas(message): - writeBool(stream, message.cc_enable_arenas, 31) - if hasobjc_class_prefix(message): - writeString(stream, message.objc_class_prefix, 36) - if hascsharp_namespace(message): - writeString(stream, message.csharp_namespace, 37) - if hasswift_prefix(message): - writeString(stream, message.swift_prefix, 39) - if hasphp_class_prefix(message): - writeString(stream, message.php_class_prefix, 40) - if hasphp_namespace(message): - writeString(stream, message.php_namespace, 41) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_FileOptions*(stream: ProtobufStream): google_protobuf_FileOptions = - result = newgoogle_protobuf_FileOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setjava_package(result, readString(stream)) - of 8: - expectWireType(wireType, WireType.LengthDelimited) - setjava_outer_classname(result, readString(stream)) - of 10: - expectWireType(wireType, WireType.Varint) - setjava_multiple_files(result, readBool(stream)) - of 20: - expectWireType(wireType, WireType.Varint) - setjava_generate_equals_and_hash(result, readBool(stream)) - of 27: - expectWireType(wireType, WireType.Varint) - setjava_string_check_utf8(result, readBool(stream)) - of 9: - expectWireType(wireType, WireType.Varint) - setoptimize_for(result, readEnum[google_protobuf_FileOptions_OptimizeMode](stream)) - of 11: - expectWireType(wireType, WireType.LengthDelimited) - setgo_package(result, readString(stream)) - of 16: - expectWireType(wireType, WireType.Varint) - setcc_generic_services(result, readBool(stream)) - of 17: - expectWireType(wireType, WireType.Varint) - setjava_generic_services(result, readBool(stream)) - of 18: - expectWireType(wireType, WireType.Varint) - setpy_generic_services(result, readBool(stream)) - of 42: - expectWireType(wireType, WireType.Varint) - setphp_generic_services(result, readBool(stream)) - of 23: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 31: - expectWireType(wireType, WireType.Varint) - setcc_enable_arenas(result, readBool(stream)) - of 36: - expectWireType(wireType, WireType.LengthDelimited) - setobjc_class_prefix(result, readString(stream)) - of 37: - expectWireType(wireType, WireType.LengthDelimited) - setcsharp_namespace(result, readString(stream)) - of 39: - expectWireType(wireType, WireType.LengthDelimited) - setswift_prefix(result, readString(stream)) - of 40: - expectWireType(wireType, WireType.LengthDelimited) - setphp_class_prefix(result, readString(stream)) - of 41: - expectWireType(wireType, WireType.LengthDelimited) - setphp_namespace(result, readString(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_FileOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_FileOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_FileOptions*(data: string): google_protobuf_FileOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_FileOptions(pbs) - - -proc newgoogle_protobuf_ServiceOptions*(): google_protobuf_ServiceOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.deprecated = false - result.uninterpreted_option = @[] - -proc cleardeprecated*(message: google_protobuf_ServiceOptions) = - message.deprecated = false - excl(message.hasField, [33]) - -proc hasdeprecated*(message: google_protobuf_ServiceOptions): bool = - result = contains(message.hasField, 33) - -proc setdeprecated*(message: google_protobuf_ServiceOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 33) - -proc deprecated*(message: google_protobuf_ServiceOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_ServiceOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_ServiceOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_ServiceOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_ServiceOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_ServiceOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_ServiceOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_ServiceOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_ServiceOptions*(message: google_protobuf_ServiceOptions): uint64 = - if hasdeprecated(message): - result = result + sizeOfTag(33, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_ServiceOptions*(stream: ProtobufStream, message: google_protobuf_ServiceOptions) = - if hasdeprecated(message): - writeBool(stream, message.deprecated, 33) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_ServiceOptions*(stream: ProtobufStream): google_protobuf_ServiceOptions = - result = newgoogle_protobuf_ServiceOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 33: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_ServiceOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_ServiceOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_ServiceOptions*(data: string): google_protobuf_ServiceOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_ServiceOptions(pbs) - - -proc newgoogle_protobuf_MethodOptions*(): google_protobuf_MethodOptions = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.deprecated = false - result.idempotency_level = google_protobuf_MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN - result.uninterpreted_option = @[] - -proc cleardeprecated*(message: google_protobuf_MethodOptions) = - message.deprecated = false - excl(message.hasField, [33]) - -proc hasdeprecated*(message: google_protobuf_MethodOptions): bool = - result = contains(message.hasField, 33) - -proc setdeprecated*(message: google_protobuf_MethodOptions, value: bool) = - message.deprecated = value - incl(message.hasField, 33) - -proc deprecated*(message: google_protobuf_MethodOptions): bool {.inline.} = - message.deprecated - -proc `deprecated=`*(message: google_protobuf_MethodOptions, value: bool) {.inline.} = - setdeprecated(message, value) - -proc clearidempotency_level*(message: google_protobuf_MethodOptions) = - message.idempotency_level = google_protobuf_MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN - excl(message.hasField, [34]) - -proc hasidempotency_level*(message: google_protobuf_MethodOptions): bool = - result = contains(message.hasField, 34) - -proc setidempotency_level*(message: google_protobuf_MethodOptions, value: google_protobuf_MethodOptions_IdempotencyLevel) = - message.idempotency_level = value - incl(message.hasField, 34) - -proc idempotency_level*(message: google_protobuf_MethodOptions): google_protobuf_MethodOptions_IdempotencyLevel {.inline.} = - message.idempotency_level - -proc `idempotency_level=`*(message: google_protobuf_MethodOptions, value: google_protobuf_MethodOptions_IdempotencyLevel) {.inline.} = - setidempotency_level(message, value) - -proc clearuninterpreted_option*(message: google_protobuf_MethodOptions) = - message.uninterpreted_option = @[] - excl(message.hasField, [999]) - -proc hasuninterpreted_option*(message: google_protobuf_MethodOptions): bool = - result = contains(message.hasField, 999) or (len(message.uninterpreted_option) > 0) - -proc setuninterpreted_option*(message: google_protobuf_MethodOptions, value: seq[google_protobuf_UninterpretedOption]) = - message.uninterpreted_option = value - incl(message.hasField, 999) - -proc adduninterpreted_option*(message: google_protobuf_MethodOptions, value: google_protobuf_UninterpretedOption) = - add(message.uninterpreted_option, value) - incl(message.hasField, 999) - -proc uninterpreted_option*(message: google_protobuf_MethodOptions): seq[google_protobuf_UninterpretedOption] {.inline.} = - message.uninterpreted_option - -proc `uninterpreted_option=`*(message: google_protobuf_MethodOptions, value: seq[google_protobuf_UninterpretedOption]) {.inline.} = - setuninterpreted_option(message, value) - -proc sizeOfgoogle_protobuf_MethodOptions*(message: google_protobuf_MethodOptions): uint64 = - if hasdeprecated(message): - result = result + sizeOfTag(33, WireType.Varint) - result = result + sizeOfBool(message.deprecated) - if hasidempotency_level(message): - result = result + sizeOfTag(34, WireType.Varint) - result = result + sizeOfEnum[google_protobuf_MethodOptions_IdempotencyLevel](message.idempotency_level) - for value in message.uninterpreted_option: - result = result + sizeOfTag(999, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_UninterpretedOption(value)) - -proc writegoogle_protobuf_MethodOptions*(stream: ProtobufStream, message: google_protobuf_MethodOptions) = - if hasdeprecated(message): - writeBool(stream, message.deprecated, 33) - if hasidempotency_level(message): - writeEnum(stream, message.idempotency_level, 34) - for value in message.uninterpreted_option: - writeMessage(stream, value, 999) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_MethodOptions*(stream: ProtobufStream): google_protobuf_MethodOptions = - result = newgoogle_protobuf_MethodOptions() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 33: - expectWireType(wireType, WireType.Varint) - setdeprecated(result, readBool(stream)) - of 34: - expectWireType(wireType, WireType.Varint) - setidempotency_level(result, readEnum[google_protobuf_MethodOptions_IdempotencyLevel](stream)) - of 999: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - adduninterpreted_option(result, newgoogle_protobuf_UninterpretedOption(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_MethodOptions): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_MethodOptions(pbs, message) - result = ss.data - -proc newgoogle_protobuf_MethodOptions*(data: string): google_protobuf_MethodOptions = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_MethodOptions(pbs) - - -proc newgoogle_protobuf_MethodDescriptorProto*(): google_protobuf_MethodDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.input_type = "" - result.output_type = "" - result.options = nil - result.client_streaming = false - result.server_streaming = false - -proc clearname*(message: google_protobuf_MethodDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_MethodDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_MethodDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_MethodDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearinput_type*(message: google_protobuf_MethodDescriptorProto) = - message.input_type = "" - excl(message.hasField, [2]) - -proc hasinput_type*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 2) - -proc setinput_type*(message: google_protobuf_MethodDescriptorProto, value: string) = - message.input_type = value - incl(message.hasField, 2) - -proc input_type*(message: google_protobuf_MethodDescriptorProto): string {.inline.} = - message.input_type - -proc `input_type=`*(message: google_protobuf_MethodDescriptorProto, value: string) {.inline.} = - setinput_type(message, value) - -proc clearoutput_type*(message: google_protobuf_MethodDescriptorProto) = - message.output_type = "" - excl(message.hasField, [3]) - -proc hasoutput_type*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 3) - -proc setoutput_type*(message: google_protobuf_MethodDescriptorProto, value: string) = - message.output_type = value - incl(message.hasField, 3) - -proc output_type*(message: google_protobuf_MethodDescriptorProto): string {.inline.} = - message.output_type - -proc `output_type=`*(message: google_protobuf_MethodDescriptorProto, value: string) {.inline.} = - setoutput_type(message, value) - -proc clearoptions*(message: google_protobuf_MethodDescriptorProto) = - message.options = nil - excl(message.hasField, [4]) - -proc hasoptions*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 4) - -proc setoptions*(message: google_protobuf_MethodDescriptorProto, value: google_protobuf_MethodOptions) = - message.options = value - incl(message.hasField, 4) - -proc options*(message: google_protobuf_MethodDescriptorProto): google_protobuf_MethodOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_MethodDescriptorProto, value: google_protobuf_MethodOptions) {.inline.} = - setoptions(message, value) - -proc clearclient_streaming*(message: google_protobuf_MethodDescriptorProto) = - message.client_streaming = false - excl(message.hasField, [5]) - -proc hasclient_streaming*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 5) - -proc setclient_streaming*(message: google_protobuf_MethodDescriptorProto, value: bool) = - message.client_streaming = value - incl(message.hasField, 5) - -proc client_streaming*(message: google_protobuf_MethodDescriptorProto): bool {.inline.} = - message.client_streaming - -proc `client_streaming=`*(message: google_protobuf_MethodDescriptorProto, value: bool) {.inline.} = - setclient_streaming(message, value) - -proc clearserver_streaming*(message: google_protobuf_MethodDescriptorProto) = - message.server_streaming = false - excl(message.hasField, [6]) - -proc hasserver_streaming*(message: google_protobuf_MethodDescriptorProto): bool = - result = contains(message.hasField, 6) - -proc setserver_streaming*(message: google_protobuf_MethodDescriptorProto, value: bool) = - message.server_streaming = value - incl(message.hasField, 6) - -proc server_streaming*(message: google_protobuf_MethodDescriptorProto): bool {.inline.} = - message.server_streaming - -proc `server_streaming=`*(message: google_protobuf_MethodDescriptorProto, value: bool) {.inline.} = - setserver_streaming(message, value) - -proc sizeOfgoogle_protobuf_MethodDescriptorProto*(message: google_protobuf_MethodDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - if hasinput_type(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfString(message.input_type) - if hasoutput_type(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfString(message.output_type) - if hasoptions(message): - result = result + sizeOfTag(4, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_MethodOptions(message.options)) - if hasclient_streaming(message): - result = result + sizeOfTag(5, WireType.Varint) - result = result + sizeOfBool(message.client_streaming) - if hasserver_streaming(message): - result = result + sizeOfTag(6, WireType.Varint) - result = result + sizeOfBool(message.server_streaming) - -proc writegoogle_protobuf_MethodDescriptorProto*(stream: ProtobufStream, message: google_protobuf_MethodDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - if hasinput_type(message): - writeString(stream, message.input_type, 2) - if hasoutput_type(message): - writeString(stream, message.output_type, 3) - if hasoptions(message): - writeMessage(stream, message.options, 4) - if hasclient_streaming(message): - writeBool(stream, message.client_streaming, 5) - if hasserver_streaming(message): - writeBool(stream, message.server_streaming, 6) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_MethodDescriptorProto*(stream: ProtobufStream): google_protobuf_MethodDescriptorProto = - result = newgoogle_protobuf_MethodDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - setinput_type(result, readString(stream)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - setoutput_type(result, readString(stream)) - of 4: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_MethodOptions(data)) - of 5: - expectWireType(wireType, WireType.Varint) - setclient_streaming(result, readBool(stream)) - of 6: - expectWireType(wireType, WireType.Varint) - setserver_streaming(result, readBool(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_MethodDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_MethodDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_MethodDescriptorProto*(data: string): google_protobuf_MethodDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_MethodDescriptorProto(pbs) - - -proc newgoogle_protobuf_ServiceDescriptorProto*(): google_protobuf_ServiceDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.fmethod = @[] - result.options = nil - -proc clearname*(message: google_protobuf_ServiceDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_ServiceDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_ServiceDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_ServiceDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_ServiceDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearfmethod*(message: google_protobuf_ServiceDescriptorProto) = - message.fmethod = @[] - excl(message.hasField, [2]) - -proc hasfmethod*(message: google_protobuf_ServiceDescriptorProto): bool = - result = contains(message.hasField, 2) or (len(message.fmethod) > 0) - -proc setfmethod*(message: google_protobuf_ServiceDescriptorProto, value: seq[google_protobuf_MethodDescriptorProto]) = - message.fmethod = value - incl(message.hasField, 2) - -proc addfmethod*(message: google_protobuf_ServiceDescriptorProto, value: google_protobuf_MethodDescriptorProto) = - add(message.fmethod, value) - incl(message.hasField, 2) - -proc fmethod*(message: google_protobuf_ServiceDescriptorProto): seq[google_protobuf_MethodDescriptorProto] {.inline.} = - message.fmethod - -proc `fmethod=`*(message: google_protobuf_ServiceDescriptorProto, value: seq[google_protobuf_MethodDescriptorProto]) {.inline.} = - setfmethod(message, value) - -proc clearoptions*(message: google_protobuf_ServiceDescriptorProto) = - message.options = nil - excl(message.hasField, [3]) - -proc hasoptions*(message: google_protobuf_ServiceDescriptorProto): bool = - result = contains(message.hasField, 3) - -proc setoptions*(message: google_protobuf_ServiceDescriptorProto, value: google_protobuf_ServiceOptions) = - message.options = value - incl(message.hasField, 3) - -proc options*(message: google_protobuf_ServiceDescriptorProto): google_protobuf_ServiceOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_ServiceDescriptorProto, value: google_protobuf_ServiceOptions) {.inline.} = - setoptions(message, value) - -proc sizeOfgoogle_protobuf_ServiceDescriptorProto*(message: google_protobuf_ServiceDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - for value in message.fmethod: - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_MethodDescriptorProto(value)) - if hasoptions(message): - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_ServiceOptions(message.options)) - -proc writegoogle_protobuf_ServiceDescriptorProto*(stream: ProtobufStream, message: google_protobuf_ServiceDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - for value in message.fmethod: - writeMessage(stream, value, 2) - if hasoptions(message): - writeMessage(stream, message.options, 3) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_ServiceDescriptorProto*(stream: ProtobufStream): google_protobuf_ServiceDescriptorProto = - result = newgoogle_protobuf_ServiceDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addfmethod(result, newgoogle_protobuf_MethodDescriptorProto(data)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_ServiceOptions(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_ServiceDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_ServiceDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_ServiceDescriptorProto*(data: string): google_protobuf_ServiceDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_ServiceDescriptorProto(pbs) - - -proc newgoogle_protobuf_FileDescriptorProto*(): google_protobuf_FileDescriptorProto = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.name = "" - result.package = "" - result.dependency = @[] - result.public_dependency = @[] - result.weak_dependency = @[] - result.message_type = @[] - result.enum_type = @[] - result.service = @[] - result.extension = @[] - result.options = nil - result.source_code_info = nil - result.syntax = "" - -proc clearname*(message: google_protobuf_FileDescriptorProto) = - message.name = "" - excl(message.hasField, [1]) - -proc hasname*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 1) - -proc setname*(message: google_protobuf_FileDescriptorProto, value: string) = - message.name = value - incl(message.hasField, 1) - -proc name*(message: google_protobuf_FileDescriptorProto): string {.inline.} = - message.name - -proc `name=`*(message: google_protobuf_FileDescriptorProto, value: string) {.inline.} = - setname(message, value) - -proc clearpackage*(message: google_protobuf_FileDescriptorProto) = - message.package = "" - excl(message.hasField, [2]) - -proc haspackage*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 2) - -proc setpackage*(message: google_protobuf_FileDescriptorProto, value: string) = - message.package = value - incl(message.hasField, 2) - -proc package*(message: google_protobuf_FileDescriptorProto): string {.inline.} = - message.package - -proc `package=`*(message: google_protobuf_FileDescriptorProto, value: string) {.inline.} = - setpackage(message, value) - -proc cleardependency*(message: google_protobuf_FileDescriptorProto) = - message.dependency = @[] - excl(message.hasField, [3]) - -proc hasdependency*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 3) or (len(message.dependency) > 0) - -proc setdependency*(message: google_protobuf_FileDescriptorProto, value: seq[string]) = - message.dependency = value - incl(message.hasField, 3) - -proc adddependency*(message: google_protobuf_FileDescriptorProto, value: string) = - add(message.dependency, value) - incl(message.hasField, 3) - -proc dependency*(message: google_protobuf_FileDescriptorProto): seq[string] {.inline.} = - message.dependency - -proc `dependency=`*(message: google_protobuf_FileDescriptorProto, value: seq[string]) {.inline.} = - setdependency(message, value) - -proc clearpublic_dependency*(message: google_protobuf_FileDescriptorProto) = - message.public_dependency = @[] - excl(message.hasField, [10]) - -proc haspublic_dependency*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 10) or (len(message.public_dependency) > 0) - -proc setpublic_dependency*(message: google_protobuf_FileDescriptorProto, value: seq[int32]) = - message.public_dependency = value - incl(message.hasField, 10) - -proc addpublic_dependency*(message: google_protobuf_FileDescriptorProto, value: int32) = - add(message.public_dependency, value) - incl(message.hasField, 10) - -proc public_dependency*(message: google_protobuf_FileDescriptorProto): seq[int32] {.inline.} = - message.public_dependency - -proc `public_dependency=`*(message: google_protobuf_FileDescriptorProto, value: seq[int32]) {.inline.} = - setpublic_dependency(message, value) - -proc clearweak_dependency*(message: google_protobuf_FileDescriptorProto) = - message.weak_dependency = @[] - excl(message.hasField, [11]) - -proc hasweak_dependency*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 11) or (len(message.weak_dependency) > 0) - -proc setweak_dependency*(message: google_protobuf_FileDescriptorProto, value: seq[int32]) = - message.weak_dependency = value - incl(message.hasField, 11) - -proc addweak_dependency*(message: google_protobuf_FileDescriptorProto, value: int32) = - add(message.weak_dependency, value) - incl(message.hasField, 11) - -proc weak_dependency*(message: google_protobuf_FileDescriptorProto): seq[int32] {.inline.} = - message.weak_dependency - -proc `weak_dependency=`*(message: google_protobuf_FileDescriptorProto, value: seq[int32]) {.inline.} = - setweak_dependency(message, value) - -proc clearmessage_type*(message: google_protobuf_FileDescriptorProto) = - message.message_type = @[] - excl(message.hasField, [4]) - -proc hasmessage_type*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 4) or (len(message.message_type) > 0) - -proc setmessage_type*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_DescriptorProto]) = - message.message_type = value - incl(message.hasField, 4) - -proc addmessage_type*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_DescriptorProto) = - add(message.message_type, value) - incl(message.hasField, 4) - -proc message_type*(message: google_protobuf_FileDescriptorProto): seq[google_protobuf_DescriptorProto] {.inline.} = - message.message_type - -proc `message_type=`*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_DescriptorProto]) {.inline.} = - setmessage_type(message, value) - -proc clearenum_type*(message: google_protobuf_FileDescriptorProto) = - message.enum_type = @[] - excl(message.hasField, [5]) - -proc hasenum_type*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 5) or (len(message.enum_type) > 0) - -proc setenum_type*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_EnumDescriptorProto]) = - message.enum_type = value - incl(message.hasField, 5) - -proc addenum_type*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_EnumDescriptorProto) = - add(message.enum_type, value) - incl(message.hasField, 5) - -proc enum_type*(message: google_protobuf_FileDescriptorProto): seq[google_protobuf_EnumDescriptorProto] {.inline.} = - message.enum_type - -proc `enum_type=`*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_EnumDescriptorProto]) {.inline.} = - setenum_type(message, value) - -proc clearservice*(message: google_protobuf_FileDescriptorProto) = - message.service = @[] - excl(message.hasField, [6]) - -proc hasservice*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 6) or (len(message.service) > 0) - -proc setservice*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_ServiceDescriptorProto]) = - message.service = value - incl(message.hasField, 6) - -proc addservice*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_ServiceDescriptorProto) = - add(message.service, value) - incl(message.hasField, 6) - -proc service*(message: google_protobuf_FileDescriptorProto): seq[google_protobuf_ServiceDescriptorProto] {.inline.} = - message.service - -proc `service=`*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_ServiceDescriptorProto]) {.inline.} = - setservice(message, value) - -proc clearextension*(message: google_protobuf_FileDescriptorProto) = - message.extension = @[] - excl(message.hasField, [7]) - -proc hasextension*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 7) or (len(message.extension) > 0) - -proc setextension*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) = - message.extension = value - incl(message.hasField, 7) - -proc addextension*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_FieldDescriptorProto) = - add(message.extension, value) - incl(message.hasField, 7) - -proc extension*(message: google_protobuf_FileDescriptorProto): seq[google_protobuf_FieldDescriptorProto] {.inline.} = - message.extension - -proc `extension=`*(message: google_protobuf_FileDescriptorProto, value: seq[google_protobuf_FieldDescriptorProto]) {.inline.} = - setextension(message, value) - -proc clearoptions*(message: google_protobuf_FileDescriptorProto) = - message.options = nil - excl(message.hasField, [8]) - -proc hasoptions*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 8) - -proc setoptions*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_FileOptions) = - message.options = value - incl(message.hasField, 8) - -proc options*(message: google_protobuf_FileDescriptorProto): google_protobuf_FileOptions {.inline.} = - message.options - -proc `options=`*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_FileOptions) {.inline.} = - setoptions(message, value) - -proc clearsource_code_info*(message: google_protobuf_FileDescriptorProto) = - message.source_code_info = nil - excl(message.hasField, [9]) - -proc hassource_code_info*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 9) - -proc setsource_code_info*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_SourceCodeInfo) = - message.source_code_info = value - incl(message.hasField, 9) - -proc source_code_info*(message: google_protobuf_FileDescriptorProto): google_protobuf_SourceCodeInfo {.inline.} = - message.source_code_info - -proc `source_code_info=`*(message: google_protobuf_FileDescriptorProto, value: google_protobuf_SourceCodeInfo) {.inline.} = - setsource_code_info(message, value) - -proc clearsyntax*(message: google_protobuf_FileDescriptorProto) = - message.syntax = "" - excl(message.hasField, [12]) - -proc hassyntax*(message: google_protobuf_FileDescriptorProto): bool = - result = contains(message.hasField, 12) - -proc setsyntax*(message: google_protobuf_FileDescriptorProto, value: string) = - message.syntax = value - incl(message.hasField, 12) - -proc syntax*(message: google_protobuf_FileDescriptorProto): string {.inline.} = - message.syntax - -proc `syntax=`*(message: google_protobuf_FileDescriptorProto, value: string) {.inline.} = - setsyntax(message, value) - -proc sizeOfgoogle_protobuf_FileDescriptorProto*(message: google_protobuf_FileDescriptorProto): uint64 = - if hasname(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfString(message.name) - if haspackage(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfString(message.package) - for value in message.dependency: - result = result + sizeOfTag(3, WireType.LengthDelimited) - result = result + sizeOfString(value) - if haspublic_dependency(message): - result = result + sizeOfTag(10, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(packedFieldSize(message.public_dependency, FieldType.Int32)) - if hasweak_dependency(message): - result = result + sizeOfTag(11, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(packedFieldSize(message.weak_dependency, FieldType.Int32)) - for value in message.message_type: - result = result + sizeOfTag(4, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_DescriptorProto(value)) - for value in message.enum_type: - result = result + sizeOfTag(5, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_EnumDescriptorProto(value)) - for value in message.service: - result = result + sizeOfTag(6, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_ServiceDescriptorProto(value)) - for value in message.extension: - result = result + sizeOfTag(7, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FieldDescriptorProto(value)) - if hasoptions(message): - result = result + sizeOfTag(8, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FileOptions(message.options)) - if hassource_code_info(message): - result = result + sizeOfTag(9, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_SourceCodeInfo(message.source_code_info)) - if hassyntax(message): - result = result + sizeOfTag(12, WireType.LengthDelimited) - result = result + sizeOfString(message.syntax) - -proc writegoogle_protobuf_FileDescriptorProto*(stream: ProtobufStream, message: google_protobuf_FileDescriptorProto) = - if hasname(message): - writeString(stream, message.name, 1) - if haspackage(message): - writeString(stream, message.package, 2) - for value in message.dependency: - writeString(stream, value, 3) - for value in message.public_dependency: - writeInt32(stream, value, 10) - for value in message.weak_dependency: - writeInt32(stream, value, 11) - for value in message.message_type: - writeMessage(stream, value, 4) - for value in message.enum_type: - writeMessage(stream, value, 5) - for value in message.service: - writeMessage(stream, value, 6) - for value in message.extension: - writeMessage(stream, value, 7) - if hasoptions(message): - writeMessage(stream, message.options, 8) - if hassource_code_info(message): - writeMessage(stream, message.source_code_info, 9) - if hassyntax(message): - writeString(stream, message.syntax, 12) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_FileDescriptorProto*(stream: ProtobufStream): google_protobuf_FileDescriptorProto = - result = newgoogle_protobuf_FileDescriptorProto() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - setname(result, readString(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - setpackage(result, readString(stream)) - of 3: - expectWireType(wireType, WireType.LengthDelimited) - adddependency(result, readString(stream)) - of 10: - expectWireType(wireType, WireType.Varint, WireType.LengthDelimited) - if wireType == WireType.LengthDelimited: - let - size = readVarint(stream) - start = uint64(getPosition(stream)) - var consumed = 0'u64 - while consumed < size: - addpublic_dependency(result, readInt32(stream)) - consumed = uint64(getPosition(stream)) - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - addpublic_dependency(result, readInt32(stream)) - of 11: - expectWireType(wireType, WireType.Varint, WireType.LengthDelimited) - if wireType == WireType.LengthDelimited: - let - size = readVarint(stream) - start = uint64(getPosition(stream)) - var consumed = 0'u64 - while consumed < size: - addweak_dependency(result, readInt32(stream)) - consumed = uint64(getPosition(stream)) - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - addweak_dependency(result, readInt32(stream)) - of 4: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addmessage_type(result, newgoogle_protobuf_DescriptorProto(data)) - of 5: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addenum_type(result, newgoogle_protobuf_EnumDescriptorProto(data)) - of 6: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addservice(result, newgoogle_protobuf_ServiceDescriptorProto(data)) - of 7: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addextension(result, newgoogle_protobuf_FieldDescriptorProto(data)) - of 8: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setoptions(result, newgoogle_protobuf_FileOptions(data)) - of 9: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - setsource_code_info(result, newgoogle_protobuf_SourceCodeInfo(data)) - of 12: - expectWireType(wireType, WireType.LengthDelimited) - setsyntax(result, readString(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_FileDescriptorProto): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_FileDescriptorProto(pbs, message) - result = ss.data - -proc newgoogle_protobuf_FileDescriptorProto*(data: string): google_protobuf_FileDescriptorProto = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_FileDescriptorProto(pbs) - - -proc newgoogle_protobuf_FileDescriptorSet*(): google_protobuf_FileDescriptorSet = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.file = @[] - -proc clearfile*(message: google_protobuf_FileDescriptorSet) = - message.file = @[] - excl(message.hasField, [1]) - -proc hasfile*(message: google_protobuf_FileDescriptorSet): bool = - result = contains(message.hasField, 1) or (len(message.file) > 0) - -proc setfile*(message: google_protobuf_FileDescriptorSet, value: seq[google_protobuf_FileDescriptorProto]) = - message.file = value - incl(message.hasField, 1) - -proc addfile*(message: google_protobuf_FileDescriptorSet, value: google_protobuf_FileDescriptorProto) = - add(message.file, value) - incl(message.hasField, 1) - -proc file*(message: google_protobuf_FileDescriptorSet): seq[google_protobuf_FileDescriptorProto] {.inline.} = - message.file - -proc `file=`*(message: google_protobuf_FileDescriptorSet, value: seq[google_protobuf_FileDescriptorProto]) {.inline.} = - setfile(message, value) - -proc sizeOfgoogle_protobuf_FileDescriptorSet*(message: google_protobuf_FileDescriptorSet): uint64 = - for value in message.file: - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FileDescriptorProto(value)) - -proc writegoogle_protobuf_FileDescriptorSet*(stream: ProtobufStream, message: google_protobuf_FileDescriptorSet) = - for value in message.file: - writeMessage(stream, value, 1) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_FileDescriptorSet*(stream: ProtobufStream): google_protobuf_FileDescriptorSet = - result = newgoogle_protobuf_FileDescriptorSet() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addfile(result, newgoogle_protobuf_FileDescriptorProto(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_FileDescriptorSet): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_FileDescriptorSet(pbs, message) - result = ss.data - -proc newgoogle_protobuf_FileDescriptorSet*(data: string): google_protobuf_FileDescriptorSet = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_FileDescriptorSet(pbs) - - -proc newgoogle_protobuf_GeneratedCodeInfo_Annotation*(): google_protobuf_GeneratedCodeInfo_Annotation = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.path = @[] - result.source_file = "" - result.begin = 0 - result.fend = 0 - -proc clearpath*(message: google_protobuf_GeneratedCodeInfo_Annotation) = - message.path = @[] - excl(message.hasField, [1]) - -proc haspath*(message: google_protobuf_GeneratedCodeInfo_Annotation): bool = - result = contains(message.hasField, 1) or (len(message.path) > 0) - -proc setpath*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: seq[int32]) = - message.path = value - incl(message.hasField, 1) - -proc addpath*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: int32) = - add(message.path, value) - incl(message.hasField, 1) - -proc path*(message: google_protobuf_GeneratedCodeInfo_Annotation): seq[int32] {.inline.} = - message.path - -proc `path=`*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: seq[int32]) {.inline.} = - setpath(message, value) - -proc clearsource_file*(message: google_protobuf_GeneratedCodeInfo_Annotation) = - message.source_file = "" - excl(message.hasField, [2]) - -proc hassource_file*(message: google_protobuf_GeneratedCodeInfo_Annotation): bool = - result = contains(message.hasField, 2) - -proc setsource_file*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: string) = - message.source_file = value - incl(message.hasField, 2) - -proc source_file*(message: google_protobuf_GeneratedCodeInfo_Annotation): string {.inline.} = - message.source_file - -proc `source_file=`*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: string) {.inline.} = - setsource_file(message, value) - -proc clearbegin*(message: google_protobuf_GeneratedCodeInfo_Annotation) = - message.begin = 0 - excl(message.hasField, [3]) - -proc hasbegin*(message: google_protobuf_GeneratedCodeInfo_Annotation): bool = - result = contains(message.hasField, 3) - -proc setbegin*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: int32) = - message.begin = value - incl(message.hasField, 3) - -proc begin*(message: google_protobuf_GeneratedCodeInfo_Annotation): int32 {.inline.} = - message.begin - -proc `begin=`*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: int32) {.inline.} = - setbegin(message, value) - -proc clearfend*(message: google_protobuf_GeneratedCodeInfo_Annotation) = - message.fend = 0 - excl(message.hasField, [4]) - -proc hasfend*(message: google_protobuf_GeneratedCodeInfo_Annotation): bool = - result = contains(message.hasField, 4) - -proc setfend*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: int32) = - message.fend = value - incl(message.hasField, 4) - -proc fend*(message: google_protobuf_GeneratedCodeInfo_Annotation): int32 {.inline.} = - message.fend - -proc `fend=`*(message: google_protobuf_GeneratedCodeInfo_Annotation, value: int32) {.inline.} = - setfend(message, value) - -proc sizeOfgoogle_protobuf_GeneratedCodeInfo_Annotation*(message: google_protobuf_GeneratedCodeInfo_Annotation): uint64 = - if haspath(message): - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(packedFieldSize(message.path, FieldType.Int32)) - if hassource_file(message): - result = result + sizeOfTag(2, WireType.LengthDelimited) - result = result + sizeOfString(message.source_file) - if hasbegin(message): - result = result + sizeOfTag(3, WireType.Varint) - result = result + sizeOfInt32(message.begin) - if hasfend(message): - result = result + sizeOfTag(4, WireType.Varint) - result = result + sizeOfInt32(message.fend) - -proc writegoogle_protobuf_GeneratedCodeInfo_Annotation*(stream: ProtobufStream, message: google_protobuf_GeneratedCodeInfo_Annotation) = - if haspath(message): - writeTag(stream, 1, WireType.LengthDelimited) - writeVarint(stream, packedFieldSize(message.path, FieldType.Int32)) - for value in message.path: - writeInt32(stream, value) - if hassource_file(message): - writeString(stream, message.source_file, 2) - if hasbegin(message): - writeInt32(stream, message.begin, 3) - if hasfend(message): - writeInt32(stream, message.fend, 4) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_GeneratedCodeInfo_Annotation*(stream: ProtobufStream): google_protobuf_GeneratedCodeInfo_Annotation = - result = newgoogle_protobuf_GeneratedCodeInfo_Annotation() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.Varint, WireType.LengthDelimited) - if wireType == WireType.LengthDelimited: - let - size = readVarint(stream) - start = uint64(getPosition(stream)) - var consumed = 0'u64 - while consumed < size: - addpath(result, readInt32(stream)) - consumed = uint64(getPosition(stream)) - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - addpath(result, readInt32(stream)) - of 2: - expectWireType(wireType, WireType.LengthDelimited) - setsource_file(result, readString(stream)) - of 3: - expectWireType(wireType, WireType.Varint) - setbegin(result, readInt32(stream)) - of 4: - expectWireType(wireType, WireType.Varint) - setfend(result, readInt32(stream)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_GeneratedCodeInfo_Annotation): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_GeneratedCodeInfo_Annotation(pbs, message) - result = ss.data - -proc newgoogle_protobuf_GeneratedCodeInfo_Annotation*(data: string): google_protobuf_GeneratedCodeInfo_Annotation = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_GeneratedCodeInfo_Annotation(pbs) - - -proc newgoogle_protobuf_GeneratedCodeInfo*(): google_protobuf_GeneratedCodeInfo = - new(result) - result.hasField = initIntSet() - result.unknownFields = @[] - result.annotation = @[] - -proc clearannotation*(message: google_protobuf_GeneratedCodeInfo) = - message.annotation = @[] - excl(message.hasField, [1]) - -proc hasannotation*(message: google_protobuf_GeneratedCodeInfo): bool = - result = contains(message.hasField, 1) or (len(message.annotation) > 0) - -proc setannotation*(message: google_protobuf_GeneratedCodeInfo, value: seq[google_protobuf_GeneratedCodeInfo_Annotation]) = - message.annotation = value - incl(message.hasField, 1) - -proc addannotation*(message: google_protobuf_GeneratedCodeInfo, value: google_protobuf_GeneratedCodeInfo_Annotation) = - add(message.annotation, value) - incl(message.hasField, 1) - -proc annotation*(message: google_protobuf_GeneratedCodeInfo): seq[google_protobuf_GeneratedCodeInfo_Annotation] {.inline.} = - message.annotation - -proc `annotation=`*(message: google_protobuf_GeneratedCodeInfo, value: seq[google_protobuf_GeneratedCodeInfo_Annotation]) {.inline.} = - setannotation(message, value) - -proc sizeOfgoogle_protobuf_GeneratedCodeInfo*(message: google_protobuf_GeneratedCodeInfo): uint64 = - for value in message.annotation: - result = result + sizeOfTag(1, WireType.LengthDelimited) - result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_GeneratedCodeInfo_Annotation(value)) - -proc writegoogle_protobuf_GeneratedCodeInfo*(stream: ProtobufStream, message: google_protobuf_GeneratedCodeInfo) = - for value in message.annotation: - writeMessage(stream, value, 1) - writeUnknownFields(stream, message.unknownFields) - -proc readgoogle_protobuf_GeneratedCodeInfo*(stream: ProtobufStream): google_protobuf_GeneratedCodeInfo = - result = newgoogle_protobuf_GeneratedCodeInfo() - while not atEnd(stream): - let - tag = readTag(stream) - wireType = wireType(tag) - case fieldNumber(tag) - of 0: - raise newException(InvalidFieldNumberError, "Invalid field number: 0") - of 1: - expectWireType(wireType, WireType.LengthDelimited) - let data = readLengthDelimited(stream) - addannotation(result, newgoogle_protobuf_GeneratedCodeInfo_Annotation(data)) - else: readUnknownField(stream, tag, result.unknownFields) - -proc serialize*(message: google_protobuf_GeneratedCodeInfo): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - writegoogle_protobuf_GeneratedCodeInfo(pbs, message) - result = ss.data - -proc newgoogle_protobuf_GeneratedCodeInfo*(data: string): google_protobuf_GeneratedCodeInfo = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readgoogle_protobuf_GeneratedCodeInfo(pbs) - - diff --git a/src/nimpb_buildpkg/plugin.nim b/src/nimpb_buildpkg/plugin.nim deleted file mode 100644 index abdad07..0000000 --- a/src/nimpb_buildpkg/plugin.nim +++ /dev/null @@ -1,1084 +0,0 @@ -import algorithm -import os -import pegs -import sequtils -import sets -import strformat -import strutils -import tables - -import descriptor_pb - -import nimpb/nimpb - -type - Names = distinct seq[string] - - Enum = ref object - names: Names - values: seq[tuple[name: string, number: int]] - defaultValue: string - - Field = ref object - number: int - name: string - label: google_protobuf_FieldDescriptorProto_Label - ftype: google_protobuf_FieldDescriptorProto_Type - typeName: string - packed: bool - oneof: Oneof - mapEntry: Message - defaultValue: string - message: Message - jsonName: string - - Message = ref object - names: Names - fields: seq[Field] - oneofs: seq[Oneof] - mapEntry: bool - file: ProtoFile - - Oneof = ref object - name: string - fields: seq[Field] - - ProcessedFile = ref object - name: string - data: string - - ProtoFile = ref object - fdesc: google_protobuf_FileDescriptorProto - enums: seq[Enum] - messages: seq[Message] - syntax: Syntax - dependencies: seq[ProtoFile] - serviceGenerator: ServiceGenerator - - Syntax {.pure.} = enum - Proto2 - Proto3 - - ServiceGenerator* = proc (service: Service): string - - Service* = ref object - name*: string - package*: string - methods*: seq[ServiceMethod] - - ServiceMethod* = ref object - name*: string - inputType*: string - outputType*: string - clientStreaming*: bool - serverStreaming*: bool - -when defined(debug): - proc log(msg: string) = - stderr.write(msg) - stderr.write("\n") -else: - proc log(msg: string) = discard - -proc initNamesFromTypeName(typename: string): Names = - if typename[0] != '.': - raise newException(Exception, "relative names not supported") - let parts = split(typename[1..^1], ".") - result = Names(parts) - -proc `$`(names: Names): string = - let n = seq[string](names) - result = join(n, "_") - -proc add(names: var Names, s: string) = - add(seq[string](names), s) - -proc `&`(names: Names, s: string): Names = - result = names - add(result, s) - -proc isRepeated(field: Field): bool = - result = field.label == google_protobuf_FieldDescriptorProtoLabel.LabelRepeated - -proc isMessage(field: Field): bool = - result = field.ftype == google_protobuf_FieldDescriptorProtoType.TypeMessage - -proc isEnum(field: Field): bool = - result = field.ftype == google_protobuf_FieldDescriptorProtoType.TypeEnum - -proc isNumeric(field: Field): bool = - case field.ftype - of google_protobuf_FieldDescriptorProtoType.TypeDouble, google_protobuf_FieldDescriptorProtoType.TypeFloat, - google_protobuf_FieldDescriptorProtoType.TypeInt64, google_protobuf_FieldDescriptorProtoType.TypeUInt64, - google_protobuf_FieldDescriptorProtoType.TypeInt32, google_protobuf_FieldDescriptorProtoType.TypeFixed64, - google_protobuf_FieldDescriptorProtoType.TypeFixed32, google_protobuf_FieldDescriptorProtoType.TypeBool, - google_protobuf_FieldDescriptorProtoType.TypeUInt32, google_protobuf_FieldDescriptorProtoType.TypeEnum, - google_protobuf_FieldDescriptorProtoType.TypeSFixed32, google_protobuf_FieldDescriptorProtoType.TypeSFixed64, - google_protobuf_FieldDescriptorProtoType.TypeSInt32, google_protobuf_FieldDescriptorProtoType.TypeSInt64: - result = true - else: discard - -proc isMapEntry(message: Message): bool = - result = message.mapEntry - -proc isMapEntry(field: Field): bool = - result = field.mapEntry != nil - -proc nimTypeName(field: Field): string = - case field.ftype - of google_protobuf_FieldDescriptorProtoType.TypeDouble: result = "float64" - of google_protobuf_FieldDescriptorProtoType.TypeFloat: result = "float32" - of google_protobuf_FieldDescriptorProtoType.TypeInt64: result = "int64" - of google_protobuf_FieldDescriptorProtoType.TypeUInt64: result = "uint64" - of google_protobuf_FieldDescriptorProtoType.TypeInt32: result = "int32" - of google_protobuf_FieldDescriptorProtoType.TypeFixed64: result = "uint64" - of google_protobuf_FieldDescriptorProtoType.TypeFixed32: result = "uint32" - of google_protobuf_FieldDescriptorProtoType.TypeBool: result = "bool" - of google_protobuf_FieldDescriptorProtoType.TypeString: result = "string" - of google_protobuf_FieldDescriptorProtoType.TypeGroup: result = "" - of google_protobuf_FieldDescriptorProtoType.TypeMessage: result = field.typeName - of google_protobuf_FieldDescriptorProtoType.TypeBytes: result = "bytes" - of google_protobuf_FieldDescriptorProtoType.TypeUInt32: result = "uint32" - of google_protobuf_FieldDescriptorProtoType.TypeEnum: result = field.typeName - of google_protobuf_FieldDescriptorProtoType.TypeSFixed32: result = "int32" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed64: result = "int64" - of google_protobuf_FieldDescriptorProtoType.TypeSInt32: result = "int32" - of google_protobuf_FieldDescriptorProtoType.TypeSInt64: result = "int64" - -proc mapKeyType(field: Field): string = - for f in field.mapEntry.fields: - if f.name == "key": - return f.nimTypeName - -proc mapValueField(field: Field): Field = - for f in field.mapEntry.fields: - if f.name == "value": - return f - -proc mapValueType(field: Field): string = - for f in field.mapEntry.fields: - if f.name == "value": - return f.nimTypeName - -proc `$`(ft: google_protobuf_FieldDescriptorProtoType): string = - case ft - of google_protobuf_FieldDescriptorProtoType.TypeDouble: result = "Double" - of google_protobuf_FieldDescriptorProtoType.TypeFloat: result = "Float" - of google_protobuf_FieldDescriptorProtoType.TypeInt64: result = "Int64" - of google_protobuf_FieldDescriptorProtoType.TypeUInt64: result = "UInt64" - of google_protobuf_FieldDescriptorProtoType.TypeInt32: result = "Int32" - of google_protobuf_FieldDescriptorProtoType.TypeFixed64: result = "Fixed64" - of google_protobuf_FieldDescriptorProtoType.TypeFixed32: result = "Fixed32" - of google_protobuf_FieldDescriptorProtoType.TypeBool: result = "Bool" - of google_protobuf_FieldDescriptorProtoType.TypeString: result = "String" - of google_protobuf_FieldDescriptorProtoType.TypeGroup: result = "Group" - of google_protobuf_FieldDescriptorProtoType.TypeMessage: result = "Message" - of google_protobuf_FieldDescriptorProtoType.TypeBytes: result = "Bytes" - of google_protobuf_FieldDescriptorProtoType.TypeUInt32: result = "UInt32" - of google_protobuf_FieldDescriptorProtoType.TypeEnum: result = "Enum" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed32: result = "SFixed32" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed64: result = "SFixed64" - of google_protobuf_FieldDescriptorProtoType.TypeSInt32: result = "SInt32" - of google_protobuf_FieldDescriptorProtoType.TypeSInt64: result = "SInt64" - -proc defaultValue(ftype: google_protobuf_FieldDescriptorProto_Type): string = - case ftype - of google_protobuf_FieldDescriptorProtoType.TypeDouble: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeFloat: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeInt64: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeUInt64: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeInt32: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeFixed64: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeFixed32: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeBool: result = "false" - of google_protobuf_FieldDescriptorProtoType.TypeString: result = "\"\"" - of google_protobuf_FieldDescriptorProtoType.TypeGroup: result = "" - of google_protobuf_FieldDescriptorProtoType.TypeMessage: result = "nil" - of google_protobuf_FieldDescriptorProtoType.TypeBytes: result = "bytes(\"\")" - of google_protobuf_FieldDescriptorProtoType.TypeUInt32: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeEnum: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed32: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed64: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeSInt32: result = "0" - of google_protobuf_FieldDescriptorProtoType.TypeSInt64: result = "0" - -proc findEnum(file: ProtoFile, typeName: string): Enum = - for e in file.enums: - if $e.names == typeName: - return e - for dep in file.dependencies: - result = findEnum(dep, typeName) - if result != nil: - break - -proc defaultValue(field: Field): string = - if field.defaultValue != nil: - if isEnum(field): - return &"{field.typeName}.{field.defaultValue}" - elif field.ftype == google_protobuf_FieldDescriptorProtoType.TypeString: - return escape(field.defaultValue) - else: - return field.defaultValue - elif isMapEntry(field): - return &"newTable[{field.mapKeyType}, {field.mapValueType}]()" - elif isRepeated(field): - return "@[]" - elif isEnum(field): - let e = findEnum(field.message.file, field.typeName) - if e != nil: - result = e.defaultValue - else: - result = &"cast[{field.typeName}](0)" - else: - result = defaultValue(field.ftype) - -proc wiretypeStr(field: Field): string = - result = "WireType." - case field.ftype - of google_protobuf_FieldDescriptorProtoType.TypeDouble: result &= "Fixed64" - of google_protobuf_FieldDescriptorProtoType.TypeFloat: result &= "Fixed32" - of google_protobuf_FieldDescriptorProtoType.TypeInt64: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeUInt64: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeInt32: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeFixed64: result &= "Fixed64" - of google_protobuf_FieldDescriptorProtoType.TypeFixed32: result &= "Fixed32" - of google_protobuf_FieldDescriptorProtoType.TypeBool: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeString: result &= "LengthDelimited" - of google_protobuf_FieldDescriptorProtoType.TypeGroup: result &= "" - of google_protobuf_FieldDescriptorProtoType.TypeMessage: result &= "LengthDelimited" - of google_protobuf_FieldDescriptorProtoType.TypeBytes: result &= "LengthDelimited" - of google_protobuf_FieldDescriptorProtoType.TypeUInt32: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeEnum: result &= &"Varint" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed32: result &= "Fixed32" - of google_protobuf_FieldDescriptorProtoType.TypeSFixed64: result &= "Fixed64" - of google_protobuf_FieldDescriptorProtoType.TypeSInt32: result &= "Varint" - of google_protobuf_FieldDescriptorProtoType.TypeSInt64: result &= "Varint" - -proc fieldTypeStr(field: Field): string = - result = "FieldType." & $field.ftype - -proc isKeyword(s: string): bool = - case s - of "addr", "and", "as", "asm", "bind", "block", "break", "case", "cast", - "concept", "const", "continue", "converter", "defer", "discard", - "distinct", "div", "do", "elif", "else", "end", "enum", "except", - "export", "finally", "for", "from", "func", "if", "import", "in", - "include", "interface", "is", "isnot", "iterator", "let", "macro", - "method", "mixin", "mod", "nil", "not", "notin", "object", "of", "or", - "out", "proc", "ptr", "raise", "ref", "return", "shl", "shr", "static", - "template", "try", "tuple", "type", "using", "var", "when", "while", - "xor", "yield": - result = true - else: - result = false - -proc writeProc(field: Field): string = - if isMapEntry(field): - result = &"write{field.typeName}KV" - elif isMessage(field): - result = "writeMessage" - elif isEnum(field): - result = "writeEnum" - else: - result = &"write{field.typeName}" - -proc readProc(field: Field): string = - if isMapEntry(field): - result = &"read{field.typeName}KV" - elif isEnum(field): - result = &"readEnum[{field.typeName}]" - else: - result = &"read{field.typeName}" - -proc sizeOfProc(field: Field): string = - if isMapEntry(field): - result = &"sizeOf{field.typeName}KV" - elif isEnum(field): - result = &"sizeOfEnum[{field.typeName}]" - else: - result = &"sizeOf{field.typeName}" - -proc newField(file: ProtoFile, message: Message, desc: google_protobuf_FieldDescriptorProto): Field = - new(result) - - result.name = desc.name - result.number = desc.number - result.label = desc.label - result.ftype = desc.ftype - result.typeName = "" - result.packed = false - result.mapEntry = nil - result.message = message - - # Identifiers cannot start/end with underscore - removePrefix(result.name, '_') - removeSuffix(result.name, '_') - - # Consecutive underscores are not allowed - result.name = replace(result.name, peg"'_' '_'+", "_") - - if isKeyword(result.name): - result.name = "f" & result.name - - if isRepeated(result) and isNumeric(result): - if hasOptions(desc): - if hasPacked(desc.options): - result.packed = desc.options.packed - else: - result.packed = - if file.syntax == Syntax.Proto2: - false - else: - true - else: - result.packed = - if file.syntax == Syntax.Proto2: - false - else: - true - - if hasOneof_index(desc): - result.oneof = message.oneofs[desc.oneof_index] - add(result.oneof.fields, result) - - if isMessage(result) or isEnum(result): - result.typeName = $initNamesFromTypeName(desc.type_name) - else: - result.typeName = $result.ftype - - if hasDefaultValue(desc): - result.defaultValue = desc.default_value - - if hasJsonName(desc): - result.jsonName = desc.jsonName - - log(&"newField {result.name} {$result.ftype} {result.typeName} PACKED={result.packed} SYNTAX={file.syntax}") - -proc newOneof(name: string): Oneof = - new(result) - result.fields = @[] - result.name = name - -proc newMessage(file: ProtoFile, names: Names, desc: google_protobuf_DescriptorProto): Message = - new(result) - - result.names = names - result.fields = @[] - result.oneofs = @[] - result.mapEntry = false - result.file = file - - if hasOptions(desc) and hasMapEntry(desc.options): - result.mapEntry = desc.options.mapEntry - - log(&"newMessage {$result.names}") - - for oneof in desc.oneof_decl: - add(result.oneofs, newOneof(oneof.name)) - - for field in desc.field: - add(result.fields, newField(file, result, field)) - -proc fixMapEntry(file: ProtoFile, message: Message): bool = - for field in message.fields: - for msg in file.messages: - if $msg.names == field.typeName: - if msg.mapEntry: - log(&"fixing map {field.name} {msg.names}") - field.mapEntry = msg - result = true - -proc newEnum(names: Names, desc: google_protobuf_EnumDescriptorProto): Enum = - new(result) - - result.names = names & desc.name - result.values = @[] - - log(&"newEnum {$result.names}") - - for value in desc.value: - add(result.values, (value.name, int(value.number))) - - result.defaultValue = &"{result.names}.{result.values[0].name}" - - type EnumValue = tuple[name: string, number: int] - - sort(result.values, proc (x, y: EnumValue): int = - system.cmp(x.number, y.number) - ) - -proc newService(service: google_protobuf_ServiceDescriptorProto, - file: ProtoFile): Service = - new(result) - result.name = service.name - result.package = file.fdesc.package - result.methods = @[] - - for meth in service.fmethod: - var m: ServiceMethod - new(m) - - m.name = meth.name - m.inputType = $initNamesFromTypeName(meth.inputType) - m.outputType = $initNamesFromTypeName(meth.outputType) - m.clientStreaming = meth.clientStreaming - m.serverStreaming = meth.serverStreaming - - add(result.methods, m) - -iterator messages(desc: google_protobuf_DescriptorProto, names: Names): tuple[names: Names, desc: google_protobuf_DescriptorProto] = - var stack: seq[tuple[names: Names, desc: google_protobuf_DescriptorProto]] = @[] - - for nested in desc.nested_type: - add(stack, (names, nested)) - - while len(stack) > 0: - let (names, submsg) = pop(stack) - - let subnames = names & submsg.name - yield (subnames, submsg) - - for desc in submsg.nested_type: - add(stack, (subnames, desc)) - -iterator messages(fdesc: google_protobuf_FileDescriptorProto, names: Names): tuple[names: Names, desc: google_protobuf_DescriptorProto] = - for desc in fdesc.message_type: - let subnames = names & desc.name - yield (subnames, desc) - - for x in messages(desc, subnames): - yield x - -proc quoteReserved(name: string): string = - case name - of "type": result = &"`{name}`" - else: result = name - -proc accessor(field: Field): string = - if field.oneof != nil: - result = &"{field.oneof.name}.{quoteReserved(field.name)}" - else: - result = quoteReserved(field.name) - -proc dependencies(field: Field): seq[string] = - result = @[] - - if isMessage(field) or isEnum(field): - add(result, field.typeName) - -proc dependencies(message: Message): seq[string] = - result = @[] - - for field in message.fields: - add(result, dependencies(field)) - -proc toposort(graph: TableRef[string, HashSet[string]]): seq[string] = - type State = enum Unknown, Gray, Black - - var - enter = toSeq(keys(graph)) - state = newTable[string, State]() - order: seq[string] = @[] - - proc dfs(node: string) = - state[node] = Gray - if node in graph: - for k in graph[node]: - let sk = - if k in state: - state[k] - else: - Unknown - - if sk == Gray: - # cycle - continue - elif sk == Black: - continue - - let idx = find(enter, k) - if idx != -1: - delete(enter, idx) - - dfs(k) - insert(order, node, 0) - state[node] = Black - - while len(enter) > 0: - dfs(pop(enter)) - - result = order - -iterator sortDependencies(messages: seq[Message]): Message = - let - deps = newTable[string, HashSet[string]]() - byname = newTable[string, Message]() - - for message in messages: - deps[$message.names] = toSet(dependencies(message)) - byname[$message.names] = message - - let order = reversed(toposort(deps)) - - for name in order: - if name in byname: - yield byname[name] - -proc parseFile(name: string, fdesc: google_protobuf_FileDescriptorProto): ProtoFile = - log(&"parsing {name}") - - new(result) - - result.fdesc = fdesc - result.messages = @[] - result.enums = @[] - result.dependencies = @[] - - if hasSyntax(fdesc): - if fdesc.syntax == "proto2": - result.syntax = Syntax.Proto2 - elif fdesc.syntax == "proto3": - result.syntax = Syntax.Proto3 - else: - raise newException(Exception, "unrecognized syntax: " & fdesc.syntax) - else: - result.syntax = Syntax.Proto2 - - let basename = - if hasPackage(fdesc): - Names(split(fdesc.package, ".")) - else: - Names(@[]) - - for e in fdesc.enum_type: - add(result.enums, newEnum(basename, e)) - - for name, message in messages(fdesc, basename): - add(result.messages, newMessage(result, name, message)) - - for e in message.enum_type: - add(result.enums, newEnum(name, e)) - -proc addLine(s: var string, line: string) = - if not isNilOrWhitespace(line): - s &= line - s &= "\n" - -iterator genType(e: Enum): string = - yield &"{e.names}* {{.pure.}} = enum" - for item in e.values: - let (name, number) = item - yield indent(&"{name} = {number}", 4) - -proc fullType(field: Field): string = - if isMapEntry(field): - result = &"TableRef[{field.mapKeyType}, {field.mapValueType}]" - else: - result = field.nimTypeName - if isRepeated(field): - result = &"seq[{result}]" - -proc mapKeyField(message: Message): Field = - for field in message.fields: - if field.name == "key": - return field - -proc mapValueField(message: Message): Field = - for field in message.fields: - if field.name == "value": - return field - -iterator genType(message: Message): string = - if not isMapEntry(message): - yield &"{message.names}* = ref {message.names}Obj" - yield &"{message.names}Obj* = object of RootObj" - yield indent(&"hasField: IntSet", 4) - yield indent(&"unknownFields: seq[UnknownField]", 4) - - for field in message.fields: - if isMapEntry(field): - yield indent(&"{field.name}: TableRef[{mapKeyType(field)}, {mapValueType(field)}]", 4) - elif field.oneof == nil: - yield indent(&"{quoteReserved(field.name)}: {field.fullType}", 4) - - for oneof in message.oneofs: - yield indent(&"{oneof.name}: {message.names}_{oneof.name}_OneOf", 4) - - for oneof in message.oneofs: - yield "" - yield &"{message.names}_{oneof.name}_OneOf* {{.union.}} = object" - for field in oneof.fields: - yield indent(&"{quoteReserved(field.name)}: {field.fullType}", 4) - -iterator genNewMessageProc(msg: Message): string = - yield &"proc new{msg.names}*(): {msg.names} =" - yield indent("new(result)", 4) - yield indent("result.hasField = initIntSet()", 4) - yield indent("result.unknownFields = @[]", 4) - for field in msg.fields: - yield indent(&"result.{field.accessor} = {defaultValue(field)}", 4) - yield "" - -iterator oneofSiblings(field: Field): Field = - if field.oneof != nil: - for sibling in field.oneof.fields: - if sibling == field: - continue - yield sibling - -iterator genClearFieldProc(msg: Message, field: Field): string = - yield &"proc clear{field.name}*(message: {msg.names}) =" - yield indent(&"message.{field.accessor} = {defaultValue(field)}", 4) - var numbers: seq[int] = @[field.number] - for sibling in oneofSiblings(field): - add(numbers, sibling.number) - yield indent(&"excl(message.hasField, [{join(numbers, \", \")}])", 4) - yield "" - -iterator genHasFieldProc(msg: Message, field: Field): string = - yield &"proc has{field.name}*(message: {msg.names}): bool =" - var check = indent(&"result = contains(message.hasField, {field.number})", 4) - if isRepeated(field) or isMapEntry(field): - check = &"{check} or (len(message.{field.accessor}) > 0)" - yield check - yield "" - -iterator genSetFieldProc(msg: Message, field: Field): string = - yield &"proc set{field.name}*(message: {msg.names}, value: {field.fullType}) =" - yield indent(&"message.{field.accessor} = value", 4) - yield indent(&"incl(message.hasField, {field.number})", 4) - var numbers: seq[int] = @[] - for sibling in oneofSiblings(field): - add(numbers, sibling.number) - if len(numbers) > 0: - yield indent(&"excl(message.hasField, [{join(numbers, \", \")}])", 4) - yield "" - -iterator genAddToFieldProc(msg: Message, field: Field): string = - yield &"proc add{field.name}*(message: {msg.names}, value: {field.nimTypeName}) =" - yield indent(&"add(message.{field.name}, value)", 4) - yield indent(&"incl(message.hasField, {field.number})", 4) - yield "" - -iterator genFieldAccessorProcs(msg: Message, field: Field): string = - yield &"proc {quoteReserved(field.name)}*(message: {msg.names}): {field.fullType} {{.inline.}} =" - yield indent(&"message.{field.accessor}", 4) - yield "" - - yield &"proc `{field.name}=`*(message: {msg.names}, value: {field.fullType}) {{.inline.}} =" - yield indent(&"set{field.name}(message, value)", 4) - yield "" - -iterator genWriteMapKVProc(msg: Message): string = - let - key = mapKeyField(msg) - value = mapValueField(msg) - - yield &"proc write{msg.names}KV(stream: ProtobufStream, key: {key.fullType}, value: {value.fullType}) =" - yield indent(&"{key.writeProc}(stream, key, {key.number})", 4) - yield indent(&"{value.writeProc}(stream, value, {value.number})", 4) - yield "" - -iterator genWriteMessageProc(msg: Message): string = - yield &"proc write{msg.names}*(stream: ProtobufStream, message: {msg.names}) =" - - for field in msg.fields: - if isMapEntry(field): - yield indent(&"for key, value in message.{field.name}:", 4) - yield indent(&"writeTag(stream, {field.number}, {wiretypeStr(field)})", 8) - yield indent(&"writeVarint(stream, {field.sizeOfProc}(key, value))", 8) - yield indent(&"{field.writeProc}(stream, key, value)", 8) - elif isRepeated(field): - if field.packed: - yield indent(&"if has{field.name}(message):", 4) - yield indent(&"writeTag(stream, {field.number}, WireType.LengthDelimited)", 8) - yield indent(&"writeVarint(stream, packedFieldSize(message.{field.name}, {field.fieldTypeStr}))", 8) - yield indent(&"for value in message.{field.name}:", 8) - yield indent(&"{field.writeProc}(stream, value)", 12) - else: - yield indent(&"for value in message.{field.name}:", 4) - yield indent(&"{field.writeProc}(stream, value, {field.number})", 8) - else: - yield indent(&"if has{field.name}(message):", 4) - yield indent(&"{field.writeProc}(stream, message.{field.accessor}, {field.number})", 8) - - yield indent("writeUnknownFields(stream, message.unknownFields)", 4) - - yield "" - -iterator genReadMapKVProc(msg: Message): string = - let - key = mapKeyField(msg) - value = mapValueField(msg) - - yield &"proc read{msg.names}KV(stream: ProtobufStream, tbl: TableRef[{key.fullType}, {value.fullType}]) =" - - yield indent(&"var", 4) - yield indent(&"key: {key.fullType}", 8) - yield indent("gotKey = false", 8) - yield indent(&"value: {value.fullType}", 8) - yield indent("gotValue = false", 8) - yield indent("while not atEnd(stream):", 4) - yield indent("let", 8) - yield indent("tag = readTag(stream)", 12) - yield indent("wireType = wireType(tag)", 12) - yield indent("case fieldNumber(tag)", 8) - yield indent(&"of {key.number}:", 8) - yield indent(&"key = {key.readProc}(stream)", 12) - yield indent("gotKey = true", 12) - yield indent(&"of {value.number}:", 8) - if isMessage(value): - yield indent("let", 12) - yield indent("size = readVarint(stream)", 16) - yield indent("data = safeReadStr(stream, int(size))", 16) - yield indent("pbs = newProtobufStream(newStringStream(data))", 16) - yield indent(&"value = {value.readProc}(pbs)", 12) - else: - yield indent(&"value = {value.readProc}(stream)", 12) - yield indent("gotValue = true", 12) - yield indent("else: skipField(stream, wireType)", 8) - yield indent("if not gotKey:", 4) - yield indent(&"raise newException(Exception, \"missing key\")", 8) - yield indent("if not gotValue:", 4) - yield indent(&"raise newException(Exception, \"missing value\")", 8) - yield indent("tbl[key] = value", 4) - yield "" - -iterator genReadMessageProc(msg: Message): string = - yield &"proc read{msg.names}*(stream: ProtobufStream): {msg.names} =" - yield indent(&"result = new{msg.names}()", 4) - yield indent("while not atEnd(stream):", 4) - yield indent("let", 8) - yield indent("tag = readTag(stream)", 12) - yield indent("wireType = wireType(tag)", 12) - yield indent("case fieldNumber(tag)", 8) - yield indent("of 0:", 8) - yield indent("raise newException(InvalidFieldNumberError, \"Invalid field number: 0\")", 12) - for field in msg.fields: - let - setter = - if isRepeated(field): - &"add{field.name}" - else: - &"set{field.name}" - yield indent(&"of {field.number}:", 8) - if isRepeated(field): - if isMapEntry(field): - yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) - yield indent("let", 12) - yield indent("size = readVarint(stream)", 16) - yield indent("data = safeReadStr(stream, int(size))", 16) - yield indent("pbs = newProtobufStream(newStringStream(data))", 16) - yield indent(&"{field.readProc}(pbs, result.{field.name})", 12) - elif isNumeric(field): - yield indent(&"expectWireType(wireType, {field.wiretypeStr}, WireType.LengthDelimited)", 12) - yield indent("if wireType == WireType.LengthDelimited:", 12) - yield indent("let", 16) - yield indent("size = readVarint(stream)", 20) - yield indent("start = uint64(getPosition(stream))", 20) - yield indent("var consumed = 0'u64", 16) - yield indent("while consumed < size:", 16) - yield indent(&"{setter}(result, {field.readProc}(stream))", 20) - yield indent("consumed = uint64(getPosition(stream)) - start", 20) - yield indent("if consumed != size:", 16) - yield indent("raise newException(Exception, \"packed field size mismatch\")", 20) - yield indent("else:", 12) - yield indent(&"{setter}(result, {field.readProc}(stream))", 16) - elif isMessage(field): - yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) - yield indent(&"let data = readLengthDelimited(stream)", 12) - yield indent(&"{setter}(result, new{field.typeName}(data))", 12) - else: - yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) - yield indent(&"{setter}(result, {field.readProc}(stream))", 12) - else: - yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) - if isMessage(field): - yield indent("let data = readLengthDelimited(stream)", 12) - yield indent(&"{setter}(result, new{field.typeName}(data))", 12) - else: - yield indent(&"{setter}(result, {field.readProc}(stream))", 12) - yield indent("else: readUnknownField(stream, tag, result.unknownFields)", 8) - yield "" - -iterator genSizeOfMapKVProc(message: Message): string = - let - key = mapKeyField(message) - value = mapValueField(message) - - yield &"proc sizeOf{message.names}KV(key: {key.fullType}, value: {value.fullType}): uint64 =" - - # Key (cannot be message or other complex field) - yield indent(&"result = result + sizeOfTag({key.number}, {key.wiretypeStr})", 4) - yield indent(&"result = result + {key.sizeOfProc}(key)", 4) - - # Value - yield indent(&"result = result + sizeOfTag({value.number}, {value.wiretypeStr})", 4) - if isMessage(value): - yield indent(&"result = result + sizeOfLengthDelimited({value.sizeOfProc}(value))", 4) - else: - yield indent(&"result = result + {value.sizeOfProc}(value)", 4) - - yield "" - -iterator genSizeOfMessageProc(msg: Message): string = - yield &"proc sizeOf{msg.names}*(message: {msg.names}): uint64 =" - for field in msg.fields: - if isMapEntry(field): - yield indent(&"if has{field.name}(message):", 4) - yield indent(&"var sizeOfKV = 0'u64", 8) - yield indent(&"for key, value in message.{field.name}:", 8) - yield indent(&"sizeOfKV = sizeOfKV + {field.sizeOfProc}(key, value)", 12) - yield indent(&"result = result + sizeOfTag({field.number}, {field.wiretypeStr})", 8) - yield indent(&"result = result + sizeOfLengthDelimited(sizeOfKV)", 8) - elif isRepeated(field): - if isNumeric(field): - yield indent(&"if has{field.name}(message):", 4) - yield indent(&"result = result + sizeOfTag({field.number}, WireType.LengthDelimited)", 8) - yield indent(&"result = result + sizeOfLengthDelimited(packedFieldSize(message.{field.name}, {field.fieldTypeStr}))", 8) - else: - yield indent(&"for value in message.{field.name}:", 4) - yield indent(&"result = result + sizeOfTag({field.number}, {field.wiretypeStr})", 8) - if isMessage(field): - yield indent(&"result = result + sizeOfLengthDelimited({field.sizeOfProc}(value))", 8) - else: - yield indent(&"result = result + {field.sizeOfProc}(value)", 8) - else: - yield indent(&"if has{field.name}(message):", 4) - yield indent(&"result = result + sizeOfTag({field.number}, {field.wiretypeStr})", 8) - if isMessage(field): - yield indent(&"result = result + sizeOfLengthDelimited({field.sizeOfProc}(message.{field.accessor}))", 8) - else: - yield indent(&"result = result + {field.sizeOfProc}(message.{field.accessor})", 8) - - yield indent("for field in message.unknownFields:", 4) - yield indent("result = result + sizeOfUnknownField(field)", 8) - - yield "" - -proc shouldGenerateJsonProcs(typeName: string): bool = - const wktsHavingCustomProcs = [ - "google_protobuf_Any", - "google_protobuf_BoolValue", - "google_protobuf_BytesValue", - "google_protobuf_DoubleValue", - "google_protobuf_Duration", - "google_protobuf_FieldMask", - "google_protobuf_FloatValue", - "google_protobuf_Int32Value", - "google_protobuf_Int64Value", - "google_protobuf_ListValue", - "google_protobuf_NullValue", - "google_protobuf_StringValue", - "google_protobuf_Struct", - "google_protobuf_Timestamp", - "google_protobuf_UInt32Value", - "google_protobuf_UInt64Value", - "google_protobuf_Value", - ] - - return typeName notin wktsHavingCustomProcs - -iterator genMessageToJsonProc(msg: Message): string = - yield &"proc toJson*(message: {msg.names}): JsonNode =" - yield indent("result = newJObject()", 4) - - proc fieldToJson(field: Field, v: string): string = - case field.ftype - of google_protobuf_FieldDescriptorProto_Type.TypeMessage, - google_protobuf_FieldDescriptorProto_Type.TypeInt64, - google_protobuf_FieldDescriptorProto_Type.TypeUInt64, - google_protobuf_FieldDescriptorProto_Type.TypeSFixed64, - google_protobuf_FieldDescriptorProto_Type.TypeFixed64, - google_protobuf_FieldDescriptorProto_Type.TypeDouble, - google_protobuf_FieldDescriptorProto_Type.TypeFloat: - result = &"toJson({v})" - of google_protobuf_FieldDescriptorProto_Type.TypeEnum: - result = &"%(${v})" - else: - result = &"%{v}" - - for field in msg.fields: - yield indent(&"if has{field.name}(message):", 4) - if isMapEntry(field): - yield indent("let obj = newJObject()", 8) - yield indent(&"for key, value in message.{field.name}:", 8) - let f = mapValueField(field) - let j = fieldToJson(f, "value") - yield indent(&"obj[$key] = {j}", 12) - yield indent(&"result[\"{field.jsonName}\"] = obj", 8) - elif isRepeated(field): - yield indent(&"let arr = newJArray()", 8) - yield indent(&"for value in message.{field.name}:", 8) - let v = fieldToJson(field, "value") - yield indent(&"add(arr, {v})", 12) - yield indent(&"result[\"{field.jsonName}\"] = arr", 8) - else: - let v = fieldToJson(field, &"message.{field.name}") - yield indent(&"result[\"{field.jsonName}\"] = {v}", 8) - - yield "" - -iterator genMessageProcForwards(msg: Message): string = - # TODO: can we be more intelligent and only forward declare the minimum set - # of procs? - if not isMapEntry(msg): - yield &"proc new{msg.names}*(): {msg.names}" - yield &"proc new{msg.names}*(data: string): {msg.names}" - yield &"proc write{msg.names}*(stream: ProtobufStream, message: {msg.names})" - yield &"proc read{msg.names}*(stream: ProtobufStream): {msg.names}" - yield &"proc sizeOf{msg.names}*(message: {msg.names}): uint64" - if shouldGenerateJsonProcs($msg.names): - yield &"proc toJson*(message: {msg.names}): JsonNode" - else: - let - key = mapKeyField(msg) - value = mapValueField(msg) - - yield &"proc write{msg.names}KV(stream: ProtobufStream, key: {key.fullType}, value: {value.fullType})" - yield &"proc read{msg.names}KV(stream: ProtobufStream, tbl: TableRef[{key.fullType}, {value.fullType}])" - yield &"proc sizeOf{msg.names}KV(key: {key.fullType}, value: {value.fullType}): uint64" - -iterator genProcs(msg: Message): string = - if isMapEntry(msg): - for line in genSizeOfMapKVProc(msg): yield line - for line in genWriteMapKVProc(msg): yield line - for line in genReadMapKVProc(msg): yield line - else: - for line in genNewMessageProc(msg): yield line - - for field in msg.fields: - for line in genClearFieldProc(msg, field): yield line - for line in genHasFieldProc(msg, field): yield line - for line in genSetFieldProc(msg, field): yield line - - if isRepeated(field) and not isMapEntry(field): - for line in genAddToFieldProc(msg, field): yield line - - for line in genFieldAccessorProcs(msg, field): yield line - - for line in genSizeOfMessageProc(msg): yield line - for line in genWriteMessageProc(msg): yield line - for line in genReadMessageProc(msg): yield line - - if shouldGenerateJsonProcs($msg.names): - for line in genMessageToJsonProc(msg): yield line - - yield &"proc serialize*(message: {msg.names}): string =" - yield indent("let", 4) - yield indent("ss = newStringStream()", 8) - yield indent("pbs = newProtobufStream(ss)", 8) - yield indent(&"write{msg.names}(pbs, message)", 4) - yield indent("result = ss.data", 4) - yield "" - - yield &"proc new{msg.names}*(data: string): {msg.names} =" - yield indent("let", 4) - yield indent("ss = newStringStream(data)", 8) - yield indent("pbs = newProtobufStream(ss)", 8) - yield indent(&"result = read{msg.names}(pbs)", 4) - yield "" - -proc processFile(fdesc: google_protobuf_FileDescriptorProto, - otherFiles: TableRef[string, ProtoFile], - serviceGenerator: ServiceGenerator): ProcessedFile = - var (dir, name, _) = splitFile(fdesc.name) - var pbfilename = (dir / name) & "_pb.nim" - - log(&"processing {fdesc.name}: {pbfilename}") - - new(result) - result.name = pbfilename - result.data = "" - - let parsed = parseFile(fdesc.name, fdesc) - - for dep in fdesc.dependency: - if dep in otherFiles: - add(parsed.dependencies, otherFiles[dep]) - - var hasMaps = false - for message in parsed.messages: - let tmp = fixMapEntry(parsed, message) - if tmp: - hasMaps = true - - addLine(result.data, "# Generated by protoc_gen_nim. Do not edit!") - addLine(result.data, "") - addLine(result.data, "import base64") - addLine(result.data, "import intsets") - addLine(result.data, "import json") - if hasMaps: - addLine(result.data, "import tables") - addLine(result.data, "export tables") - addLine(result.data, "") - addLine(result.data, "import nimpb/nimpb") - addLine(result.data, "import nimpb/json as nimpb_json") - addLine(result.data, "") - - for dep in fdesc.dependency: - var (dir, depname, _) = splitFile(dep) - - if dir == "google/protobuf": - dir = "nimpb/wkt" - - var deppbname = (dir / depname) & "_pb" - addLine(result.data, &"import {deppbname}") - - if hasDependency(fdesc): - addLine(result.data, "") - - addLine(result.data, "type") - - for e in parsed.enums: - for line in genType(e): addLine(result.data, indent(line, 4)) - - for message in parsed.messages: - for line in genType(message): addLine(result.data, indent(line, 4)) - - addLine(result.data, "") - - for message in sortDependencies(parsed.messages): - for line in genMessageProcForwards(message): - addLine(result.data, line) - addLine(result.data, "") - - for message in sortDependencies(parsed.messages): - for line in genProcs(message): - addLine(result.data, line) - addLine(result.data, "") - - if serviceGenerator != nil: - for serviceDesc in fdesc.service: - let service = newService(serviceDesc, parsed) - addLine(result.data, "") - add(result.data, serviceGenerator(service)) - -proc processFileDescriptorSet*(filename: string, - outdir: string, - protos: openArray[string], - serviceGenerator: ServiceGenerator) = - let s = newProtobufStream(newFileStream(filename, fmRead)) - - let fileSet = readgoogle_protobuf_FileDescriptorSet(s) - - var otherFiles = newTable[string, ProtoFile]() - - for file in fileSet.file: - add(otherFiles, file.name, parseFile(file.name, file)) - - # Protoc does not provide full paths for files in FileDescriptorSet. So it - # can be that fileSet.file.name might match any file in protos. So we will - # try to match the bare name and the named joined with the path of the first - # file. - let basePath = parentDir(protos[0]) - - for file in fileSet.file: - if (file.name in protos) or ((basePath / file.name) in protos): - let processedFile = processFile(file, otherFiles, serviceGenerator) - - let fullPath = outdir / processedFile.name - - createDir(parentDir(fullPath)) - - writeFile(fullPath, processedFile.data) -- cgit v1.2.3 From c872f7d65b74f5f46a85a8df927af86c5178ad8a Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Wed, 11 Apr 2018 20:48:33 +0300 Subject: Rename to nimpb_protoc --- nimpb_build.nimble | 14 - nimpb_protoc.nimble | 14 + src/nimpb_build.nim | 50 -- src/nimpb_buildpkg/protobuf/LICENSE | 42 - .../protobuf/include/google/protobuf/any.proto | 149 ---- .../protobuf/include/google/protobuf/api.proto | 210 ----- .../include/google/protobuf/compiler/plugin.proto | 167 ---- .../include/google/protobuf/descriptor.proto | 872 --------------------- .../include/google/protobuf/duration.proto | 117 --- .../protobuf/include/google/protobuf/empty.proto | 52 -- .../include/google/protobuf/field_mask.proto | 252 ------ .../include/google/protobuf/source_context.proto | 48 -- .../protobuf/include/google/protobuf/struct.proto | 96 --- .../include/google/protobuf/timestamp.proto | 133 ---- .../protobuf/include/google/protobuf/type.proto | 187 ----- .../include/google/protobuf/wrappers.proto | 118 --- src/nimpb_buildpkg/protobuf/protoc-linux-aarch_64 | Bin 4413084 -> 0 bytes src/nimpb_buildpkg/protobuf/protoc-linux-x86_32 | Bin 4132368 -> 0 bytes src/nimpb_buildpkg/protobuf/protoc-linux-x86_64 | Bin 4433736 -> 0 bytes src/nimpb_buildpkg/protobuf/protoc-osx-x86_64 | Bin 7514608 -> 0 bytes src/nimpb_buildpkg/protobuf/protoc-win32.exe | Bin 4035584 -> 0 bytes src/nimpb_protoc.nim | 50 ++ src/nimpb_protocpkg/protobuf/LICENSE | 42 + .../protobuf/include/google/protobuf/any.proto | 149 ++++ .../protobuf/include/google/protobuf/api.proto | 210 +++++ .../include/google/protobuf/compiler/plugin.proto | 167 ++++ .../include/google/protobuf/descriptor.proto | 872 +++++++++++++++++++++ .../include/google/protobuf/duration.proto | 117 +++ .../protobuf/include/google/protobuf/empty.proto | 52 ++ .../include/google/protobuf/field_mask.proto | 252 ++++++ .../include/google/protobuf/source_context.proto | 48 ++ .../protobuf/include/google/protobuf/struct.proto | 96 +++ .../include/google/protobuf/timestamp.proto | 133 ++++ .../protobuf/include/google/protobuf/type.proto | 187 +++++ .../include/google/protobuf/wrappers.proto | 118 +++ src/nimpb_protocpkg/protobuf/protoc-linux-aarch_64 | Bin 0 -> 4413084 bytes src/nimpb_protocpkg/protobuf/protoc-linux-x86_32 | Bin 0 -> 4132368 bytes src/nimpb_protocpkg/protobuf/protoc-linux-x86_64 | Bin 0 -> 4433736 bytes src/nimpb_protocpkg/protobuf/protoc-osx-x86_64 | Bin 0 -> 7514608 bytes src/nimpb_protocpkg/protobuf/protoc-win32.exe | Bin 0 -> 4035584 bytes 40 files changed, 2507 insertions(+), 2507 deletions(-) delete mode 100644 nimpb_build.nimble create mode 100644 nimpb_protoc.nimble delete mode 100644 src/nimpb_build.nim delete mode 100644 src/nimpb_buildpkg/protobuf/LICENSE delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/any.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/api.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/compiler/plugin.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/descriptor.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/duration.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/empty.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/field_mask.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/source_context.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/struct.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/timestamp.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/type.proto delete mode 100644 src/nimpb_buildpkg/protobuf/include/google/protobuf/wrappers.proto delete mode 100755 src/nimpb_buildpkg/protobuf/protoc-linux-aarch_64 delete mode 100755 src/nimpb_buildpkg/protobuf/protoc-linux-x86_32 delete mode 100755 src/nimpb_buildpkg/protobuf/protoc-linux-x86_64 delete mode 100755 src/nimpb_buildpkg/protobuf/protoc-osx-x86_64 delete mode 100755 src/nimpb_buildpkg/protobuf/protoc-win32.exe create mode 100644 src/nimpb_protoc.nim create mode 100644 src/nimpb_protocpkg/protobuf/LICENSE create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/any.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/api.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/compiler/plugin.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/descriptor.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/duration.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/empty.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/field_mask.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/source_context.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/struct.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/timestamp.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/type.proto create mode 100644 src/nimpb_protocpkg/protobuf/include/google/protobuf/wrappers.proto create mode 100755 src/nimpb_protocpkg/protobuf/protoc-linux-aarch_64 create mode 100755 src/nimpb_protocpkg/protobuf/protoc-linux-x86_32 create mode 100755 src/nimpb_protocpkg/protobuf/protoc-linux-x86_64 create mode 100755 src/nimpb_protocpkg/protobuf/protoc-osx-x86_64 create mode 100755 src/nimpb_protocpkg/protobuf/protoc-win32.exe diff --git a/nimpb_build.nimble b/nimpb_build.nimble deleted file mode 100644 index 5808482..0000000 --- a/nimpb_build.nimble +++ /dev/null @@ -1,14 +0,0 @@ -# Package - -version = "0.1.0" -author = "Oskari Timperi" -description = "Protocol Buffers compiler for nimpb" -license = "MIT" -srcDir = "src" - -# Dependencies - -requires "nim >= 0.18.0" - -task fetch, "fetch prebuilt protoc binaries": - exec "nim c -d:ssl -r fetch" diff --git a/nimpb_protoc.nimble b/nimpb_protoc.nimble new file mode 100644 index 0000000..5808482 --- /dev/null +++ b/nimpb_protoc.nimble @@ -0,0 +1,14 @@ +# Package + +version = "0.1.0" +author = "Oskari Timperi" +description = "Protocol Buffers compiler for nimpb" +license = "MIT" +srcDir = "src" + +# Dependencies + +requires "nim >= 0.18.0" + +task fetch, "fetch prebuilt protoc binaries": + exec "nim c -d:ssl -r fetch" diff --git a/src/nimpb_build.nim b/src/nimpb_build.nim deleted file mode 100644 index 9a3f018..0000000 --- a/src/nimpb_build.nim +++ /dev/null @@ -1,50 +0,0 @@ -import os -import strformat - -when defined(windows): - const compilerId = "win32" -elif defined(linux): - when defined(i386): - const arch = "x86_32" - elif defined(amd64): - const arch = "x86_64" - elif defined(arm64): - const arch = "aarch_64" - else: - {.fatal:"unsupported architecture".} - const compilerId = "linux-" & arch -elif defined(macosx): - when defined(amd64): - const arch = "x86_64" - else: - {.fatal:"unsupported architecture".} - const compilerId = "osx-" & arch -else: - {.fatal:"unsupported platform".} - -when defined(windows): - const exeSuffix = ".exe" -else: - const exeSuffix = "" - -let - paths = @[ - # getAppDir() / "src" / "nimpb_buildpkg" / "protobuf", - # getAppDir() / "nimpb_buildpkg" / "protobuf", - parentDir(currentSourcePath()) / "nimpb_buildpkg" / "protobuf", - ] - -proc getCompilerPath*(): string = - let - compilerName = &"protoc-{compilerId}{exeSuffix}" - - for path in paths: - if fileExists(path / compilerName): - return path / compilerName - - raise newException(Exception, &"{compilerName} not found!") - -proc getProtoIncludeDir*(): string = - for path in paths: - if fileExists(path / "include"): - return path / "include" diff --git a/src/nimpb_buildpkg/protobuf/LICENSE b/src/nimpb_buildpkg/protobuf/LICENSE deleted file mode 100644 index f028c82..0000000 --- a/src/nimpb_buildpkg/protobuf/LICENSE +++ /dev/null @@ -1,42 +0,0 @@ -This license applies to all parts of Protocol Buffers except the following: - - - Atomicops support for generic gcc, located in - src/google/protobuf/stubs/atomicops_internals_generic_gcc.h. - This file is copyrighted by Red Hat Inc. - - - Atomicops support for AIX/POWER, located in - src/google/protobuf/stubs/atomicops_internals_power.h. - This file is copyrighted by Bloomberg Finance LP. - -Copyright 2014, Google Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Code generated by the Protocol Buffer compiler is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/any.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/any.proto deleted file mode 100644 index c748667..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/any.proto +++ /dev/null @@ -1,149 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/any"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := ptypes.MarshalAny(foo) -// ... -// foo := &pb.Foo{} -// if err := ptypes.UnmarshalAny(any, foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. - // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: - // - // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/api.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/api.proto deleted file mode 100644 index f37ee2f..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/api.proto +++ /dev/null @@ -1,210 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/source_context.proto"; -import "google/protobuf/type.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "ApiProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/api;api"; - -// Api is a light-weight descriptor for an API Interface. -// -// Interfaces are also described as "protocol buffer services" in some contexts, -// such as by the "service" keyword in a .proto file, but they are different -// from API Services, which represent a concrete implementation of an interface -// as opposed to simply a description of methods and bindings. They are also -// sometimes simply referred to as "APIs" in other contexts, such as the name of -// this message itself. See https://cloud.google.com/apis/design/glossary for -// detailed terminology. -message Api { - - // The fully qualified name of this interface, including package name - // followed by the interface's simple name. - string name = 1; - - // The methods of this interface, in unspecified order. - repeated Method methods = 2; - - // Any metadata attached to the interface. - repeated Option options = 3; - - // A version string for this interface. If specified, must have the form - // `major-version.minor-version`, as in `1.10`. If the minor version is - // omitted, it defaults to zero. If the entire version field is empty, the - // major version is derived from the package name, as outlined below. If the - // field is not empty, the version in the package name will be verified to be - // consistent with what is provided here. - // - // The versioning schema uses [semantic - // versioning](http://semver.org) where the major version number - // indicates a breaking change and the minor version an additive, - // non-breaking change. Both version numbers are signals to users - // what to expect from different versions, and should be carefully - // chosen based on the product plan. - // - // The major version is also reflected in the package name of the - // interface, which must end in `v`, as in - // `google.feature.v1`. For major versions 0 and 1, the suffix can - // be omitted. Zero major versions must only be used for - // experimental, non-GA interfaces. - // - // - string version = 4; - - // Source context for the protocol buffer service represented by this - // message. - SourceContext source_context = 5; - - // Included interfaces. See [Mixin][]. - repeated Mixin mixins = 6; - - // The source syntax of the service. - Syntax syntax = 7; -} - -// Method represents a method of an API interface. -message Method { - - // The simple name of this method. - string name = 1; - - // A URL of the input message type. - string request_type_url = 2; - - // If true, the request is streamed. - bool request_streaming = 3; - - // The URL of the output message type. - string response_type_url = 4; - - // If true, the response is streamed. - bool response_streaming = 5; - - // Any metadata attached to the method. - repeated Option options = 6; - - // The source syntax of this method. - Syntax syntax = 7; -} - -// Declares an API Interface to be included in this interface. The including -// interface must redeclare all the methods from the included interface, but -// documentation and options are inherited as follows: -// -// - If after comment and whitespace stripping, the documentation -// string of the redeclared method is empty, it will be inherited -// from the original method. -// -// - Each annotation belonging to the service config (http, -// visibility) which is not set in the redeclared method will be -// inherited. -// -// - If an http annotation is inherited, the path pattern will be -// modified as follows. Any version prefix will be replaced by the -// version of the including interface plus the [root][] path if -// specified. -// -// Example of a simple mixin: -// -// package google.acl.v1; -// service AccessControl { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v1/{resource=**}:getAcl"; -// } -// } -// -// package google.storage.v2; -// service Storage { -// rpc GetAcl(GetAclRequest) returns (Acl); -// -// // Get a data record. -// rpc GetData(GetDataRequest) returns (Data) { -// option (google.api.http).get = "/v2/{resource=**}"; -// } -// } -// -// Example of a mixin configuration: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// -// The mixin construct implies that all methods in `AccessControl` are -// also declared with same name and request/response types in -// `Storage`. A documentation generator or annotation processor will -// see the effective `Storage.GetAcl` method after inherting -// documentation and annotations as follows: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/{resource=**}:getAcl"; -// } -// ... -// } -// -// Note how the version in the path pattern changed from `v1` to `v2`. -// -// If the `root` field in the mixin is specified, it should be a -// relative path under which inherited HTTP paths are placed. Example: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// root: acls -// -// This implies the following inherited HTTP annotation: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; -// } -// ... -// } -message Mixin { - // The fully qualified name of the interface which is included. - string name = 1; - - // If non-empty specifies a path under which inherited HTTP paths - // are rooted. - string root = 2; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/compiler/plugin.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/compiler/plugin.proto deleted file mode 100644 index 5b55745..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/compiler/plugin.proto +++ /dev/null @@ -1,167 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// -// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to -// change. -// -// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is -// just a program that reads a CodeGeneratorRequest from stdin and writes a -// CodeGeneratorResponse to stdout. -// -// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead -// of dealing with the raw protocol defined here. -// -// A plugin executable needs only to be placed somewhere in the path. The -// plugin should be named "protoc-gen-$NAME", and will then be used when the -// flag "--${NAME}_out" is passed to protoc. - -syntax = "proto2"; -package google.protobuf.compiler; -option java_package = "com.google.protobuf.compiler"; -option java_outer_classname = "PluginProtos"; - -option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go"; - -import "google/protobuf/descriptor.proto"; - -// The version number of protocol compiler. -message Version { - optional int32 major = 1; - optional int32 minor = 2; - optional int32 patch = 3; - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - optional string suffix = 4; -} - -// An encoded CodeGeneratorRequest is written to the plugin's stdin. -message CodeGeneratorRequest { - // The .proto files that were explicitly listed on the command-line. The - // code generator should generate code only for these files. Each file's - // descriptor will be included in proto_file, below. - repeated string file_to_generate = 1; - - // The generator parameter passed on the command-line. - optional string parameter = 2; - - // FileDescriptorProtos for all files in files_to_generate and everything - // they import. The files will appear in topological order, so each file - // appears before any file that imports it. - // - // protoc guarantees that all proto_files will be written after - // the fields above, even though this is not technically guaranteed by the - // protobuf wire format. This theoretically could allow a plugin to stream - // in the FileDescriptorProtos and handle them one by one rather than read - // the entire set into memory at once. However, as of this writing, this - // is not similarly optimized on protoc's end -- it will store all fields in - // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - repeated FileDescriptorProto proto_file = 15; - - // The version number of protocol compiler. - optional Version compiler_version = 3; - -} - -// The plugin writes an encoded CodeGeneratorResponse to stdout. -message CodeGeneratorResponse { - // Error message. If non-empty, code generation failed. The plugin process - // should exit with status code zero even if it reports an error in this way. - // - // This should be used to indicate errors in .proto files which prevent the - // code generator from generating correct code. Errors which indicate a - // problem in protoc itself -- such as the input CodeGeneratorRequest being - // unparseable -- should be reported by writing a message to stderr and - // exiting with a non-zero status code. - optional string error = 1; - - // Represents a single generated file. - message File { - // The file name, relative to the output directory. The name must not - // contain "." or ".." components and must be relative, not be absolute (so, - // the file cannot lie outside the output directory). "/" must be used as - // the path separator, not "\". - // - // If the name is omitted, the content will be appended to the previous - // file. This allows the generator to break large files into small chunks, - // and allows the generated text to be streamed back to protoc so that large - // files need not reside completely in memory at one time. Note that as of - // this writing protoc does not optimize for this -- it will read the entire - // CodeGeneratorResponse before writing files to disk. - optional string name = 1; - - // If non-empty, indicates that the named file should already exist, and the - // content here is to be inserted into that file at a defined insertion - // point. This feature allows a code generator to extend the output - // produced by another code generator. The original generator may provide - // insertion points by placing special annotations in the file that look - // like: - // @@protoc_insertion_point(NAME) - // The annotation can have arbitrary text before and after it on the line, - // which allows it to be placed in a comment. NAME should be replaced with - // an identifier naming the point -- this is what other generators will use - // as the insertion_point. Code inserted at this point will be placed - // immediately above the line containing the insertion point (thus multiple - // insertions to the same point will come out in the order they were added). - // The double-@ is intended to make it unlikely that the generated code - // could contain things that look like insertion points by accident. - // - // For example, the C++ code generator places the following line in the - // .pb.h files that it generates: - // // @@protoc_insertion_point(namespace_scope) - // This line appears within the scope of the file's package namespace, but - // outside of any particular class. Another plugin can then specify the - // insertion_point "namespace_scope" to generate additional classes or - // other declarations that should be placed in this scope. - // - // Note that if the line containing the insertion point begins with - // whitespace, the same whitespace will be added to every line of the - // inserted text. This is useful for languages like Python, where - // indentation matters. In these languages, the insertion point comment - // should be indented the same amount as any inserted code will need to be - // in order to work correctly in that context. - // - // The code generator that generates the initial file and the one which - // inserts into it must both run as part of a single invocation of protoc. - // Code generators are executed in the order in which they appear on the - // command line. - // - // If |insertion_point| is present, |name| must also be present. - optional string insertion_point = 2; - - // The file contents. - optional string content = 15; - } - repeated File file = 15; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/descriptor.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/descriptor.proto deleted file mode 100644 index 8697a50..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/descriptor.proto +++ /dev/null @@ -1,872 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - - -syntax = "proto2"; - -package google.protobuf; -option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { - repeated FileDescriptorProto file = 1; -} - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; - - // The syntax of the proto file. - // The supported values are "proto2" and "proto3". - optional string syntax = 12; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; - optional int32 end = 2; - - optional ExtensionRangeOptions options = 3; - } - repeated ExtensionRange extension_range = 5; - - repeated OneofDescriptorProto oneof_decl = 8; - - optional MessageOptions options = 7; - - // Range of reserved tag numbers. Reserved tag numbers may not be used by - // fields or extension ranges in the same message. Reserved ranges may - // not overlap. - message ReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - } - repeated ReservedRange reserved_range = 9; - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - repeated string reserved_name = 10; -} - -message ExtensionRangeOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - }; - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REQUIRED = 2; - LABEL_REPEATED = 3; - }; - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - // TODO(kenton): Base-64 encode? - optional string default_value = 7; - - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - optional int32 oneof_index = 9; - - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - optional string json_name = 10; - - optional FieldOptions options = 8; -} - -// Describes a oneof. -message OneofDescriptorProto { - optional string name = 1; - optional OneofOptions options = 2; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; - - // Range of reserved numeric values. Reserved values may not be used by - // entries in the same enum. Reserved ranges may not overlap. - // - // Note that this is distinct from DescriptorProto.ReservedRange in that it - // is inclusive such that it can appropriately represent the entire int32 - // domain. - message EnumReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Inclusive. - } - - // Range of reserved numeric values. Reserved numeric values may not be used - // by enum values in the same enum declaration. Reserved ranges may not - // overlap. - repeated EnumReservedRange reserved_range = 4; - - // Reserved enum value names, which may not be reused. A given name may only - // be reserved once. - repeated string reserved_name = 5; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; - - // Identifies if client streams multiple client messages - optional bool client_streaming = 5 [default=false]; - // Identifies if server streams multiple server messages - optional bool server_streaming = 6 [default=false]; -} - - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Objective-C plugin) and your project website (if available) -- there's no -// need to explain how you intend to use them. Usually you only need one -// extension number. You can declare multiple options with only one extension -// number by putting them in a sub-message. See the Custom Options section of -// the docs for examples: -// https://developers.google.com/protocol-buffers/docs/proto#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - - // If set, all the classes from the .proto file are wrapped in a single - // outer class with the given name. This applies to both Proto1 - // (equivalent to the old "--one_java_file" option) and Proto2 (where - // a .proto always translates to a single class, but you may want to - // explicitly choose the class name). - optional string java_outer_classname = 8; - - // If set true, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the outer class - // named by java_outer_classname. However, the outer class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [default=false]; - - // This option does nothing. - optional bool java_generate_equals_and_hash = 20 [deprecated=true]; - - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 - // byte sequence to a string field. - // Message reflection will do the same. - // However, an extension field still accepts non-UTF-8 byte sequences. - // This option has no effect on when used with the lite runtime. - optional bool java_string_check_utf8 = 27 [default=false]; - - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [default=SPEED]; - - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - optional string go_package = 11; - - - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [default=false]; - optional bool java_generic_services = 17 [default=false]; - optional bool py_generic_services = 18 [default=false]; - optional bool php_generic_services = 42 [default=false]; - - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - optional bool deprecated = 23 [default=false]; - - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - optional bool cc_enable_arenas = 31 [default=false]; - - - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - optional string objc_class_prefix = 36; - - // Namespace for generated classes; defaults to the package. - optional string csharp_namespace = 37; - - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - optional string swift_prefix = 39; - - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - optional string php_class_prefix = 40; - - // Use this option to change the namespace of php generated classes. Default - // is empty. When this option is empty, the package name will be used for - // determining the namespace. - optional string php_namespace = 41; - - // The parser stores options it doesn't recognize here. - // See the documentation for the "Options" section above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. - // See the documentation for the "Options" section above. - extensions 1000 to max; - - reserved 38; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [default=false]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [default=false]; - - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - optional bool deprecated = 3 [default=false]; - - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // map map_field = 1; - // The parsed descriptor looks like: - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementions still need to work as - // if the field is a repeated message field. - // - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - optional bool map_entry = 7; - - reserved 8; // javalite_serializable - reserved 9; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is not yet implemented in the open source - // release -- sorry, we'll try to include it in a future version! - optional CType ctype = 1 [default = STRING]; - enum CType { - // Default mode. - STRING = 0; - - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. - optional bool packed = 2; - - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - // is represented as JavaScript string, which avoids loss of precision that - // can happen when a large value is converted to a floating point JavaScript. - // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - // use the JavaScript "number" type. The behavior of the default option - // JS_NORMAL is implementation dependent. - // - // This option is an enum to permit additional types to be added, e.g. - // goog.math.Integer. - optional JSType jstype = 6 [default = JS_NORMAL]; - enum JSType { - // Use the default type. - JS_NORMAL = 0; - - // Use JavaScript strings. - JS_STRING = 1; - - // Use JavaScript numbers. - JS_NUMBER = 2; - } - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - optional bool lazy = 5 [default=false]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [default=false]; - - // For Google-internal migration only. Do not use. - optional bool weak = 10 [default=false]; - - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 4; // removed jtype -} - -message OneofOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to true to allow mapping different tag names to the same - // value. - optional bool allow_alias = 2; - - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - optional bool deprecated = 3 [default=false]; - - reserved 5; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - optional bool deprecated = 1 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - optional bool deprecated = 33 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - optional bool deprecated = 33 [default=false]; - - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0; - NO_SIDE_EFFECTS = 1; // implies idempotent - IDEMPOTENT = 2; // idempotent, but may have side effects - } - optional IdempotencyLevel idempotency_level = - 34 [default=IDEMPOTENCY_UNKNOWN]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - // "foo.(bar.baz).qux". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendent. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition. For - // example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - repeated int32 path = 1 [packed=true]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [packed=true]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to qux. - // // - // // Another line attached to qux. - // optional double qux = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to qux or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - optional string leading_comments = 3; - optional string trailing_comments = 4; - repeated string leading_detached_comments = 6; - } -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -message GeneratedCodeInfo { - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - repeated Annotation annotation = 1; - message Annotation { - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - repeated int32 path = 1 [packed=true]; - - // Identifies the filesystem path to the original source .proto. - optional string source_file = 2; - - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - optional int32 begin = 3; - - // Identifies the ending offset in bytes in the generated code that - // relates to the identified offset. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - optional int32 end = 4; - } -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/duration.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/duration.proto deleted file mode 100644 index 975fce4..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/duration.proto +++ /dev/null @@ -1,117 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/duration"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DurationProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Duration represents a signed, fixed-length span of time represented -// as a count of seconds and fractions of seconds at nanosecond -// resolution. It is independent of any calendar and concepts like "day" -// or "month". It is related to Timestamp in that the difference between -// two Timestamp values is a Duration and it can be added or subtracted -// from a Timestamp. Range is approximately +-10,000 years. -// -// # Examples -// -// Example 1: Compute Duration from two Timestamps in pseudo code. -// -// Timestamp start = ...; -// Timestamp end = ...; -// Duration duration = ...; -// -// duration.seconds = end.seconds - start.seconds; -// duration.nanos = end.nanos - start.nanos; -// -// if (duration.seconds < 0 && duration.nanos > 0) { -// duration.seconds += 1; -// duration.nanos -= 1000000000; -// } else if (durations.seconds > 0 && duration.nanos < 0) { -// duration.seconds -= 1; -// duration.nanos += 1000000000; -// } -// -// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. -// -// Timestamp start = ...; -// Duration duration = ...; -// Timestamp end = ...; -// -// end.seconds = start.seconds + duration.seconds; -// end.nanos = start.nanos + duration.nanos; -// -// if (end.nanos < 0) { -// end.seconds -= 1; -// end.nanos += 1000000000; -// } else if (end.nanos >= 1000000000) { -// end.seconds += 1; -// end.nanos -= 1000000000; -// } -// -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// -// -message Duration { - - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/empty.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/empty.proto deleted file mode 100644 index 03cacd2..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/empty.proto +++ /dev/null @@ -1,52 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/empty"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "EmptyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -// The JSON representation for `Empty` is empty JSON object `{}`. -message Empty {} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/field_mask.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/field_mask.proto deleted file mode 100644 index eb96ba0..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/field_mask.proto +++ /dev/null @@ -1,252 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "FieldMaskProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask"; - -// `FieldMask` represents a set of symbolic field paths, for example: -// -// paths: "f.a" -// paths: "f.b.d" -// -// Here `f` represents a field in some root message, `a` and `b` -// fields in the message found in `f`, and `d` a field found in the -// message in `f.b`. -// -// Field masks are used to specify a subset of fields that should be -// returned by a get operation or modified by an update operation. -// Field masks also have a custom JSON encoding (see below). -// -// # Field Masks in Projections -// -// When used in the context of a projection, a response message or -// sub-message is filtered by the API to only contain those fields as -// specified in the mask. For example, if the mask in the previous -// example is applied to a response message as follows: -// -// f { -// a : 22 -// b { -// d : 1 -// x : 2 -// } -// y : 13 -// } -// z: 8 -// -// The result will not contain specific values for fields x,y and z -// (their value will be set to the default, and omitted in proto text -// output): -// -// -// f { -// a : 22 -// b { -// d : 1 -// } -// } -// -// A repeated field is not allowed except at the last position of a -// paths string. -// -// If a FieldMask object is not present in a get operation, the -// operation applies to all fields (as if a FieldMask of all fields -// had been specified). -// -// Note that a field mask does not necessarily apply to the -// top-level response message. In case of a REST get operation, the -// field mask applies directly to the response, but in case of a REST -// list operation, the mask instead applies to each individual message -// in the returned resource list. In case of a REST custom method, -// other definitions may be used. Where the mask applies will be -// clearly documented together with its declaration in the API. In -// any case, the effect on the returned resource/resources is required -// behavior for APIs. -// -// # Field Masks in Update Operations -// -// A field mask in update operations specifies which fields of the -// targeted resource are going to be updated. The API is required -// to only change the values of the fields as specified in the mask -// and leave the others untouched. If a resource is passed in to -// describe the updated values, the API ignores the values of all -// fields not covered by the mask. -// -// If a repeated field is specified for an update operation, the existing -// repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a `paths` -// string. -// -// If a sub-message is specified in the last position of the field mask for an -// update operation, then the existing sub-message in the target resource is -// overwritten. Given the target message: -// -// f { -// b { -// d : 1 -// x : 2 -// } -// c : 1 -// } -// -// And an update message: -// -// f { -// b { -// d : 10 -// } -// } -// -// then if the field mask is: -// -// paths: "f.b" -// -// then the result will be: -// -// f { -// b { -// d : 10 -// } -// c : 1 -// } -// -// However, if the update mask was: -// -// paths: "f.b.d" -// -// then the result would be: -// -// f { -// b { -// d : 10 -// x : 2 -// } -// c : 1 -// } -// -// In order to reset a field's value to the default, the field must -// be in the mask and set to the default value in the provided resource. -// Hence, in order to reset all fields of a resource, provide a default -// instance of the resource and set all fields in the mask, or do -// not provide a mask as described below. -// -// If a field mask is not present on update, the operation applies to -// all fields (as if a field mask of all fields has been specified). -// Note that in the presence of schema evolution, this may mean that -// fields the client does not know and has therefore not filled into -// the request will be reset to their default. If this is unwanted -// behavior, a specific service may require a client to always specify -// a field mask, producing an error if not. -// -// As with get operations, the location of the resource which -// describes the updated values in the request message depends on the -// operation kind. In any case, the effect of the field mask is -// required to be honored by the API. -// -// ## Considerations for HTTP REST -// -// The HTTP kind of an update operation which uses a field mask must -// be set to PATCH instead of PUT in order to satisfy HTTP semantics -// (PUT must only be used for full updates). -// -// # JSON Encoding of Field Masks -// -// In JSON, a field mask is encoded as a single string where paths are -// separated by a comma. Fields name in each path are converted -// to/from lower-camel naming conventions. -// -// As an example, consider the following message declarations: -// -// message Profile { -// User user = 1; -// Photo photo = 2; -// } -// message User { -// string display_name = 1; -// string address = 2; -// } -// -// In proto a field mask for `Profile` may look as such: -// -// mask { -// paths: "user.display_name" -// paths: "photo" -// } -// -// In JSON, the same mask is represented as below: -// -// { -// mask: "user.displayName,photo" -// } -// -// # Field Masks and Oneof Fields -// -// Field masks treat fields in oneofs just as regular fields. Consider the -// following message: -// -// message SampleMessage { -// oneof test_oneof { -// string name = 4; -// SubMessage sub_message = 9; -// } -// } -// -// The field mask can be: -// -// mask { -// paths: "name" -// } -// -// Or: -// -// mask { -// paths: "sub_message" -// } -// -// Note that oneof type names ("test_oneof" in this case) cannot be used in -// paths. -// -// ## Field Mask Verification -// -// The implementation of the all the API methods, which have any FieldMask type -// field in the request, should verify the included field paths, and return -// `INVALID_ARGUMENT` error if any path is duplicated or unmappable. -message FieldMask { - // The set of field mask paths. - repeated string paths = 1; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/source_context.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/source_context.proto deleted file mode 100644 index f3b2c96..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/source_context.proto +++ /dev/null @@ -1,48 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "SourceContextProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/source_context;source_context"; - -// `SourceContext` represents information about the source of a -// protobuf element, like the file in which it is defined. -message SourceContext { - // The path-qualified name of the .proto file that contained the associated - // protobuf element. For example: `"google/protobuf/source_context.proto"`. - string file_name = 1; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/struct.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/struct.proto deleted file mode 100644 index 7d7808e..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/struct.proto +++ /dev/null @@ -1,96 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "StructProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - - -// `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -message Struct { - // Unordered map of dynamically typed values. - map fields = 1; -} - -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -message Value { - // The kind of value. - oneof kind { - // Represents a null value. - NullValue null_value = 1; - // Represents a double value. - double number_value = 2; - // Represents a string value. - string string_value = 3; - // Represents a boolean value. - bool bool_value = 4; - // Represents a structured value. - Struct struct_value = 5; - // Represents a repeated `Value`. - ListValue list_value = 6; - } -} - -// `NullValue` is a singleton enumeration to represent the null value for the -// `Value` type union. -// -// The JSON representation for `NullValue` is JSON `null`. -enum NullValue { - // Null value. - NULL_VALUE = 0; -} - -// `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -message ListValue { - // Repeated field of dynamically typed values. - repeated Value values = 1; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/timestamp.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/timestamp.proto deleted file mode 100644 index 06750ab..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/timestamp.proto +++ /dev/null @@ -1,133 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/timestamp"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TimestampProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Timestamp represents a point in time independent of any time zone -// or calendar, represented as seconds and fractions of seconds at -// nanosecond resolution in UTC Epoch time. It is encoded using the -// Proleptic Gregorian Calendar which extends the Gregorian calendar -// backwards to year one. It is encoded assuming all minutes are 60 -// seconds long, i.e. leap seconds are "smeared" so that no leap second -// table is needed for interpretation. Range is from -// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. -// By restricting to that range, we ensure that we can convert to -// and from RFC 3339 date strings. -// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). -// -// # Examples -// -// Example 1: Compute Timestamp from POSIX `time()`. -// -// Timestamp timestamp; -// timestamp.set_seconds(time(NULL)); -// timestamp.set_nanos(0); -// -// Example 2: Compute Timestamp from POSIX `gettimeofday()`. -// -// struct timeval tv; -// gettimeofday(&tv, NULL); -// -// Timestamp timestamp; -// timestamp.set_seconds(tv.tv_sec); -// timestamp.set_nanos(tv.tv_usec * 1000); -// -// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. -// -// FILETIME ft; -// GetSystemTimeAsFileTime(&ft); -// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -// -// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -// Timestamp timestamp; -// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -// -// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. -// -// long millis = System.currentTimeMillis(); -// -// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -// .setNanos((int) ((millis % 1000) * 1000000)).build(); -// -// -// Example 5: Compute Timestamp from current time in Python. -// -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--) -// to obtain a formatter capable of generating timestamps in this format. -// -// -message Timestamp { - - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/type.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/type.proto deleted file mode 100644 index 624c15e..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/type.proto +++ /dev/null @@ -1,187 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/any.proto"; -import "google/protobuf/source_context.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TypeProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/ptype;ptype"; - -// A protocol buffer message type. -message Type { - // The fully qualified message name. - string name = 1; - // The list of fields. - repeated Field fields = 2; - // The list of types appearing in `oneof` definitions in this type. - repeated string oneofs = 3; - // The protocol buffer options. - repeated Option options = 4; - // The source context. - SourceContext source_context = 5; - // The source syntax. - Syntax syntax = 6; -} - -// A single field of a message type. -message Field { - // Basic field types. - enum Kind { - // Field type unknown. - TYPE_UNKNOWN = 0; - // Field type double. - TYPE_DOUBLE = 1; - // Field type float. - TYPE_FLOAT = 2; - // Field type int64. - TYPE_INT64 = 3; - // Field type uint64. - TYPE_UINT64 = 4; - // Field type int32. - TYPE_INT32 = 5; - // Field type fixed64. - TYPE_FIXED64 = 6; - // Field type fixed32. - TYPE_FIXED32 = 7; - // Field type bool. - TYPE_BOOL = 8; - // Field type string. - TYPE_STRING = 9; - // Field type group. Proto2 syntax only, and deprecated. - TYPE_GROUP = 10; - // Field type message. - TYPE_MESSAGE = 11; - // Field type bytes. - TYPE_BYTES = 12; - // Field type uint32. - TYPE_UINT32 = 13; - // Field type enum. - TYPE_ENUM = 14; - // Field type sfixed32. - TYPE_SFIXED32 = 15; - // Field type sfixed64. - TYPE_SFIXED64 = 16; - // Field type sint32. - TYPE_SINT32 = 17; - // Field type sint64. - TYPE_SINT64 = 18; - }; - - // Whether a field is optional, required, or repeated. - enum Cardinality { - // For fields with unknown cardinality. - CARDINALITY_UNKNOWN = 0; - // For optional fields. - CARDINALITY_OPTIONAL = 1; - // For required fields. Proto2 syntax only. - CARDINALITY_REQUIRED = 2; - // For repeated fields. - CARDINALITY_REPEATED = 3; - }; - - // The field type. - Kind kind = 1; - // The field cardinality. - Cardinality cardinality = 2; - // The field number. - int32 number = 3; - // The field name. - string name = 4; - // The field type URL, without the scheme, for message or enumeration - // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - string type_url = 6; - // The index of the field type in `Type.oneofs`, for message or enumeration - // types. The first type has index 1; zero means the type is not in the list. - int32 oneof_index = 7; - // Whether to use alternative packed wire representation. - bool packed = 8; - // The protocol buffer options. - repeated Option options = 9; - // The field JSON name. - string json_name = 10; - // The string value of the default value of this field. Proto2 syntax only. - string default_value = 11; -} - -// Enum type definition. -message Enum { - // Enum type name. - string name = 1; - // Enum value definitions. - repeated EnumValue enumvalue = 2; - // Protocol buffer options. - repeated Option options = 3; - // The source context. - SourceContext source_context = 4; - // The source syntax. - Syntax syntax = 5; -} - -// Enum value definition. -message EnumValue { - // Enum value name. - string name = 1; - // Enum value number. - int32 number = 2; - // Protocol buffer options. - repeated Option options = 3; -} - -// A protocol buffer option, which can be attached to a message, field, -// enumeration, etc. -message Option { - // The option's name. For protobuf built-in options (options defined in - // descriptor.proto), this is the short name. For example, `"map_entry"`. - // For custom options, it should be the fully-qualified name. For example, - // `"google.api.http"`. - string name = 1; - // The option's value packed in an Any message. If the value is a primitive, - // the corresponding wrapper type defined in google/protobuf/wrappers.proto - // should be used. If the value is an enum, it should be stored as an int32 - // value using the google.protobuf.Int32Value type. - Any value = 2; -} - -// The syntax in which a protocol buffer element is defined. -enum Syntax { - // Syntax `proto2`. - SYNTAX_PROTO2 = 0; - // Syntax `proto3`. - SYNTAX_PROTO3 = 1; -} diff --git a/src/nimpb_buildpkg/protobuf/include/google/protobuf/wrappers.proto b/src/nimpb_buildpkg/protobuf/include/google/protobuf/wrappers.proto deleted file mode 100644 index 0194763..0000000 --- a/src/nimpb_buildpkg/protobuf/include/google/protobuf/wrappers.proto +++ /dev/null @@ -1,118 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// 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 -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Wrappers for primitive (non-message) types. These types are useful -// for embedding primitives in the `google.protobuf.Any` type and for places -// where we need to distinguish between the absence of a primitive -// typed field and its default value. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/wrappers"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "WrappersProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// Wrapper message for `double`. -// -// The JSON representation for `DoubleValue` is JSON number. -message DoubleValue { - // The double value. - double value = 1; -} - -// Wrapper message for `float`. -// -// The JSON representation for `FloatValue` is JSON number. -message FloatValue { - // The float value. - float value = 1; -} - -// Wrapper message for `int64`. -// -// The JSON representation for `Int64Value` is JSON string. -message Int64Value { - // The int64 value. - int64 value = 1; -} - -// Wrapper message for `uint64`. -// -// The JSON representation for `UInt64Value` is JSON string. -message UInt64Value { - // The uint64 value. - uint64 value = 1; -} - -// Wrapper message for `int32`. -// -// The JSON representation for `Int32Value` is JSON number. -message Int32Value { - // The int32 value. - int32 value = 1; -} - -// Wrapper message for `uint32`. -// -// The JSON representation for `UInt32Value` is JSON number. -message UInt32Value { - // The uint32 value. - uint32 value = 1; -} - -// Wrapper message for `bool`. -// -// The JSON representation for `BoolValue` is JSON `true` and `false`. -message BoolValue { - // The bool value. - bool value = 1; -} - -// Wrapper message for `string`. -// -// The JSON representation for `StringValue` is JSON string. -message StringValue { - // The string value. - string value = 1; -} - -// Wrapper message for `bytes`. -// -// The JSON representation for `BytesValue` is JSON string. -message BytesValue { - // The bytes value. - bytes value = 1; -} diff --git a/src/nimpb_buildpkg/protobuf/protoc-linux-aarch_64 b/src/nimpb_buildpkg/protobuf/protoc-linux-aarch_64 deleted file mode 100755 index be19f78..0000000 Binary files a/src/nimpb_buildpkg/protobuf/protoc-linux-aarch_64 and /dev/null differ diff --git a/src/nimpb_buildpkg/protobuf/protoc-linux-x86_32 b/src/nimpb_buildpkg/protobuf/protoc-linux-x86_32 deleted file mode 100755 index 96516b5..0000000 Binary files a/src/nimpb_buildpkg/protobuf/protoc-linux-x86_32 and /dev/null differ diff --git a/src/nimpb_buildpkg/protobuf/protoc-linux-x86_64 b/src/nimpb_buildpkg/protobuf/protoc-linux-x86_64 deleted file mode 100755 index 07689c0..0000000 Binary files a/src/nimpb_buildpkg/protobuf/protoc-linux-x86_64 and /dev/null differ diff --git a/src/nimpb_buildpkg/protobuf/protoc-osx-x86_64 b/src/nimpb_buildpkg/protobuf/protoc-osx-x86_64 deleted file mode 100755 index 3996f4d..0000000 Binary files a/src/nimpb_buildpkg/protobuf/protoc-osx-x86_64 and /dev/null differ diff --git a/src/nimpb_buildpkg/protobuf/protoc-win32.exe b/src/nimpb_buildpkg/protobuf/protoc-win32.exe deleted file mode 100755 index 16bc9c3..0000000 Binary files a/src/nimpb_buildpkg/protobuf/protoc-win32.exe and /dev/null differ diff --git a/src/nimpb_protoc.nim b/src/nimpb_protoc.nim new file mode 100644 index 0000000..951849a --- /dev/null +++ b/src/nimpb_protoc.nim @@ -0,0 +1,50 @@ +import os +import strformat + +when defined(windows): + const compilerId = "win32" +elif defined(linux): + when defined(i386): + const arch = "x86_32" + elif defined(amd64): + const arch = "x86_64" + elif defined(arm64): + const arch = "aarch_64" + else: + {.fatal:"unsupported architecture".} + const compilerId = "linux-" & arch +elif defined(macosx): + when defined(amd64): + const arch = "x86_64" + else: + {.fatal:"unsupported architecture".} + const compilerId = "osx-" & arch +else: + {.fatal:"unsupported platform".} + +when defined(windows): + const exeSuffix = ".exe" +else: + const exeSuffix = "" + +let + paths = @[ + # getAppDir() / "src" / "nimpb_protocpkg" / "protobuf", + # getAppDir() / "nimpb_protocpkg" / "protobuf", + parentDir(currentSourcePath()) / "nimpb_protocpkg" / "protobuf", + ] + +proc getCompilerPath*(): string = + let + compilerName = &"protoc-{compilerId}{exeSuffix}" + + for path in paths: + if fileExists(path / compilerName): + return path / compilerName + + raise newException(Exception, &"{compilerName} not found!") + +proc getProtoIncludeDir*(): string = + for path in paths: + if fileExists(path / "include"): + return path / "include" diff --git a/src/nimpb_protocpkg/protobuf/LICENSE b/src/nimpb_protocpkg/protobuf/LICENSE new file mode 100644 index 0000000..f028c82 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/LICENSE @@ -0,0 +1,42 @@ +This license applies to all parts of Protocol Buffers except the following: + + - Atomicops support for generic gcc, located in + src/google/protobuf/stubs/atomicops_internals_generic_gcc.h. + This file is copyrighted by Red Hat Inc. + + - Atomicops support for AIX/POWER, located in + src/google/protobuf/stubs/atomicops_internals_power.h. + This file is copyrighted by Bloomberg Finance LP. + +Copyright 2014, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/any.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/any.proto new file mode 100644 index 0000000..c748667 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/any.proto @@ -0,0 +1,149 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "github.com/golang/protobuf/ptypes/any"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "AnyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// `Any` contains an arbitrary serialized protocol buffer message along with a +// URL that describes the type of the serialized message. +// +// Protobuf library provides support to pack/unpack Any values in the form +// of utility functions or additional generated methods of the Any type. +// +// Example 1: Pack and unpack a message in C++. +// +// Foo foo = ...; +// Any any; +// any.PackFrom(foo); +// ... +// if (any.UnpackTo(&foo)) { +// ... +// } +// +// Example 2: Pack and unpack a message in Java. +// +// Foo foo = ...; +// Any any = Any.pack(foo); +// ... +// if (any.is(Foo.class)) { +// foo = any.unpack(Foo.class); +// } +// +// Example 3: Pack and unpack a message in Python. +// +// foo = Foo(...) +// any = Any() +// any.Pack(foo) +// ... +// if any.Is(Foo.DESCRIPTOR): +// any.Unpack(foo) +// ... +// +// Example 4: Pack and unpack a message in Go +// +// foo := &pb.Foo{...} +// any, err := ptypes.MarshalAny(foo) +// ... +// foo := &pb.Foo{} +// if err := ptypes.UnmarshalAny(any, foo); err != nil { +// ... +// } +// +// The pack methods provided by protobuf library will by default use +// 'type.googleapis.com/full.type.name' as the type URL and the unpack +// methods only use the fully qualified type name after the last '/' +// in the type URL, for example "foo.bar.com/x/y.z" will yield type +// name "y.z". +// +// +// JSON +// ==== +// The JSON representation of an `Any` value uses the regular +// representation of the deserialized, embedded message, with an +// additional field `@type` which contains the type URL. Example: +// +// package google.profile; +// message Person { +// string first_name = 1; +// string last_name = 2; +// } +// +// { +// "@type": "type.googleapis.com/google.profile.Person", +// "firstName": , +// "lastName": +// } +// +// If the embedded message type is well-known and has a custom JSON +// representation, that representation will be embedded adding a field +// `value` which holds the custom JSON in addition to the `@type` +// field. Example (for message [google.protobuf.Duration][]): +// +// { +// "@type": "type.googleapis.com/google.protobuf.Duration", +// "value": "1.212s" +// } +// +message Any { + // A URL/resource name whose content describes the type of the + // serialized protocol buffer message. + // + // For URLs which use the scheme `http`, `https`, or no scheme, the + // following restrictions and interpretations apply: + // + // * If no scheme is provided, `https` is assumed. + // * The last segment of the URL's path must represent the fully + // qualified name of the type (as in `path/google.protobuf.Duration`). + // The name should be in a canonical form (e.g., leading "." is + // not accepted). + // * An HTTP GET on the URL must yield a [google.protobuf.Type][] + // value in binary format, or produce an error. + // * Applications are allowed to cache lookup results based on the + // URL, or have them precompiled into a binary to avoid any + // lookup. Therefore, binary compatibility needs to be preserved + // on changes to types. (Use versioned type names to manage + // breaking changes.) + // + // Schemes other than `http`, `https` (or the empty scheme) might be + // used with implementation specific semantics. + // + string type_url = 1; + + // Must be a valid serialized protocol buffer of the above specified type. + bytes value = 2; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/api.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/api.proto new file mode 100644 index 0000000..f37ee2f --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/api.proto @@ -0,0 +1,210 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +import "google/protobuf/source_context.proto"; +import "google/protobuf/type.proto"; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "ApiProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/api;api"; + +// Api is a light-weight descriptor for an API Interface. +// +// Interfaces are also described as "protocol buffer services" in some contexts, +// such as by the "service" keyword in a .proto file, but they are different +// from API Services, which represent a concrete implementation of an interface +// as opposed to simply a description of methods and bindings. They are also +// sometimes simply referred to as "APIs" in other contexts, such as the name of +// this message itself. See https://cloud.google.com/apis/design/glossary for +// detailed terminology. +message Api { + + // The fully qualified name of this interface, including package name + // followed by the interface's simple name. + string name = 1; + + // The methods of this interface, in unspecified order. + repeated Method methods = 2; + + // Any metadata attached to the interface. + repeated Option options = 3; + + // A version string for this interface. If specified, must have the form + // `major-version.minor-version`, as in `1.10`. If the minor version is + // omitted, it defaults to zero. If the entire version field is empty, the + // major version is derived from the package name, as outlined below. If the + // field is not empty, the version in the package name will be verified to be + // consistent with what is provided here. + // + // The versioning schema uses [semantic + // versioning](http://semver.org) where the major version number + // indicates a breaking change and the minor version an additive, + // non-breaking change. Both version numbers are signals to users + // what to expect from different versions, and should be carefully + // chosen based on the product plan. + // + // The major version is also reflected in the package name of the + // interface, which must end in `v`, as in + // `google.feature.v1`. For major versions 0 and 1, the suffix can + // be omitted. Zero major versions must only be used for + // experimental, non-GA interfaces. + // + // + string version = 4; + + // Source context for the protocol buffer service represented by this + // message. + SourceContext source_context = 5; + + // Included interfaces. See [Mixin][]. + repeated Mixin mixins = 6; + + // The source syntax of the service. + Syntax syntax = 7; +} + +// Method represents a method of an API interface. +message Method { + + // The simple name of this method. + string name = 1; + + // A URL of the input message type. + string request_type_url = 2; + + // If true, the request is streamed. + bool request_streaming = 3; + + // The URL of the output message type. + string response_type_url = 4; + + // If true, the response is streamed. + bool response_streaming = 5; + + // Any metadata attached to the method. + repeated Option options = 6; + + // The source syntax of this method. + Syntax syntax = 7; +} + +// Declares an API Interface to be included in this interface. The including +// interface must redeclare all the methods from the included interface, but +// documentation and options are inherited as follows: +// +// - If after comment and whitespace stripping, the documentation +// string of the redeclared method is empty, it will be inherited +// from the original method. +// +// - Each annotation belonging to the service config (http, +// visibility) which is not set in the redeclared method will be +// inherited. +// +// - If an http annotation is inherited, the path pattern will be +// modified as follows. Any version prefix will be replaced by the +// version of the including interface plus the [root][] path if +// specified. +// +// Example of a simple mixin: +// +// package google.acl.v1; +// service AccessControl { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v1/{resource=**}:getAcl"; +// } +// } +// +// package google.storage.v2; +// service Storage { +// rpc GetAcl(GetAclRequest) returns (Acl); +// +// // Get a data record. +// rpc GetData(GetDataRequest) returns (Data) { +// option (google.api.http).get = "/v2/{resource=**}"; +// } +// } +// +// Example of a mixin configuration: +// +// apis: +// - name: google.storage.v2.Storage +// mixins: +// - name: google.acl.v1.AccessControl +// +// The mixin construct implies that all methods in `AccessControl` are +// also declared with same name and request/response types in +// `Storage`. A documentation generator or annotation processor will +// see the effective `Storage.GetAcl` method after inherting +// documentation and annotations as follows: +// +// service Storage { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v2/{resource=**}:getAcl"; +// } +// ... +// } +// +// Note how the version in the path pattern changed from `v1` to `v2`. +// +// If the `root` field in the mixin is specified, it should be a +// relative path under which inherited HTTP paths are placed. Example: +// +// apis: +// - name: google.storage.v2.Storage +// mixins: +// - name: google.acl.v1.AccessControl +// root: acls +// +// This implies the following inherited HTTP annotation: +// +// service Storage { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; +// } +// ... +// } +message Mixin { + // The fully qualified name of the interface which is included. + string name = 1; + + // If non-empty specifies a path under which inherited HTTP paths + // are rooted. + string root = 2; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/compiler/plugin.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/compiler/plugin.proto new file mode 100644 index 0000000..5b55745 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/compiler/plugin.proto @@ -0,0 +1,167 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to +// change. +// +// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is +// just a program that reads a CodeGeneratorRequest from stdin and writes a +// CodeGeneratorResponse to stdout. +// +// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead +// of dealing with the raw protocol defined here. +// +// A plugin executable needs only to be placed somewhere in the path. The +// plugin should be named "protoc-gen-$NAME", and will then be used when the +// flag "--${NAME}_out" is passed to protoc. + +syntax = "proto2"; +package google.protobuf.compiler; +option java_package = "com.google.protobuf.compiler"; +option java_outer_classname = "PluginProtos"; + +option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go"; + +import "google/protobuf/descriptor.proto"; + +// The version number of protocol compiler. +message Version { + optional int32 major = 1; + optional int32 minor = 2; + optional int32 patch = 3; + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + optional string suffix = 4; +} + +// An encoded CodeGeneratorRequest is written to the plugin's stdin. +message CodeGeneratorRequest { + // The .proto files that were explicitly listed on the command-line. The + // code generator should generate code only for these files. Each file's + // descriptor will be included in proto_file, below. + repeated string file_to_generate = 1; + + // The generator parameter passed on the command-line. + optional string parameter = 2; + + // FileDescriptorProtos for all files in files_to_generate and everything + // they import. The files will appear in topological order, so each file + // appears before any file that imports it. + // + // protoc guarantees that all proto_files will be written after + // the fields above, even though this is not technically guaranteed by the + // protobuf wire format. This theoretically could allow a plugin to stream + // in the FileDescriptorProtos and handle them one by one rather than read + // the entire set into memory at once. However, as of this writing, this + // is not similarly optimized on protoc's end -- it will store all fields in + // memory at once before sending them to the plugin. + // + // Type names of fields and extensions in the FileDescriptorProto are always + // fully qualified. + repeated FileDescriptorProto proto_file = 15; + + // The version number of protocol compiler. + optional Version compiler_version = 3; + +} + +// The plugin writes an encoded CodeGeneratorResponse to stdout. +message CodeGeneratorResponse { + // Error message. If non-empty, code generation failed. The plugin process + // should exit with status code zero even if it reports an error in this way. + // + // This should be used to indicate errors in .proto files which prevent the + // code generator from generating correct code. Errors which indicate a + // problem in protoc itself -- such as the input CodeGeneratorRequest being + // unparseable -- should be reported by writing a message to stderr and + // exiting with a non-zero status code. + optional string error = 1; + + // Represents a single generated file. + message File { + // The file name, relative to the output directory. The name must not + // contain "." or ".." components and must be relative, not be absolute (so, + // the file cannot lie outside the output directory). "/" must be used as + // the path separator, not "\". + // + // If the name is omitted, the content will be appended to the previous + // file. This allows the generator to break large files into small chunks, + // and allows the generated text to be streamed back to protoc so that large + // files need not reside completely in memory at one time. Note that as of + // this writing protoc does not optimize for this -- it will read the entire + // CodeGeneratorResponse before writing files to disk. + optional string name = 1; + + // If non-empty, indicates that the named file should already exist, and the + // content here is to be inserted into that file at a defined insertion + // point. This feature allows a code generator to extend the output + // produced by another code generator. The original generator may provide + // insertion points by placing special annotations in the file that look + // like: + // @@protoc_insertion_point(NAME) + // The annotation can have arbitrary text before and after it on the line, + // which allows it to be placed in a comment. NAME should be replaced with + // an identifier naming the point -- this is what other generators will use + // as the insertion_point. Code inserted at this point will be placed + // immediately above the line containing the insertion point (thus multiple + // insertions to the same point will come out in the order they were added). + // The double-@ is intended to make it unlikely that the generated code + // could contain things that look like insertion points by accident. + // + // For example, the C++ code generator places the following line in the + // .pb.h files that it generates: + // // @@protoc_insertion_point(namespace_scope) + // This line appears within the scope of the file's package namespace, but + // outside of any particular class. Another plugin can then specify the + // insertion_point "namespace_scope" to generate additional classes or + // other declarations that should be placed in this scope. + // + // Note that if the line containing the insertion point begins with + // whitespace, the same whitespace will be added to every line of the + // inserted text. This is useful for languages like Python, where + // indentation matters. In these languages, the insertion point comment + // should be indented the same amount as any inserted code will need to be + // in order to work correctly in that context. + // + // The code generator that generates the initial file and the one which + // inserts into it must both run as part of a single invocation of protoc. + // Code generators are executed in the order in which they appear on the + // command line. + // + // If |insertion_point| is present, |name| must also be present. + optional string insertion_point = 2; + + // The file contents. + optional string content = 15; + } + repeated File file = 15; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/descriptor.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/descriptor.proto new file mode 100644 index 0000000..8697a50 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/descriptor.proto @@ -0,0 +1,872 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + +syntax = "proto2"; + +package google.protobuf; +option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; +option csharp_namespace = "Google.Protobuf.Reflection"; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2" and "proto3". + optional string syntax = 12; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; + optional int32 end = 2; + + optional ExtensionRangeOptions options = 3; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +message ExtensionRangeOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + }; + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + }; + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; + + // Range of reserved numeric values. Reserved values may not be used by + // entries in the same enum. Reserved ranges may not overlap. + // + // Note that this is distinct from DescriptorProto.ReservedRange in that it + // is inclusive such that it can appropriately represent the entire int32 + // domain. + message EnumReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Inclusive. + } + + // Range of reserved numeric values. Reserved numeric values may not be used + // by enum values in the same enum declaration. Reserved ranges may not + // overlap. + repeated EnumReservedRange reserved_range = 4; + + // Reserved enum value names, which may not be reused. A given name may only + // be reserved once. + repeated string reserved_name = 5; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default=false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default=false]; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default=false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default=false]; + + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default=SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default=false]; + optional bool java_generic_services = 17 [default=false]; + optional bool py_generic_services = 18 [default=false]; + optional bool php_generic_services = 42 [default=false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default=false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default=false]; + + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // Use this option to change the namespace of php generated classes. Default + // is empty. When this option is empty, the package name will be used for + // determining the namespace. + optional string php_namespace = 41; + + // The parser stores options it doesn't recognize here. + // See the documentation for the "Options" section above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. + // See the documentation for the "Options" section above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default=false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default=false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default=false]; + + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementions still need to work as + // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + // is represented as JavaScript string, which avoids loss of precision that + // can happen when a large value is converted to a floating point JavaScript. + // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + // use the JavaScript "number" type. The behavior of the default option + // JS_NORMAL is implementation dependent. + // + // This option is an enum to permit additional types to be added, e.g. + // goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default=false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default=false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default=false]; + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype +} + +message OneofOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default=false]; + + reserved 5; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default=false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = + 34 [default=IDEMPOTENCY_UNKNOWN]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendent. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed=true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed=true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to qux or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed=true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified offset. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + } +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/duration.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/duration.proto new file mode 100644 index 0000000..975fce4 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/duration.proto @@ -0,0 +1,117 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/duration"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DurationProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Duration represents a signed, fixed-length span of time represented +// as a count of seconds and fractions of seconds at nanosecond +// resolution. It is independent of any calendar and concepts like "day" +// or "month". It is related to Timestamp in that the difference between +// two Timestamp values is a Duration and it can be added or subtracted +// from a Timestamp. Range is approximately +-10,000 years. +// +// # Examples +// +// Example 1: Compute Duration from two Timestamps in pseudo code. +// +// Timestamp start = ...; +// Timestamp end = ...; +// Duration duration = ...; +// +// duration.seconds = end.seconds - start.seconds; +// duration.nanos = end.nanos - start.nanos; +// +// if (duration.seconds < 0 && duration.nanos > 0) { +// duration.seconds += 1; +// duration.nanos -= 1000000000; +// } else if (durations.seconds > 0 && duration.nanos < 0) { +// duration.seconds -= 1; +// duration.nanos += 1000000000; +// } +// +// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +// +// Timestamp start = ...; +// Duration duration = ...; +// Timestamp end = ...; +// +// end.seconds = start.seconds + duration.seconds; +// end.nanos = start.nanos + duration.nanos; +// +// if (end.nanos < 0) { +// end.seconds -= 1; +// end.nanos += 1000000000; +// } else if (end.nanos >= 1000000000) { +// end.seconds += 1; +// end.nanos -= 1000000000; +// } +// +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// +// # JSON Mapping +// +// In JSON format, the Duration type is encoded as a string rather than an +// object, where the string ends in the suffix "s" (indicating seconds) and +// is preceded by the number of seconds, with nanoseconds expressed as +// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +// microsecond should be expressed in JSON format as "3.000001s". +// +// +message Duration { + + // Signed seconds of the span of time. Must be from -315,576,000,000 + // to +315,576,000,000 inclusive. Note: these bounds are computed from: + // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + int64 seconds = 1; + + // Signed fractions of a second at nanosecond resolution of the span + // of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For durations + // of one second or more, a non-zero value for the `nanos` field must be + // of the same sign as the `seconds` field. Must be from -999,999,999 + // to +999,999,999 inclusive. + int32 nanos = 2; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/empty.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/empty.proto new file mode 100644 index 0000000..03cacd2 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/empty.proto @@ -0,0 +1,52 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "github.com/golang/protobuf/ptypes/empty"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "EmptyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// A generic empty message that you can re-use to avoid defining duplicated +// empty messages in your APIs. A typical example is to use it as the request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +message Empty {} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/field_mask.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/field_mask.proto new file mode 100644 index 0000000..eb96ba0 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/field_mask.proto @@ -0,0 +1,252 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "FieldMaskProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask"; + +// `FieldMask` represents a set of symbolic field paths, for example: +// +// paths: "f.a" +// paths: "f.b.d" +// +// Here `f` represents a field in some root message, `a` and `b` +// fields in the message found in `f`, and `d` a field found in the +// message in `f.b`. +// +// Field masks are used to specify a subset of fields that should be +// returned by a get operation or modified by an update operation. +// Field masks also have a custom JSON encoding (see below). +// +// # Field Masks in Projections +// +// When used in the context of a projection, a response message or +// sub-message is filtered by the API to only contain those fields as +// specified in the mask. For example, if the mask in the previous +// example is applied to a response message as follows: +// +// f { +// a : 22 +// b { +// d : 1 +// x : 2 +// } +// y : 13 +// } +// z: 8 +// +// The result will not contain specific values for fields x,y and z +// (their value will be set to the default, and omitted in proto text +// output): +// +// +// f { +// a : 22 +// b { +// d : 1 +// } +// } +// +// A repeated field is not allowed except at the last position of a +// paths string. +// +// If a FieldMask object is not present in a get operation, the +// operation applies to all fields (as if a FieldMask of all fields +// had been specified). +// +// Note that a field mask does not necessarily apply to the +// top-level response message. In case of a REST get operation, the +// field mask applies directly to the response, but in case of a REST +// list operation, the mask instead applies to each individual message +// in the returned resource list. In case of a REST custom method, +// other definitions may be used. Where the mask applies will be +// clearly documented together with its declaration in the API. In +// any case, the effect on the returned resource/resources is required +// behavior for APIs. +// +// # Field Masks in Update Operations +// +// A field mask in update operations specifies which fields of the +// targeted resource are going to be updated. The API is required +// to only change the values of the fields as specified in the mask +// and leave the others untouched. If a resource is passed in to +// describe the updated values, the API ignores the values of all +// fields not covered by the mask. +// +// If a repeated field is specified for an update operation, the existing +// repeated values in the target resource will be overwritten by the new values. +// Note that a repeated field is only allowed in the last position of a `paths` +// string. +// +// If a sub-message is specified in the last position of the field mask for an +// update operation, then the existing sub-message in the target resource is +// overwritten. Given the target message: +// +// f { +// b { +// d : 1 +// x : 2 +// } +// c : 1 +// } +// +// And an update message: +// +// f { +// b { +// d : 10 +// } +// } +// +// then if the field mask is: +// +// paths: "f.b" +// +// then the result will be: +// +// f { +// b { +// d : 10 +// } +// c : 1 +// } +// +// However, if the update mask was: +// +// paths: "f.b.d" +// +// then the result would be: +// +// f { +// b { +// d : 10 +// x : 2 +// } +// c : 1 +// } +// +// In order to reset a field's value to the default, the field must +// be in the mask and set to the default value in the provided resource. +// Hence, in order to reset all fields of a resource, provide a default +// instance of the resource and set all fields in the mask, or do +// not provide a mask as described below. +// +// If a field mask is not present on update, the operation applies to +// all fields (as if a field mask of all fields has been specified). +// Note that in the presence of schema evolution, this may mean that +// fields the client does not know and has therefore not filled into +// the request will be reset to their default. If this is unwanted +// behavior, a specific service may require a client to always specify +// a field mask, producing an error if not. +// +// As with get operations, the location of the resource which +// describes the updated values in the request message depends on the +// operation kind. In any case, the effect of the field mask is +// required to be honored by the API. +// +// ## Considerations for HTTP REST +// +// The HTTP kind of an update operation which uses a field mask must +// be set to PATCH instead of PUT in order to satisfy HTTP semantics +// (PUT must only be used for full updates). +// +// # JSON Encoding of Field Masks +// +// In JSON, a field mask is encoded as a single string where paths are +// separated by a comma. Fields name in each path are converted +// to/from lower-camel naming conventions. +// +// As an example, consider the following message declarations: +// +// message Profile { +// User user = 1; +// Photo photo = 2; +// } +// message User { +// string display_name = 1; +// string address = 2; +// } +// +// In proto a field mask for `Profile` may look as such: +// +// mask { +// paths: "user.display_name" +// paths: "photo" +// } +// +// In JSON, the same mask is represented as below: +// +// { +// mask: "user.displayName,photo" +// } +// +// # Field Masks and Oneof Fields +// +// Field masks treat fields in oneofs just as regular fields. Consider the +// following message: +// +// message SampleMessage { +// oneof test_oneof { +// string name = 4; +// SubMessage sub_message = 9; +// } +// } +// +// The field mask can be: +// +// mask { +// paths: "name" +// } +// +// Or: +// +// mask { +// paths: "sub_message" +// } +// +// Note that oneof type names ("test_oneof" in this case) cannot be used in +// paths. +// +// ## Field Mask Verification +// +// The implementation of the all the API methods, which have any FieldMask type +// field in the request, should verify the included field paths, and return +// `INVALID_ARGUMENT` error if any path is duplicated or unmappable. +message FieldMask { + // The set of field mask paths. + repeated string paths = 1; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/source_context.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/source_context.proto new file mode 100644 index 0000000..f3b2c96 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/source_context.proto @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "SourceContextProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/source_context;source_context"; + +// `SourceContext` represents information about the source of a +// protobuf element, like the file in which it is defined. +message SourceContext { + // The path-qualified name of the .proto file that contained the associated + // protobuf element. For example: `"google/protobuf/source_context.proto"`. + string file_name = 1; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/struct.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/struct.proto new file mode 100644 index 0000000..7d7808e --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/struct.proto @@ -0,0 +1,96 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "StructProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + + +// `Struct` represents a structured data value, consisting of fields +// which map to dynamically typed values. In some languages, `Struct` +// might be supported by a native representation. For example, in +// scripting languages like JS a struct is represented as an +// object. The details of that representation are described together +// with the proto support for the language. +// +// The JSON representation for `Struct` is JSON object. +message Struct { + // Unordered map of dynamically typed values. + map fields = 1; +} + +// `Value` represents a dynamically typed value which can be either +// null, a number, a string, a boolean, a recursive struct value, or a +// list of values. A producer of value is expected to set one of that +// variants, absence of any variant indicates an error. +// +// The JSON representation for `Value` is JSON value. +message Value { + // The kind of value. + oneof kind { + // Represents a null value. + NullValue null_value = 1; + // Represents a double value. + double number_value = 2; + // Represents a string value. + string string_value = 3; + // Represents a boolean value. + bool bool_value = 4; + // Represents a structured value. + Struct struct_value = 5; + // Represents a repeated `Value`. + ListValue list_value = 6; + } +} + +// `NullValue` is a singleton enumeration to represent the null value for the +// `Value` type union. +// +// The JSON representation for `NullValue` is JSON `null`. +enum NullValue { + // Null value. + NULL_VALUE = 0; +} + +// `ListValue` is a wrapper around a repeated field of values. +// +// The JSON representation for `ListValue` is JSON array. +message ListValue { + // Repeated field of dynamically typed values. + repeated Value values = 1; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/timestamp.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/timestamp.proto new file mode 100644 index 0000000..06750ab --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/timestamp.proto @@ -0,0 +1,133 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/timestamp"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Timestamp represents a point in time independent of any time zone +// or calendar, represented as seconds and fractions of seconds at +// nanosecond resolution in UTC Epoch time. It is encoded using the +// Proleptic Gregorian Calendar which extends the Gregorian calendar +// backwards to year one. It is encoded assuming all minutes are 60 +// seconds long, i.e. leap seconds are "smeared" so that no leap second +// table is needed for interpretation. Range is from +// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. +// By restricting to that range, we ensure that we can convert to +// and from RFC 3339 date strings. +// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// +// Example 5: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required, though only UTC (as indicated by "Z") is presently supported. +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) +// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one +// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--) +// to obtain a formatter capable of generating timestamps in this format. +// +// +message Timestamp { + + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/type.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/type.proto new file mode 100644 index 0000000..624c15e --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/type.proto @@ -0,0 +1,187 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +import "google/protobuf/any.proto"; +import "google/protobuf/source_context.proto"; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TypeProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/ptype;ptype"; + +// A protocol buffer message type. +message Type { + // The fully qualified message name. + string name = 1; + // The list of fields. + repeated Field fields = 2; + // The list of types appearing in `oneof` definitions in this type. + repeated string oneofs = 3; + // The protocol buffer options. + repeated Option options = 4; + // The source context. + SourceContext source_context = 5; + // The source syntax. + Syntax syntax = 6; +} + +// A single field of a message type. +message Field { + // Basic field types. + enum Kind { + // Field type unknown. + TYPE_UNKNOWN = 0; + // Field type double. + TYPE_DOUBLE = 1; + // Field type float. + TYPE_FLOAT = 2; + // Field type int64. + TYPE_INT64 = 3; + // Field type uint64. + TYPE_UINT64 = 4; + // Field type int32. + TYPE_INT32 = 5; + // Field type fixed64. + TYPE_FIXED64 = 6; + // Field type fixed32. + TYPE_FIXED32 = 7; + // Field type bool. + TYPE_BOOL = 8; + // Field type string. + TYPE_STRING = 9; + // Field type group. Proto2 syntax only, and deprecated. + TYPE_GROUP = 10; + // Field type message. + TYPE_MESSAGE = 11; + // Field type bytes. + TYPE_BYTES = 12; + // Field type uint32. + TYPE_UINT32 = 13; + // Field type enum. + TYPE_ENUM = 14; + // Field type sfixed32. + TYPE_SFIXED32 = 15; + // Field type sfixed64. + TYPE_SFIXED64 = 16; + // Field type sint32. + TYPE_SINT32 = 17; + // Field type sint64. + TYPE_SINT64 = 18; + }; + + // Whether a field is optional, required, or repeated. + enum Cardinality { + // For fields with unknown cardinality. + CARDINALITY_UNKNOWN = 0; + // For optional fields. + CARDINALITY_OPTIONAL = 1; + // For required fields. Proto2 syntax only. + CARDINALITY_REQUIRED = 2; + // For repeated fields. + CARDINALITY_REPEATED = 3; + }; + + // The field type. + Kind kind = 1; + // The field cardinality. + Cardinality cardinality = 2; + // The field number. + int32 number = 3; + // The field name. + string name = 4; + // The field type URL, without the scheme, for message or enumeration + // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. + string type_url = 6; + // The index of the field type in `Type.oneofs`, for message or enumeration + // types. The first type has index 1; zero means the type is not in the list. + int32 oneof_index = 7; + // Whether to use alternative packed wire representation. + bool packed = 8; + // The protocol buffer options. + repeated Option options = 9; + // The field JSON name. + string json_name = 10; + // The string value of the default value of this field. Proto2 syntax only. + string default_value = 11; +} + +// Enum type definition. +message Enum { + // Enum type name. + string name = 1; + // Enum value definitions. + repeated EnumValue enumvalue = 2; + // Protocol buffer options. + repeated Option options = 3; + // The source context. + SourceContext source_context = 4; + // The source syntax. + Syntax syntax = 5; +} + +// Enum value definition. +message EnumValue { + // Enum value name. + string name = 1; + // Enum value number. + int32 number = 2; + // Protocol buffer options. + repeated Option options = 3; +} + +// A protocol buffer option, which can be attached to a message, field, +// enumeration, etc. +message Option { + // The option's name. For protobuf built-in options (options defined in + // descriptor.proto), this is the short name. For example, `"map_entry"`. + // For custom options, it should be the fully-qualified name. For example, + // `"google.api.http"`. + string name = 1; + // The option's value packed in an Any message. If the value is a primitive, + // the corresponding wrapper type defined in google/protobuf/wrappers.proto + // should be used. If the value is an enum, it should be stored as an int32 + // value using the google.protobuf.Int32Value type. + Any value = 2; +} + +// The syntax in which a protocol buffer element is defined. +enum Syntax { + // Syntax `proto2`. + SYNTAX_PROTO2 = 0; + // Syntax `proto3`. + SYNTAX_PROTO3 = 1; +} diff --git a/src/nimpb_protocpkg/protobuf/include/google/protobuf/wrappers.proto b/src/nimpb_protocpkg/protobuf/include/google/protobuf/wrappers.proto new file mode 100644 index 0000000..0194763 --- /dev/null +++ b/src/nimpb_protocpkg/protobuf/include/google/protobuf/wrappers.proto @@ -0,0 +1,118 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// 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 +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Wrappers for primitive (non-message) types. These types are useful +// for embedding primitives in the `google.protobuf.Any` type and for places +// where we need to distinguish between the absence of a primitive +// typed field and its default value. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/wrappers"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "WrappersProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// Wrapper message for `double`. +// +// The JSON representation for `DoubleValue` is JSON number. +message DoubleValue { + // The double value. + double value = 1; +} + +// Wrapper message for `float`. +// +// The JSON representation for `FloatValue` is JSON number. +message FloatValue { + // The float value. + float value = 1; +} + +// Wrapper message for `int64`. +// +// The JSON representation for `Int64Value` is JSON string. +message Int64Value { + // The int64 value. + int64 value = 1; +} + +// Wrapper message for `uint64`. +// +// The JSON representation for `UInt64Value` is JSON string. +message UInt64Value { + // The uint64 value. + uint64 value = 1; +} + +// Wrapper message for `int32`. +// +// The JSON representation for `Int32Value` is JSON number. +message Int32Value { + // The int32 value. + int32 value = 1; +} + +// Wrapper message for `uint32`. +// +// The JSON representation for `UInt32Value` is JSON number. +message UInt32Value { + // The uint32 value. + uint32 value = 1; +} + +// Wrapper message for `bool`. +// +// The JSON representation for `BoolValue` is JSON `true` and `false`. +message BoolValue { + // The bool value. + bool value = 1; +} + +// Wrapper message for `string`. +// +// The JSON representation for `StringValue` is JSON string. +message StringValue { + // The string value. + string value = 1; +} + +// Wrapper message for `bytes`. +// +// The JSON representation for `BytesValue` is JSON string. +message BytesValue { + // The bytes value. + bytes value = 1; +} diff --git a/src/nimpb_protocpkg/protobuf/protoc-linux-aarch_64 b/src/nimpb_protocpkg/protobuf/protoc-linux-aarch_64 new file mode 100755 index 0000000..be19f78 Binary files /dev/null and b/src/nimpb_protocpkg/protobuf/protoc-linux-aarch_64 differ diff --git a/src/nimpb_protocpkg/protobuf/protoc-linux-x86_32 b/src/nimpb_protocpkg/protobuf/protoc-linux-x86_32 new file mode 100755 index 0000000..96516b5 Binary files /dev/null and b/src/nimpb_protocpkg/protobuf/protoc-linux-x86_32 differ diff --git a/src/nimpb_protocpkg/protobuf/protoc-linux-x86_64 b/src/nimpb_protocpkg/protobuf/protoc-linux-x86_64 new file mode 100755 index 0000000..07689c0 Binary files /dev/null and b/src/nimpb_protocpkg/protobuf/protoc-linux-x86_64 differ diff --git a/src/nimpb_protocpkg/protobuf/protoc-osx-x86_64 b/src/nimpb_protocpkg/protobuf/protoc-osx-x86_64 new file mode 100755 index 0000000..3996f4d Binary files /dev/null and b/src/nimpb_protocpkg/protobuf/protoc-osx-x86_64 differ diff --git a/src/nimpb_protocpkg/protobuf/protoc-win32.exe b/src/nimpb_protocpkg/protobuf/protoc-win32.exe new file mode 100755 index 0000000..16bc9c3 Binary files /dev/null and b/src/nimpb_protocpkg/protobuf/protoc-win32.exe differ -- cgit v1.2.3 From 1e7e3f6b331c2030e908c6aed515ca4d407559f7 Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Wed, 11 Apr 2018 21:44:57 +0300 Subject: Update README.md --- README.md | 55 +++++-------------------------------------------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 420c0ba..4f5ccfd 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,13 @@ -# nimpb_build +# nimpb_protoc -**NOTE** nimpb_build is still experimental :-) +This repo contains protoc binaries for most common platforms, for easy usage +with [nimpb](https://github.com/oswjk/nimpb). The actual code generation is +in nimpb. -A tool for generating suitable Nim code for -[nimpb](https://github.com/oswjk/nimpb). It uses a prebuilt and bundled protoc -compiler. This tool supports the following platforms: +The following platforms are supported: - Linux x86_32 - Linux x86_64 - Linux aarch_64 - OSX x86_64 - Windows - -nimpb_build is modeled somewhat after [prost-build](https://github.com/danburkert/prost). - -# Install with Nimble - - $ nimble install https://github.com/oswjk/nimpb_build - -# Usage - -## As a binary - -Using the tool is simple: - - $ nimpb_build -I. --out=. my.proto - -It's almost like using protoc directly. In fact, the arguments are basically -passed along to protoc. - -You can specify nimpb_build as a dependency for your project in your .nimble -file and create a task for generating code: - - requires "nimpb_build" - - task proto, "Process .proto files": - exec "nimpb_build -I. --out=. my.proto" - -## As a library - -It's also possible to use nimpb_build as a library: - -```nim -import nimpb_build - -let protos = @["my.proto"] -let incdirs = @["."] -let outdir = "." - -compileProtos(protos, incdirs, outdir) -``` - -# How it works - -nimpb_build invokes the protoc compiler with `--descriptor_set_out` parameter, -which makes protoc output a `FileDescriptorSet` (defined [here](src/nimpb_buildpkg/protobuf/include/google/protobuf/descriptor.proto)) into a file. nimpb_build then reads and parses the file, -and generates Nim code from the parsed definitions. -- cgit v1.2.3