diff options
Diffstat (limited to 'src/nimpb_buildpkg')
| -rw-r--r-- | src/nimpb_buildpkg/descriptor_pb.nim | 5164 | ||||
| -rw-r--r-- | src/nimpb_buildpkg/gen.nim | 655 | ||||
| -rw-r--r-- | src/nimpb_buildpkg/plugin.nim | 202 | ||||
| -rw-r--r-- | src/nimpb_buildpkg/plugin_pb.nim | 697 |
4 files changed, 5443 insertions, 1275 deletions
diff --git a/src/nimpb_buildpkg/descriptor_pb.nim b/src/nimpb_buildpkg/descriptor_pb.nim index 923885f..fafe11c 100644 --- a/src/nimpb_buildpkg/descriptor_pb.nim +++ b/src/nimpb_buildpkg/descriptor_pb.nim @@ -1,368 +1,4804 @@ +# Generated by protoc_gen_nim. Do not edit! + import intsets -import gen import nimpb/nimpb -const - FileDescriptorSetDesc = MessageDesc( - name: "FileDescriptorSet", - fields: @[ - FieldDesc( - name: "files", - number: 1, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "FileDescriptorProto", - packed: false, - oneofIdx: -1, - ) - ] - ) - - FileDescriptorProtoDesc = MessageDesc( - name: "FileDescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "package", - number: 2, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "dependency", - number: 3, - ftype: FieldType.String, - label: FieldLabel.Repeated, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "message_type", - number: 4, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "DescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "enum_type", - number: 5, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "EnumDescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "syntax", - number: 12, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - - DescriptorProtoDesc = MessageDesc( - name: "DescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "field", - number: 2, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "FieldDescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "nested_type", - number: 3, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "DescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "enum_type", - number: 4, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "EnumDescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "oneof_decl", - number: 8, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "OneofDescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "options", - number: 7, - ftype: FieldType.Message, - label: FieldLabel.Optional, - typeName: "MessageOptions", - packed: false, - oneofIdx: -1, - ), - ] - ) - - EnumDescriptorProtoDesc = MessageDesc( - name: "EnumDescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "value", - number: 2, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "EnumValueDescriptorProto", - packed: false, - oneofIdx: -1, - ), - ] - ) - - EnumValueDescriptorProtoDesc = MessageDesc( - name: "EnumValueDescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "number", - number: 2, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - - FieldDescriptorProtoDesc = MessageDesc( - name: "FieldDescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "number", - number: 3, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "label", - number: 4, - ftype: FieldType.Enum, - label: FieldLabel.Optional, - typeName: "FieldDescriptorProto_Label", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "type", - number: 5, - ftype: FieldType.Enum, - label: FieldLabel.Optional, - typeName: "FieldDescriptorProto_Type", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "type_name", - number: 6, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "options", - number: 8, - ftype: FieldType.Message, - label: FieldLabel.Optional, - typeName: "FieldOptions", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "oneof_index", - number: 9, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - - FieldDescriptorProto_LabelDesc = EnumDesc( - name: "FieldDescriptorProto_Label", - values: @[ - EnumValueDesc(name: "LABEL_OPTIONAL", number: 1), - EnumValueDesc(name: "LABEL_REQUIRED", number: 2), - EnumValueDesc(name: "LABEL_REPEATED", number: 3) - ] - ) - - FieldDescriptorProto_TypeDesc = EnumDesc( - name: "FieldDescriptorProto_Type", - values: @[ - EnumValueDesc(name: "TYPE_DOUBLE", number: 1), - EnumValueDesc(name: "TYPE_FLOAT", number: 2), - EnumValueDesc(name: "TYPE_INT64", number: 3), - EnumValueDesc(name: "TYPE_UINT64", number: 4), - EnumValueDesc(name: "TYPE_INT32", number: 5), - EnumValueDesc(name: "TYPE_FIXED64", number: 6), - EnumValueDesc(name: "TYPE_FIXED32", number: 7), - EnumValueDesc(name: "TYPE_BOOL", number: 8), - EnumValueDesc(name: "TYPE_STRING", number: 9), - EnumValueDesc(name: "TYPE_GROUP", number: 10), - EnumValueDesc(name: "TYPE_MESSAGE", number: 11), - EnumValueDesc(name: "TYPE_BYTES", number: 12), - EnumValueDesc(name: "TYPE_UINT32", number: 13), - EnumValueDesc(name: "TYPE_ENUM", number: 14), - EnumValueDesc(name: "TYPE_SFIXED32", number: 15), - EnumValueDesc(name: "TYPE_SFIXED64", number: 16), - EnumValueDesc(name: "TYPE_SINT32", number: 17), - EnumValueDesc(name: "TYPE_SINT64", number: 18), - ] - ) - - MessageOptionsDesc = MessageDesc( - name: "MessageOptions", - fields: @[ - FieldDesc( - name: "map_entry", - number: 7, - ftype: FieldType.Bool, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - - FieldOptionsDesc = MessageDesc( - name: "FieldOptions", - fields: @[ - FieldDesc( - name: "packed", - number: 2, - ftype: FieldType.Bool, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - - OneofDescriptorProtoDesc = MessageDesc( - name: "OneofDescriptorProto", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - -generateEnumType(FieldDescriptorProto_LabelDesc) -generateEnumProcs(FieldDescriptorProto_LabelDesc) - -generateEnumType(FieldDescriptorProto_TypeDesc) -generateEnumProcs(FieldDescriptorProto_TypeDesc) - -generateMessageType(EnumValueDescriptorProtoDesc) -generateMessageProcs(EnumValueDescriptorProtoDesc) - -generateMessageType(EnumDescriptorProtoDesc) -generateMessageProcs(EnumDescriptorProtoDesc) - -generateMessageType(FieldOptionsDesc) -generateMessageProcs(FieldOptionsDesc) - -generateMessageType(FieldDescriptorProtoDesc) -generateMessageProcs(FieldDescriptorProtoDesc) - -generateMessageType(OneofDescriptorProtoDesc) -generateMessageProcs(OneofDescriptorProtoDesc) - -generateMessageType(MessageOptionsDesc) -generateMessageProcs(MessageOptionsDesc) - -generateMessageType(DescriptorProtoDesc) -generateMessageProcs(DescriptorProtoDesc) - -generateMessageType(FileDescriptorProtoDesc) -generateMessageProcs(FileDescriptorProtoDesc) - -generateMessageType(FileDescriptorSetDesc) -generateMessageProcs(FileDescriptorSetDesc) +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 + file: seq[google_protobuf_FileDescriptorProto] + google_protobuf_FileDescriptorProto* = ref google_protobuf_FileDescriptorProtoObj + google_protobuf_FileDescriptorProtoObj* = object of RootObj + hasField: IntSet + 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 + 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 + start: int32 + fend: int32 + google_protobuf_DescriptorProto_ExtensionRange* = ref google_protobuf_DescriptorProto_ExtensionRangeObj + google_protobuf_DescriptorProto_ExtensionRangeObj* = object of RootObj + hasField: IntSet + start: int32 + fend: int32 + options: google_protobuf_ExtensionRangeOptions + google_protobuf_ExtensionRangeOptions* = ref google_protobuf_ExtensionRangeOptionsObj + google_protobuf_ExtensionRangeOptionsObj* = object of RootObj + hasField: IntSet + uninterpreted_option: seq[google_protobuf_UninterpretedOption] + google_protobuf_FieldDescriptorProto* = ref google_protobuf_FieldDescriptorProtoObj + google_protobuf_FieldDescriptorProtoObj* = object of RootObj + hasField: IntSet + 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 + name: string + options: google_protobuf_OneofOptions + google_protobuf_EnumDescriptorProto* = ref google_protobuf_EnumDescriptorProtoObj + google_protobuf_EnumDescriptorProtoObj* = object of RootObj + hasField: IntSet + 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 + start: int32 + fend: int32 + google_protobuf_EnumValueDescriptorProto* = ref google_protobuf_EnumValueDescriptorProtoObj + google_protobuf_EnumValueDescriptorProtoObj* = object of RootObj + hasField: IntSet + name: string + number: int32 + options: google_protobuf_EnumValueOptions + google_protobuf_ServiceDescriptorProto* = ref google_protobuf_ServiceDescriptorProtoObj + google_protobuf_ServiceDescriptorProtoObj* = object of RootObj + hasField: IntSet + 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 + 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 + 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 + 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 + 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 + uninterpreted_option: seq[google_protobuf_UninterpretedOption] + google_protobuf_EnumOptions* = ref google_protobuf_EnumOptionsObj + google_protobuf_EnumOptionsObj* = object of RootObj + hasField: IntSet + 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 + deprecated: bool + uninterpreted_option: seq[google_protobuf_UninterpretedOption] + google_protobuf_ServiceOptions* = ref google_protobuf_ServiceOptionsObj + google_protobuf_ServiceOptionsObj* = object of RootObj + hasField: IntSet + deprecated: bool + uninterpreted_option: seq[google_protobuf_UninterpretedOption] + google_protobuf_MethodOptions* = ref google_protobuf_MethodOptionsObj + google_protobuf_MethodOptionsObj* = object of RootObj + hasField: IntSet + 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 + 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 + name_part: string + is_extension: bool + google_protobuf_SourceCodeInfo* = ref google_protobuf_SourceCodeInfoObj + google_protobuf_SourceCodeInfoObj* = object of RootObj + hasField: IntSet + location: seq[google_protobuf_SourceCodeInfo_Location] + google_protobuf_SourceCodeInfo_Location* = ref google_protobuf_SourceCodeInfo_LocationObj + google_protobuf_SourceCodeInfo_LocationObj* = object of RootObj + hasField: IntSet + 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 + annotation: seq[google_protobuf_GeneratedCodeInfo_Annotation] + google_protobuf_GeneratedCodeInfo_Annotation* = ref google_protobuf_GeneratedCodeInfo_AnnotationObj + google_protobuf_GeneratedCodeInfo_AnnotationObj* = object of RootObj + hasField: IntSet + path: seq[int32] + source_file: string + begin: int32 + fend: int32 + +proc newgoogle_protobuf_UninterpretedOption_NamePart*(): 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.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) + +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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addname(result, readgoogle_protobuf_UninterpretedOption_NamePart(pbs)) + 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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_EnumValueOptions(pbs)) + else: skipField(stream, wireType) + +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.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) + +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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addvalue(result, readgoogle_protobuf_EnumValueDescriptorProto(pbs)) + of 3: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_EnumOptions(pbs)) + of 4: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addreserved_range(result, readgoogle_protobuf_EnumDescriptorProto_EnumReservedRange(pbs)) + of 5: + expectWireType(wireType, WireType.LengthDelimited) + addreserved_name(result, readString(stream)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addlocation(result, readgoogle_protobuf_SourceCodeInfo_Location(pbs)) + else: skipField(stream, wireType) + +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.ctype = google_protobuf_FieldOptions_CType(0) + result.packed = false + result.jstype = google_protobuf_FieldOptions_JSType(0) + result.lazy = false + result.deprecated = false + result.weak = false + result.uninterpreted_option = @[] + +proc clearctype*(message: google_protobuf_FieldOptions) = + message.ctype = google_protobuf_FieldOptions_CType(0) + 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(0) + 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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.name = "" + result.number = 0 + result.label = cast[google_protobuf_FieldDescriptorProto_Label](0) + result.ftype = cast[google_protobuf_FieldDescriptorProto_Type](0) + 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 = cast[google_protobuf_FieldDescriptorProto_Label](0) + 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 = cast[google_protobuf_FieldDescriptorProto_Type](0) + 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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_FieldOptions(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_ExtensionRangeOptions(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_OneofOptions(pbs)) + else: skipField(stream, wireType) + +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.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) + +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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addfield(result, readgoogle_protobuf_FieldDescriptorProto(pbs)) + of 6: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addextension(result, readgoogle_protobuf_FieldDescriptorProto(pbs)) + of 3: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addnested_type(result, readgoogle_protobuf_DescriptorProto(pbs)) + of 4: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addenum_type(result, readgoogle_protobuf_EnumDescriptorProto(pbs)) + of 5: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addextension_range(result, readgoogle_protobuf_DescriptorProto_ExtensionRange(pbs)) + of 8: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addoneof_decl(result, readgoogle_protobuf_OneofDescriptorProto(pbs)) + of 7: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_MessageOptions(pbs)) + of 9: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addreserved_range(result, readgoogle_protobuf_DescriptorProto_ReservedRange(pbs)) + of 10: + expectWireType(wireType, WireType.LengthDelimited) + addreserved_name(result, readString(stream)) + else: skipField(stream, wireType) + +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.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 = cast[google_protobuf_FileOptions_OptimizeMode](0) + 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 = cast[google_protobuf_FileOptions_OptimizeMode](0) + 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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.deprecated = false + result.idempotency_level = google_protobuf_MethodOptions_IdempotencyLevel(0) + 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(0) + 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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + adduninterpreted_option(result, readgoogle_protobuf_UninterpretedOption(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_MethodOptions(pbs)) + of 5: + expectWireType(wireType, WireType.Varint) + setclient_streaming(result, readBool(stream)) + of 6: + expectWireType(wireType, WireType.Varint) + setserver_streaming(result, readBool(stream)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addfmethod(result, readgoogle_protobuf_MethodDescriptorProto(pbs)) + of 3: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_ServiceOptions(pbs)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addmessage_type(result, readgoogle_protobuf_DescriptorProto(pbs)) + of 5: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addenum_type(result, readgoogle_protobuf_EnumDescriptorProto(pbs)) + of 6: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addservice(result, readgoogle_protobuf_ServiceDescriptorProto(pbs)) + of 7: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addextension(result, readgoogle_protobuf_FieldDescriptorProto(pbs)) + of 8: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setoptions(result, readgoogle_protobuf_FileOptions(pbs)) + of 9: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setsource_code_info(result, readgoogle_protobuf_SourceCodeInfo(pbs)) + of 12: + expectWireType(wireType, WireType.LengthDelimited) + setsyntax(result, readString(stream)) + else: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addfile(result, readgoogle_protobuf_FileDescriptorProto(pbs)) + else: skipField(stream, wireType) + +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.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) + +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: skipField(stream, wireType) + +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.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) + +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 + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addannotation(result, readgoogle_protobuf_GeneratedCodeInfo_Annotation(pbs)) + else: skipField(stream, wireType) + +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/gen.nim b/src/nimpb_buildpkg/gen.nim deleted file mode 100644 index e954d03..0000000 --- a/src/nimpb_buildpkg/gen.nim +++ /dev/null @@ -1,655 +0,0 @@ -import macros -import strutils - -import nimpb/nimpb - -type - MessageDesc* = object - name*: string - fields*: seq[FieldDesc] - oneofs*: seq[string] - - FieldLabel* {.pure.} = enum - Optional = 1 - Required - Repeated - - FieldDesc* = object - name*: string - number*: int - ftype*: FieldType - label*: FieldLabel - typeName*: string - packed*: bool - oneofIdx*: int - - EnumDesc* = object - name*: string - values*: seq[EnumValueDesc] - - EnumValueDesc* = object - name*: string - number*: int - -proc findColonExpr(parent: NimNode, s: string): NimNode = - for child in parent: - if child.kind != nnkExprColonExpr: - continue - - if $child[0] == s: - return child - -proc getMessageName(desc: NimNode): string = - let node = findColonExpr(desc, "name") - result = $node[1] - -iterator fields(desc: NimNode): NimNode = - let node = findColonExpr(desc, "fields") - for field in node[1]: - yield field - -proc isRepeated(field: NimNode): bool = - let node = findColonExpr(field, "label") - let value = FieldLabel(node[1].intVal) - result = value == FieldLabel.Repeated - -proc isPacked(field: NimNode): bool = - let node = findColonExpr(field, "packed") - result = bool(node[1].intVal) - -proc getFieldType(field: NimNode): FieldType = - let node = findColonExpr(field, "ftype") - result = FieldType(node[1].intVal) - -proc isMessage(field: NimNode): bool = - result = getFieldType(field) == FieldType.Message - -proc isEnum(field: NimNode): bool = - result = getFieldType(field) == FieldType.Enum - -proc getFieldTypeName(field: NimNode): string = - let node = findColonExpr(field, "typeName") - result = $node[1] - -proc getFieldTypeAsString(field: NimNode): string = - if isMessage(field) or isEnum(field): - result = getFieldTypeName(field) - else: - case getFieldType(field) - of FieldType.Double: result = "float64" - of FieldType.Float: result = "float32" - of FieldType.Int64: result = "int64" - of FieldType.UInt64: result = "uint64" - of FieldType.Int32: result = "int32" - of FieldType.Fixed64: result = "uint64" - of FieldType.Fixed32: result = "uint32" - of FieldType.Bool: result = "bool" - of FieldType.String: result = "string" - of FieldType.Bytes: result = "bytes" - of FieldType.UInt32: result = "uint32" - of FieldType.SFixed32: result = "int32" - of FieldType.SFixed64: result = "int64" - of FieldType.SInt32: result = "int32" - of FieldType.SInt64: result = "int64" - else: result = "AYBABTU" - -proc getFullFieldType(field: NimNode): NimNode = - result = ident(getFieldTypeAsString(field)) - if isRepeated(field): - result = nnkBracketExpr.newTree(ident("seq"), result) - -proc getFieldName(field: NimNode): string = - let node = findColonExpr(field, "name") - result = $node[1] - -proc getFieldNumber(field: NimNode): int = - result = int(findColonExpr(field, "number")[1].intVal) - -proc defaultValue(field: NimNode): NimNode = - # TODO: check if there is a default value specified for the field - - if isRepeated(field): - return nnkPrefix.newTree(newIdentNode("@"), nnkBracket.newTree()) - - case getFieldType(field) - of FieldType.Double: result = newLit(0.0'f64) - of FieldType.Float: result = newLit(0.0'f32) - of FieldType.Int64: result = newLit(0'i64) - of FieldType.UInt64: result = newLit(0'u64) - of FieldType.Int32: result = newLit(0'i32) - of FieldType.Fixed64: result = newLit(0'u64) - of FieldType.Fixed32: result = newLit(0'u32) - of FieldType.Bool: result = newLit(false) - of FieldType.String: result = newLit("") - of FieldType.Group: result = newLit("NOTIMPLEMENTED") - of FieldType.Message: result = newCall(ident("new" & getFieldTypeAsString(field))) - of FieldType.Bytes: result = newCall(ident("bytes"), newLit("")) - of FieldType.UInt32: result = newLit(0'u32) - of FieldType.Enum: - let - descId = ident(getFieldTypeAsString(field) & "Desc") - nameId = ident(getFieldTypeAsString(field)) - result = quote do: - `nameId`(`descId`.values[0].number) - of FieldType.SFixed32: result = newLit(0'u32) - of FieldType.SFixed64: result = newLit(0'u32) - of FieldType.SInt32: result = newLit(0) - of FieldType.SInt64: result = newLit(0) - -proc wiretype(field: NimNode): WireType = - result = wiretype(getFieldType(field)) - -# TODO: maybe not the best name for this -proc getFieldNameAST(objname: NimNode, field: NimNode, oneof: string): NimNode = - result = - if oneof != "": - newDotExpr(newDotExpr(objname, ident(oneof)), ident(getFieldName(field))) - else: - newDotExpr(objname, ident(getFieldName(field))) - -proc fieldInitializer(objname: NimNode, field: NimNode, oneof: string): NimNode = - result = nnkAsgn.newTree( - getFieldNameAST(objname, field, oneof), - defaultValue(field) - ) - -proc oneofIndex(field: NimNode): int = - let node = findColonExpr(field, "oneofIdx") - if node == nil: - result = -1 - else: - result = int(node[1].intVal) - -proc oneofName(message, field: NimNode): string = - let index = oneofIndex(field) - - if index == -1: - return "" - - let oneofs = findColonExpr(message, "oneofs")[1] - - result = $oneofs[index] - -iterator oneofFields(message: NimNode, index: int): NimNode = - if index != -1: - for field in fields(message): - if oneofIndex(field) == index: - yield field - -proc generateOneofFields*(desc: NimNode, typeSection: NimNode) = - let - oneofs = findColonExpr(desc, "oneofs")[1] - messageName = getMessageName(desc) - - for index, oneof in oneofs: - let reclist = nnkRecList.newTree() - - for field in oneofFields(desc, index): - let ftype = getFullFieldType(field) - let name = ident(getFieldName(field)) - - add(reclist, newIdentDefs(postfix(name, "*"), ftype)) - - let typedef = nnkTypeDef.newTree( - nnkPragmaExpr.newTree( - postfix(ident(messageName & $oneof), "*"), - nnkPragma.newTree( - ident("union") - ) - ), - newEmptyNode(), - nnkObjectTy.newTree( - newEmptyNode(), - newEmptyNode(), - reclist - ) - ) - - add(typeSection, typedef) - -macro generateMessageType*(desc: typed): typed = - let - impl = getImpl(symbol(desc)) - typeSection = nnkTypeSection.newTree() - typedef = nnkTypeDef.newTree() - reclist = nnkRecList.newTree() - oneofs = findColonExpr(impl, "oneofs")[1] - - let name = getMessageName(impl) - - let typedefRef = nnkTypeDef.newTree(postfix(newIdentNode(name), "*"), newEmptyNode(), - nnkRefTy.newTree(newIdentNode(name & "Obj"))) - add(typeSection, typedefRef) - - add(typeSection, typedef) - - add(typedef, postfix(ident(name & "Obj"), "*")) - add(typedef, newEmptyNode()) - add(typedef, nnkObjectTy.newTree(newEmptyNode(), newEmptyNode(), reclist)) - - for field in fields(impl): - let ftype = getFullFieldType(field) - let name = ident(getFieldName(field)) - if oneofIndex(field) == -1: - add(reclist, newIdentDefs(postfix(name, "*"), ftype)) - - for oneof in oneofs: - add(reclist, newIdentDefs(postfix(ident($oneof), "*"), - ident(name & $oneof))) - - add(reclist, nnkIdentDefs.newTree( - ident("hasField"), ident("IntSet"), newEmptyNode())) - - generateOneofFields(impl, typeSection) - - result = newStmtList() - add(result, typeSection) - - when defined(debug): - hint(repr(result)) - -proc generateNewMessageProc(desc: NimNode): NimNode = - let - body = newStmtList( - newCall(ident("new"), ident("result")) - ) - resultId = ident("result") - - for field in fields(desc): - let oneofName = oneofName(desc, field) - add(body, fieldInitializer(resultId, field, oneofName)) - - add(body, newAssignment(newDotExpr(resultId, ident("hasField")), - newCall(ident("initIntSet")))) - - result = newProc(postfix(ident("new" & getMessageName(desc)), "*"), - @[ident(getMessageName(desc))], - body) - -proc fieldProcName(prefix: string, field: NimNode): string = - result = prefix & capitalizeAscii(getFieldName(field)) - -proc fieldProcIdent(prefix: string, field: NimNode): NimNode = - result = postfix(ident(fieldProcName(prefix, field)), "*") - -proc generateClearFieldProc(desc, field: NimNode): NimNode = - let - messageId = ident("message") - fname = getFieldNameAST(messageId, field, oneofName(desc, field)) - defvalue = defaultValue(field) - hasField = newDotExpr(messageId, ident("hasField")) - number = getFieldNumber(field) - procName = fieldProcIdent("clear", field) - mtype = ident(getMessageName(desc)) - - result = quote do: - proc `procName`(`messageId`: `mtype`) = - `fname` = `defvalue` - excl(`hasfield`, `number`) - - # When clearing a field that is contained in a oneof, we should also clear - # the other fields. - for sibling in oneofFields(desc, oneofIndex(field)): - if sibling == field: - continue - let - number = getFieldNumber(sibling) - exclNode = quote do: - excl(`hasField`, `number`) - add(body(result), exclNode) - -proc generateHasFieldProc(desc, field: NimNode): NimNode = - let - messageId = ident("message") - hasField = newDotExpr(messageId, ident("hasField")) - number = getFieldNumber(field) - mtype = ident(getMessageName(desc)) - procName = fieldProcIdent("has", field) - - result = quote do: - proc `procName`(`messageId`: `mtype`): bool = - contains(`hasfield`, `number`) - -proc generateSetFieldProc(desc, field: NimNode): NimNode = - let - messageId = ident("message") - hasField = newDotExpr(messageId, ident("hasField")) - number = getFieldNumber(field) - valueId = ident("value") - fname = getFieldNameAST(messageId, field, oneofName(desc, field)) - procName = fieldProcIdent("set", field) - mtype = ident(getMessageName(desc)) - ftype = getFullFieldType(field) - - result = quote do: - proc `procName`(`messageId`: `mtype`, `valueId`: `ftype`) = - `fname` = `valueId` - incl(`hasfield`, `number`) - - # When setting a field that is in a oneof, we need to unset the other fields - for sibling in oneofFields(desc, oneofIndex(field)): - if sibling == field: - continue - let - number = getFieldNumber(sibling) - exclNode = quote do: - excl(`hasField`, `number`) - add(body(result), exclNode) - -proc generateAddToFieldProc(desc, field: NimNode): NimNode = - let - procName = fieldProcIdent("add", field) - messageId = ident("message") - mtype = ident(getMessageName(desc)) - valueId = ident("value") - ftype = ident(getFieldTypeAsString(field)) - hasField = newDotExpr(messageId, ident("hasField")) - number = getFieldNumber(field) - fname = newDotExpr(messageId, ident(getFieldName(field))) - - result = quote do: - proc `procName`(`messageId`: `mtype`, `valueId`: `ftype`) = - add(`fname`, `valueId`) - incl(`hasfield`, `number`) - -proc ident(wt: WireType): NimNode = - result = newDotExpr(ident("WireType"), ident($wt)) - -proc genWriteField(message, field: NimNode): NimNode = - result = newStmtList() - - let - number = getFieldNumber(field) - writer = ident("write" & getFieldTypeAsString(field)) - messageId = ident("message") - fname = getFieldNameAST(messageId, field, oneofName(message, field)) - wiretype = ident(wiretype(field)) - sizeproc = ident("sizeOf" & getFieldTypeAsString(field)) - hasproc = ident(fieldProcName("has", field)) - - if not isRepeated(field): - result.add quote do: - if `hasproc`(message): - writeTag(stream, `number`, `wiretype`) - `writer`(stream, `fname`) - if isMessage(field): - insert(result[0][0][1], 1, quote do: - writeVarint(stream, `sizeproc`(`fname`)) - ) - else: - let valueId = ident("value") - if isPacked(field): - result.add quote do: - writeTag(stream, `number`, WireType.LengthDelimited) - writeVarInt(stream, packedFieldSize(`fname`, `wiretype`)) - for `valueId` in `fname`: - `writer`(stream, `valueId`) - else: - result.add quote do: - for `valueId` in `fname`: - writeTag(stream, `number`, `wiretype`) - `writer`(stream, `valueId`) - if isMessage(field): - insert(result[^1][^1], 1, quote do: - writeVarint(stream, `sizeproc`(`valueId`)) - ) - -proc generateWriteMessageProc(desc: NimNode): NimNode = - let - messageId = ident("message") - mtype = ident(getMessageName(desc)) - procName = postfix(ident("write" & getMessageName(desc)), "*") - body = newStmtList() - stream = ident("stream") - sizeproc = postfix(ident("sizeOf" & getMessageName(desc)), "*") - - for field in fields(desc): - add(body, genWriteField(desc, field)) - - result = quote do: - proc `sizeproc`(`messageId`: `mtype`): uint64 - - proc `procName`(`stream`: ProtobufStream, `messageId`: `mtype`) = - `body` - -proc generateReadMessageProc(desc: NimNode): NimNode = - let - procName = postfix(ident("read" & getMessageName(desc)), "*") - newproc = ident("new" & getMessageName(desc)) - streamId = ident("stream") - mtype = ident(getMessageName(desc)) - tagId = ident("tag") - wiretypeId = ident("wiretype") - resultId = ident("result") - - result = quote do: - proc `procName`(`streamId`: ProtobufStream): `mtype` = - `resultId` = `newproc`() - while not atEnd(stream): - let - `tagId` = readTag(`streamId`) - `wiretypeId` = wireType(`tagId`) - case fieldNumber(`tagId`) - else: - skipField(`streamId`, `wiretypeId`) - - let caseNode = body(result)[1][1][1] - - # TODO: check wiretypes and fail if it doesn't match - for field in fields(desc): - let - number = getFieldNumber(field) - reader = ident("read" & getFieldTypeAsString(field)) - setproc = - if isRepeated(field): - ident("add" & capitalizeAscii(getFieldName(field))) - else: - ident("set" & capitalizeAscii(getFieldName(field))) - if isRepeated(field): - if isNumeric(getFieldType(field)): - insert(caseNode, 1, nnkOfBranch.newTree(newLit(number), quote do: - if `wiretypeId` == WireType.LengthDelimited: - let - size = readVarint(stream) - start = getPosition(stream).uint64 - var consumed = 0'u64 - while consumed < size: - `setproc`(`resultId`, `reader`(stream)) - consumed = getPosition(stream).uint64 - start - if consumed != size: - raise newException(Exception, "packed field size mismatch") - else: - `setproc`(`resultId`, `reader`(stream)) - )) - elif isMessage(field): - insert(caseNode, 1, nnkOfBranch.newTree(newLit(number), quote do: - let size = readVarint(stream) - let data = readStr(stream, int(size)) - let stream2 = newProtobufStream(newStringStream(data)) - `setproc`(`resultId`, `reader`(stream2)) - )) - else: - insert(caseNode, 1, nnkOfBranch.newTree(newLit(number), quote do: - `setproc`(`resultId`, `reader`(stream)) - )) - else: - if isMessage(field): - insert(caseNode, 1, nnkOfBranch.newTree(newLit(number), quote do: - let size = readVarint(stream) - let data = readStr(stream, int(size)) - let stream2 = newProtobufStream(newStringStream(data)) - `setproc`(`resultId`, `reader`(stream2)) - )) - else: - insert(caseNode, 1, nnkOfBranch.newTree(newLit(number), quote do: - `setproc`(`resultId`, `reader`(stream)) - )) - -proc generateSizeOfMessageProc(desc: NimNode): NimNode = - let - name = getMessageName(desc) - body = newStmtList() - messageId = ident("message") - resultId = ident("result") - procName = postfix(ident("sizeOf" & getMessageName(desc)), "*") - mtype = ident(getMessageName(desc)) - - result = quote do: - proc `procName`(`messageId`: `mtype`): uint64 = - `resultId` = 0 - - let procBody = body(result) - - for field in fields(desc): - let - hasproc = ident(fieldProcName("has", field)) - sizeofproc = ident("sizeOf" & getFieldTypeAsString(field)) - fname = getFieldNameAST(messageId, field, oneofName(desc, field)) - number = getFieldNumber(field) - wiretype = ident(wiretype(field)) - - # TODO: packed - if isRepeated(field): - if isPacked(field): - procBody.add quote do: - if `hasproc`(`messageId`): - let - tagSize = sizeOfUint32(uint32(makeTag(`number`, WireType.LengthDelimited))) - dataSize = packedFieldSize(`fname`, `wiretype`) - sizeOfSize = sizeOfUint64(dataSize) - `resultId` = tagSize + dataSize + sizeOfSize - else: - procBody.add quote do: - for value in `fname`: - let - sizeOfField = `sizeofproc`(value) - tagSize = sizeOfUint32(uint32(makeTag(`number`, `wiretype`))) - `resultId` = `resultId` + - sizeOfField + - sizeOfUint64(sizeOfField) + - tagSize - else: - let sizeOfFieldId = ident("sizeOfField") - - procBody.add quote do: - if `hasproc`(`messageId`): - let - `sizeOfFieldId` = `sizeofproc`(`fname`) - tagSize = sizeOfUint32(uint32(makeTag(`number`, `wiretype`))) - `resultId` = `resultId` + sizeOfField + tagSize - - if isMessage(field): - # For messages we need to include the size of the encoded size - let asgn = procBody[^1][0][1][1] - asgn[1] = infix(asgn[1], "+", newCall(ident("sizeOfUint64"), - sizeOfFieldId)) - -proc generateSerializeProc(desc: NimNode): NimNode = - let - mtype = ident(getMessageName(desc)) - procName = postfix(ident("serialize"), "*") - writer = ident("write" & getMessageName(desc)) - resultId = ident("result") - - result = quote do: - proc `procName`(message: `mtype`): string = - let - ss = newStringStream() - pbs = newProtobufStream(ss) - `writer`(pbs, message) - `resultId` = ss.data - -proc generateDeserializeProc(desc: NimNode): NimNode = - let - mtype = ident(getMessageName(desc)) - procName = postfix(ident("new" & getMessageName(desc)), "*") - reader = ident("read" & getMessageName(desc)) - resultId = ident("result") - - result = quote do: - proc `procName`(data: string): `mtype` = - let - ss = newStringStream(data) - pbs = newProtobufStream(ss) - `resultId` = `reader`(pbs) - -macro generateMessageProcs*(x: typed): typed = - let - desc = getImpl(symbol(x)) - - result = newStmtList( - generateNewMessageProc(desc), - ) - - for field in fields(desc): - add(result, generateClearFieldProc(desc, field)) - add(result, generateHasFieldProc(desc, field)) - add(result, generateSetFieldProc(desc, field)) - - if isRepeated(field): - add(result, generateAddToFieldProc(desc, field)) - - add(result, generateWriteMessageProc(desc)) - add(result, generateReadMessageProc(desc)) - add(result, generateSizeOfMessageProc(desc)) - add(result, generateSerializeProc(desc)) - add(result, generateDeserializeProc(desc)) - - when defined(debug): - hint(repr(result)) - -macro generateEnumType*(x: typed): typed = - let - impl = getImpl(symbol(x)) - name = $findColonExpr(impl, "name")[1] - values = findColonExpr(impl, "values")[1] - - let enumTy = nnkEnumTy.newTree(newEmptyNode()) - - for valueNode in values: - let - name = $findColonExpr(valueNode, "name")[1] - number = findColonExpr(valueNode, "number")[1] - - add(enumTy, nnkEnumFieldDef.newTree(ident(name), number)) - - result = newStmtList(nnkTypeSection.newTree( - nnkTypeDef.newTree( - nnkPragmaExpr.newTree( - postfix(ident(name), "*"), - nnkPragma.newTree(ident("pure")) - ), - newEmptyNode(), - enumTy - ) - )) - - when defined(debug): - hint(repr(result)) - -macro generateEnumProcs*(x: typed): typed = - let - impl = getImpl(symbol(x)) - name = $findColonExpr(impl, "name")[1] - nameId = ident(name) - values = findColonExpr(impl, "values")[1] - readProc = postfix(ident("read" & name), "*") - writeProc = postfix(ident("write" & name), "*") - sizeProc = postfix(ident("sizeOf" & name), "*") - resultId = ident("result") - - result = newStmtList() - - add(result, quote do: - proc `readProc`(stream: ProtobufStream): `nameId` = - `resultId` = `nameId`(readUInt32(stream)) - - proc `writeProc`(stream: ProtobufStream, value: `nameId`) = - writeEnum(stream, value) - - proc `sizeProc`(value: `nameId`): uint64 = - `resultId` = sizeOfUInt32(uint32(value)) - ) - - when defined(debug): - hint(repr(result)) diff --git a/src/nimpb_buildpkg/plugin.nim b/src/nimpb_buildpkg/plugin.nim index bf50559..5ecfe1b 100644 --- a/src/nimpb_buildpkg/plugin.nim +++ b/src/nimpb_buildpkg/plugin.nim @@ -12,8 +12,6 @@ import plugin_pb import nimpb/nimpb -import gen - type Names = distinct seq[string] @@ -24,8 +22,8 @@ type Field = ref object number: int name: string - label: FieldDescriptorProto_Label - ftype: FieldDescriptorProto_Type + label: google_protobuf_FieldDescriptorProto_Label + ftype: google_protobuf_FieldDescriptorProto_Type typeName: string packed: bool oneof: Oneof @@ -46,7 +44,7 @@ type data: string ProtoFile = ref object - fdesc: FileDescriptorProto + fdesc: google_protobuf_FileDescriptorProto enums: seq[Enum] messages: seq[Message] syntax: Syntax @@ -80,23 +78,23 @@ proc `&`(names: Names, s: string): Names = add(result, s) proc isRepeated(field: Field): bool = - result = field.label == FieldDescriptorProtoLabel.LabelRepeated + result = field.label == google_protobuf_FieldDescriptorProtoLabel.LabelRepeated proc isMessage(field: Field): bool = - result = field.ftype == FieldDescriptorProtoType.TypeMessage + result = field.ftype == google_protobuf_FieldDescriptorProtoType.TypeMessage proc isEnum(field: Field): bool = - result = field.ftype == FieldDescriptorProtoType.TypeEnum + result = field.ftype == google_protobuf_FieldDescriptorProtoType.TypeEnum proc isNumeric(field: Field): bool = case field.ftype - of FieldDescriptorProtoType.TypeDouble, FieldDescriptorProtoType.TypeFloat, - FieldDescriptorProtoType.TypeInt64, FieldDescriptorProtoType.TypeUInt64, - FieldDescriptorProtoType.TypeInt32, FieldDescriptorProtoType.TypeFixed64, - FieldDescriptorProtoType.TypeFixed32, FieldDescriptorProtoType.TypeBool, - FieldDescriptorProtoType.TypeUInt32, FieldDescriptorProtoType.TypeEnum, - FieldDescriptorProtoType.TypeSFixed32, FieldDescriptorProtoType.TypeSFixed64, - FieldDescriptorProtoType.TypeSInt32, FieldDescriptorProtoType.TypeSInt64: + 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 @@ -108,24 +106,24 @@ proc isMapEntry(field: Field): bool = proc nimTypeName(field: Field): string = case field.ftype - of FieldDescriptorProtoType.TypeDouble: result = "float64" - of FieldDescriptorProtoType.TypeFloat: result = "float32" - of FieldDescriptorProtoType.TypeInt64: result = "int64" - of FieldDescriptorProtoType.TypeUInt64: result = "uint64" - of FieldDescriptorProtoType.TypeInt32: result = "int32" - of FieldDescriptorProtoType.TypeFixed64: result = "uint64" - of FieldDescriptorProtoType.TypeFixed32: result = "uint32" - of FieldDescriptorProtoType.TypeBool: result = "bool" - of FieldDescriptorProtoType.TypeString: result = "string" - of FieldDescriptorProtoType.TypeGroup: result = "" - of FieldDescriptorProtoType.TypeMessage: result = field.typeName - of FieldDescriptorProtoType.TypeBytes: result = "bytes" - of FieldDescriptorProtoType.TypeUInt32: result = "uint32" - of FieldDescriptorProtoType.TypeEnum: result = field.typeName - of FieldDescriptorProtoType.TypeSFixed32: result = "int32" - of FieldDescriptorProtoType.TypeSFixed64: result = "int64" - of FieldDescriptorProtoType.TypeSInt32: result = "int32" - of FieldDescriptorProtoType.TypeSInt64: result = "int64" + 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: @@ -137,26 +135,26 @@ proc mapValueType(field: Field): string = if f.name == "value": return f.nimTypeName -proc `$`(ft: FieldDescriptorProtoType): string = +proc `$`(ft: google_protobuf_FieldDescriptorProtoType): string = case ft - of FieldDescriptorProtoType.TypeDouble: result = "Double" - of FieldDescriptorProtoType.TypeFloat: result = "Float" - of FieldDescriptorProtoType.TypeInt64: result = "Int64" - of FieldDescriptorProtoType.TypeUInt64: result = "UInt64" - of FieldDescriptorProtoType.TypeInt32: result = "Int32" - of FieldDescriptorProtoType.TypeFixed64: result = "Fixed64" - of FieldDescriptorProtoType.TypeFixed32: result = "Fixed32" - of FieldDescriptorProtoType.TypeBool: result = "Bool" - of FieldDescriptorProtoType.TypeString: result = "String" - of FieldDescriptorProtoType.TypeGroup: result = "Group" - of FieldDescriptorProtoType.TypeMessage: result = "Message" - of FieldDescriptorProtoType.TypeBytes: result = "Bytes" - of FieldDescriptorProtoType.TypeUInt32: result = "UInt32" - of FieldDescriptorProtoType.TypeEnum: result = "Enum" - of FieldDescriptorProtoType.TypeSFixed32: result = "SFixed32" - of FieldDescriptorProtoType.TypeSFixed64: result = "SFixed64" - of FieldDescriptorProtoType.TypeSInt32: result = "SInt32" - of FieldDescriptorProtoType.TypeSInt64: result = "SInt64" + 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(field: Field): string = if isMapEntry(field): @@ -165,46 +163,46 @@ proc defaultValue(field: Field): string = return "@[]" case field.ftype - of FieldDescriptorProtoType.TypeDouble: result = "0" - of FieldDescriptorProtoType.TypeFloat: result = "0" - of FieldDescriptorProtoType.TypeInt64: result = "0" - of FieldDescriptorProtoType.TypeUInt64: result = "0" - of FieldDescriptorProtoType.TypeInt32: result = "0" - of FieldDescriptorProtoType.TypeFixed64: result = "0" - of FieldDescriptorProtoType.TypeFixed32: result = "0" - of FieldDescriptorProtoType.TypeBool: result = "false" - of FieldDescriptorProtoType.TypeString: result = "\"\"" - of FieldDescriptorProtoType.TypeGroup: result = "" - of FieldDescriptorProtoType.TypeMessage: result = "nil" - of FieldDescriptorProtoType.TypeBytes: result = "bytes(\"\")" - of FieldDescriptorProtoType.TypeUInt32: result = "0" - of FieldDescriptorProtoType.TypeEnum: result = &"{field.typeName}(0)" - of FieldDescriptorProtoType.TypeSFixed32: result = "0" - of FieldDescriptorProtoType.TypeSFixed64: result = "0" - of FieldDescriptorProtoType.TypeSInt32: result = "0" - of FieldDescriptorProtoType.TypeSInt64: result = "0" + 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 = &"{field.typeName}(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 wiretypeStr(field: Field): string = result = "WireType." case field.ftype - of FieldDescriptorProtoType.TypeDouble: result &= "Fixed64" - of FieldDescriptorProtoType.TypeFloat: result &= "Fixed32" - of FieldDescriptorProtoType.TypeInt64: result &= "Varint" - of FieldDescriptorProtoType.TypeUInt64: result &= "Varint" - of FieldDescriptorProtoType.TypeInt32: result &= "Varint" - of FieldDescriptorProtoType.TypeFixed64: result &= "Fixed64" - of FieldDescriptorProtoType.TypeFixed32: result &= "Fixed32" - of FieldDescriptorProtoType.TypeBool: result &= "Varint" - of FieldDescriptorProtoType.TypeString: result &= "LengthDelimited" - of FieldDescriptorProtoType.TypeGroup: result &= "" - of FieldDescriptorProtoType.TypeMessage: result &= "LengthDelimited" - of FieldDescriptorProtoType.TypeBytes: result &= "LengthDelimited" - of FieldDescriptorProtoType.TypeUInt32: result &= "Varint" - of FieldDescriptorProtoType.TypeEnum: result &= &"Varint" - of FieldDescriptorProtoType.TypeSFixed32: result &= "Fixed32" - of FieldDescriptorProtoType.TypeSFixed64: result &= "Fixed64" - of FieldDescriptorProtoType.TypeSInt32: result &= "Varint" - of FieldDescriptorProtoType.TypeSInt64: result &= "Varint" + 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 @@ -250,13 +248,13 @@ proc sizeOfProc(field: Field): string = else: result = &"sizeOf{field.typeName}" -proc newField(file: ProtoFile, message: Message, desc: FieldDescriptorProto): Field = +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.type + result.ftype = desc.ftype result.typeName = "" result.packed = false result.mapEntry = nil @@ -304,7 +302,7 @@ proc newOneof(name: string): Oneof = result.fields = @[] result.name = name -proc newMessage(file: ProtoFile, names: Names, desc: DescriptorProto): Message = +proc newMessage(file: ProtoFile, names: Names, desc: google_protobuf_DescriptorProto): Message = new(result) result.names = names @@ -332,7 +330,7 @@ proc fixMapEntry(file: ProtoFile, message: Message): bool = field.mapEntry = msg result = true -proc newEnum(names: Names, desc: EnumDescriptorProto): Enum = +proc newEnum(names: Names, desc: google_protobuf_EnumDescriptorProto): Enum = new(result) result.names = names & desc.name @@ -349,8 +347,8 @@ proc newEnum(names: Names, desc: EnumDescriptorProto): Enum = system.cmp(x.number, y.number) ) -iterator messages(desc: DescriptorProto, names: Names): tuple[names: Names, desc: DescriptorProto] = - var stack: seq[tuple[names: Names, desc: DescriptorProto]] = @[] +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)) @@ -364,7 +362,7 @@ iterator messages(desc: DescriptorProto, names: Names): tuple[names: Names, desc for desc in submsg.nested_type: add(stack, (subnames, desc)) -iterator messages(fdesc: FileDescriptorProto, names: Names): tuple[names: Names, desc: DescriptorProto] = +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) @@ -447,7 +445,7 @@ iterator sortDependencies(messages: seq[Message]): Message = if name in byname: yield byname[name] -proc parseFile(name: string, fdesc: FileDescriptorProto): ProtoFile = +proc parseFile(name: string, fdesc: google_protobuf_FileDescriptorProto): ProtoFile = log(&"parsing {name}") new(result) @@ -835,7 +833,7 @@ iterator genProcs(msg: Message): string = yield indent(&"result = read{msg.names}(pbs)", 4) yield "" -proc processFile(filename: string, fdesc: FileDescriptorProto, +proc processFile(filename: string, fdesc: google_protobuf_FileDescriptorProto, otherFiles: TableRef[string, ProtoFile]): ProcessedFile = var (dir, name, _) = splitFile(filename) var pbfilename = (dir / name) & "_pb.nim" @@ -896,7 +894,7 @@ proc processFile(filename: string, fdesc: FileDescriptorProto, addLine(result.data, line) addLine(result.data, "") -proc generateCode(request: CodeGeneratorRequest, response: CodeGeneratorResponse) = +proc generateCode(request: google_protobuf_compiler_CodeGeneratorRequest, response: google_protobuf_compiler_CodeGeneratorResponse) = let otherFiles = newTable[string, ProtoFile]() for file in request.proto_file: @@ -906,7 +904,7 @@ proc generateCode(request: CodeGeneratorRequest, response: CodeGeneratorResponse for fdesc in request.proto_file: if fdesc.name == filename: let results = processFile(filename, fdesc, otherFiles) - let f = newCodeGeneratorResponse_File() + let f = newgoogle_protobuf_compiler_CodeGeneratorResponse_File() setName(f, results.name) setContent(f, results.data) addFile(response, f) @@ -915,9 +913,9 @@ proc pluginMain*() = let pbsi = newProtobufStream(newFileStream(stdin)) let pbso = newProtobufStream(newFileStream(stdout)) - let request = readCodeGeneratorRequest(pbsi) - let response = newCodeGeneratorResponse() + let request = readgoogle_protobuf_compiler_CodeGeneratorRequest(pbsi) + let response = newgoogle_protobuf_compiler_CodeGeneratorResponse() generateCode(request, response) - writeCodeGeneratorResponse(pbso, response) + writegoogle_protobuf_compiler_CodeGeneratorResponse(pbso, response) diff --git a/src/nimpb_buildpkg/plugin_pb.nim b/src/nimpb_buildpkg/plugin_pb.nim index fa9fc94..1f7cd1e 100644 --- a/src/nimpb_buildpkg/plugin_pb.nim +++ b/src/nimpb_buildpkg/plugin_pb.nim @@ -1,160 +1,549 @@ +# Generated by protoc_gen_nim. Do not edit! + import intsets -import gen import nimpb/nimpb import descriptor_pb -const - VersionDesc = MessageDesc( - name: "Version", - fields: @[ - FieldDesc( - name: "major", - number: 1, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "minor", - number: 2, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "patch", - number: 3, - ftype: FieldType.Int32, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "suffix", - number: 4, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ) - ] - ) - - CodeGeneratorRequestDesc = MessageDesc( - name: "CodeGeneratorRequest", - fields: @[ - FieldDesc( - name: "file_to_generate", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Repeated, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "parameter", - number: 2, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "proto_file", - number: 15, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "FileDescriptorProto", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "compiler_version", - number: 3, - ftype: FieldType.Message, - label: FieldLabel.Optional, - typeName: "Version", - packed: false, - oneofIdx: -1, - ) - ] - ) - - CodeGeneratorResponseDesc = MessageDesc( - name: "CodeGeneratorResponse", - fields: @[ - FieldDesc( - name: "error", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "file", - number: 15, - ftype: FieldType.Message, - label: FieldLabel.Repeated, - typeName: "CodeGeneratorResponse_File", - packed: false, - oneofIdx: -1, - ), - ] - ) - - CodeGeneratorResponse_FileDesc = MessageDesc( - name: "CodeGeneratorResponse_File", - fields: @[ - FieldDesc( - name: "name", - number: 1, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "insertion_point", - number: 2, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - FieldDesc( - name: "content", - number: 15, - ftype: FieldType.String, - label: FieldLabel.Optional, - typeName: "", - packed: false, - oneofIdx: -1, - ), - ] - ) - -generateMessageType(VersionDesc) -generateMessageProcs(VersionDesc) - -generateMessageType(CodeGeneratorRequestDesc) -generateMessageProcs(CodeGeneratorRequestDesc) - -generateMessageType(CodeGeneratorResponse_FileDesc) -generateMessageProcs(CodeGeneratorResponse_FileDesc) - -generateMessageType(CodeGeneratorResponseDesc) -generateMessageProcs(CodeGeneratorResponseDesc) +type + google_protobuf_compiler_Version* = ref google_protobuf_compiler_VersionObj + google_protobuf_compiler_VersionObj* = object of RootObj + hasField: IntSet + major: int32 + minor: int32 + patch: int32 + suffix: string + google_protobuf_compiler_CodeGeneratorRequest* = ref google_protobuf_compiler_CodeGeneratorRequestObj + google_protobuf_compiler_CodeGeneratorRequestObj* = object of RootObj + hasField: IntSet + file_to_generate: seq[string] + parameter: string + proto_file: seq[google_protobuf_FileDescriptorProto] + compiler_version: google_protobuf_compiler_Version + google_protobuf_compiler_CodeGeneratorResponse* = ref google_protobuf_compiler_CodeGeneratorResponseObj + google_protobuf_compiler_CodeGeneratorResponseObj* = object of RootObj + hasField: IntSet + error: string + file: seq[google_protobuf_compiler_CodeGeneratorResponse_File] + google_protobuf_compiler_CodeGeneratorResponse_File* = ref google_protobuf_compiler_CodeGeneratorResponse_FileObj + google_protobuf_compiler_CodeGeneratorResponse_FileObj* = object of RootObj + hasField: IntSet + name: string + insertion_point: string + content: string + +proc newgoogle_protobuf_compiler_Version*(): google_protobuf_compiler_Version +proc writegoogle_protobuf_compiler_Version*(stream: ProtobufStream, message: google_protobuf_compiler_Version) +proc readgoogle_protobuf_compiler_Version*(stream: ProtobufStream): google_protobuf_compiler_Version +proc sizeOfgoogle_protobuf_compiler_Version*(message: google_protobuf_compiler_Version): uint64 + +proc newgoogle_protobuf_compiler_CodeGeneratorRequest*(): google_protobuf_compiler_CodeGeneratorRequest +proc writegoogle_protobuf_compiler_CodeGeneratorRequest*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorRequest) +proc readgoogle_protobuf_compiler_CodeGeneratorRequest*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorRequest +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorRequest*(message: google_protobuf_compiler_CodeGeneratorRequest): uint64 + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse_File*(): google_protobuf_compiler_CodeGeneratorResponse_File +proc writegoogle_protobuf_compiler_CodeGeneratorResponse_File*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorResponse_File) +proc readgoogle_protobuf_compiler_CodeGeneratorResponse_File*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorResponse_File +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorResponse_File*(message: google_protobuf_compiler_CodeGeneratorResponse_File): uint64 + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse*(): google_protobuf_compiler_CodeGeneratorResponse +proc writegoogle_protobuf_compiler_CodeGeneratorResponse*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorResponse) +proc readgoogle_protobuf_compiler_CodeGeneratorResponse*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorResponse +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorResponse*(message: google_protobuf_compiler_CodeGeneratorResponse): uint64 + +proc newgoogle_protobuf_compiler_Version*(): google_protobuf_compiler_Version = + new(result) + result.hasField = initIntSet() + result.major = 0 + result.minor = 0 + result.patch = 0 + result.suffix = "" + +proc clearmajor*(message: google_protobuf_compiler_Version) = + message.major = 0 + excl(message.hasField, [1]) + +proc hasmajor*(message: google_protobuf_compiler_Version): bool = + result = contains(message.hasField, 1) + +proc setmajor*(message: google_protobuf_compiler_Version, value: int32) = + message.major = value + incl(message.hasField, 1) + +proc major*(message: google_protobuf_compiler_Version): int32 {.inline.} = + message.major + +proc `major=`*(message: google_protobuf_compiler_Version, value: int32) {.inline.} = + setmajor(message, value) + +proc clearminor*(message: google_protobuf_compiler_Version) = + message.minor = 0 + excl(message.hasField, [2]) + +proc hasminor*(message: google_protobuf_compiler_Version): bool = + result = contains(message.hasField, 2) + +proc setminor*(message: google_protobuf_compiler_Version, value: int32) = + message.minor = value + incl(message.hasField, 2) + +proc minor*(message: google_protobuf_compiler_Version): int32 {.inline.} = + message.minor + +proc `minor=`*(message: google_protobuf_compiler_Version, value: int32) {.inline.} = + setminor(message, value) + +proc clearpatch*(message: google_protobuf_compiler_Version) = + message.patch = 0 + excl(message.hasField, [3]) + +proc haspatch*(message: google_protobuf_compiler_Version): bool = + result = contains(message.hasField, 3) + +proc setpatch*(message: google_protobuf_compiler_Version, value: int32) = + message.patch = value + incl(message.hasField, 3) + +proc patch*(message: google_protobuf_compiler_Version): int32 {.inline.} = + message.patch + +proc `patch=`*(message: google_protobuf_compiler_Version, value: int32) {.inline.} = + setpatch(message, value) + +proc clearsuffix*(message: google_protobuf_compiler_Version) = + message.suffix = "" + excl(message.hasField, [4]) + +proc hassuffix*(message: google_protobuf_compiler_Version): bool = + result = contains(message.hasField, 4) + +proc setsuffix*(message: google_protobuf_compiler_Version, value: string) = + message.suffix = value + incl(message.hasField, 4) + +proc suffix*(message: google_protobuf_compiler_Version): string {.inline.} = + message.suffix + +proc `suffix=`*(message: google_protobuf_compiler_Version, value: string) {.inline.} = + setsuffix(message, value) + +proc sizeOfgoogle_protobuf_compiler_Version*(message: google_protobuf_compiler_Version): uint64 = + if hasmajor(message): + result = result + sizeOfTag(1, WireType.Varint) + result = result + sizeOfInt32(message.major) + if hasminor(message): + result = result + sizeOfTag(2, WireType.Varint) + result = result + sizeOfInt32(message.minor) + if haspatch(message): + result = result + sizeOfTag(3, WireType.Varint) + result = result + sizeOfInt32(message.patch) + if hassuffix(message): + result = result + sizeOfTag(4, WireType.LengthDelimited) + result = result + sizeOfString(message.suffix) + +proc writegoogle_protobuf_compiler_Version*(stream: ProtobufStream, message: google_protobuf_compiler_Version) = + if hasmajor(message): + writeInt32(stream, message.major, 1) + if hasminor(message): + writeInt32(stream, message.minor, 2) + if haspatch(message): + writeInt32(stream, message.patch, 3) + if hassuffix(message): + writeString(stream, message.suffix, 4) + +proc readgoogle_protobuf_compiler_Version*(stream: ProtobufStream): google_protobuf_compiler_Version = + result = newgoogle_protobuf_compiler_Version() + 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) + setmajor(result, readInt32(stream)) + of 2: + expectWireType(wireType, WireType.Varint) + setminor(result, readInt32(stream)) + of 3: + expectWireType(wireType, WireType.Varint) + setpatch(result, readInt32(stream)) + of 4: + expectWireType(wireType, WireType.LengthDelimited) + setsuffix(result, readString(stream)) + else: skipField(stream, wireType) + +proc serialize*(message: google_protobuf_compiler_Version): string = + let + ss = newStringStream() + pbs = newProtobufStream(ss) + writegoogle_protobuf_compiler_Version(pbs, message) + result = ss.data + +proc newgoogle_protobuf_compiler_Version*(data: string): google_protobuf_compiler_Version = + let + ss = newStringStream(data) + pbs = newProtobufStream(ss) + result = readgoogle_protobuf_compiler_Version(pbs) + + +proc newgoogle_protobuf_compiler_CodeGeneratorRequest*(): google_protobuf_compiler_CodeGeneratorRequest = + new(result) + result.hasField = initIntSet() + result.file_to_generate = @[] + result.parameter = "" + result.proto_file = @[] + result.compiler_version = nil + +proc clearfile_to_generate*(message: google_protobuf_compiler_CodeGeneratorRequest) = + message.file_to_generate = @[] + excl(message.hasField, [1]) + +proc hasfile_to_generate*(message: google_protobuf_compiler_CodeGeneratorRequest): bool = + result = contains(message.hasField, 1) or (len(message.file_to_generate) > 0) + +proc setfile_to_generate*(message: google_protobuf_compiler_CodeGeneratorRequest, value: seq[string]) = + message.file_to_generate = value + incl(message.hasField, 1) + +proc addfile_to_generate*(message: google_protobuf_compiler_CodeGeneratorRequest, value: string) = + add(message.file_to_generate, value) + incl(message.hasField, 1) + +proc file_to_generate*(message: google_protobuf_compiler_CodeGeneratorRequest): seq[string] {.inline.} = + message.file_to_generate + +proc `file_to_generate=`*(message: google_protobuf_compiler_CodeGeneratorRequest, value: seq[string]) {.inline.} = + setfile_to_generate(message, value) + +proc clearparameter*(message: google_protobuf_compiler_CodeGeneratorRequest) = + message.parameter = "" + excl(message.hasField, [2]) + +proc hasparameter*(message: google_protobuf_compiler_CodeGeneratorRequest): bool = + result = contains(message.hasField, 2) + +proc setparameter*(message: google_protobuf_compiler_CodeGeneratorRequest, value: string) = + message.parameter = value + incl(message.hasField, 2) + +proc parameter*(message: google_protobuf_compiler_CodeGeneratorRequest): string {.inline.} = + message.parameter + +proc `parameter=`*(message: google_protobuf_compiler_CodeGeneratorRequest, value: string) {.inline.} = + setparameter(message, value) + +proc clearproto_file*(message: google_protobuf_compiler_CodeGeneratorRequest) = + message.proto_file = @[] + excl(message.hasField, [15]) + +proc hasproto_file*(message: google_protobuf_compiler_CodeGeneratorRequest): bool = + result = contains(message.hasField, 15) or (len(message.proto_file) > 0) + +proc setproto_file*(message: google_protobuf_compiler_CodeGeneratorRequest, value: seq[google_protobuf_FileDescriptorProto]) = + message.proto_file = value + incl(message.hasField, 15) + +proc addproto_file*(message: google_protobuf_compiler_CodeGeneratorRequest, value: google_protobuf_FileDescriptorProto) = + add(message.proto_file, value) + incl(message.hasField, 15) + +proc proto_file*(message: google_protobuf_compiler_CodeGeneratorRequest): seq[google_protobuf_FileDescriptorProto] {.inline.} = + message.proto_file + +proc `proto_file=`*(message: google_protobuf_compiler_CodeGeneratorRequest, value: seq[google_protobuf_FileDescriptorProto]) {.inline.} = + setproto_file(message, value) + +proc clearcompiler_version*(message: google_protobuf_compiler_CodeGeneratorRequest) = + message.compiler_version = nil + excl(message.hasField, [3]) + +proc hascompiler_version*(message: google_protobuf_compiler_CodeGeneratorRequest): bool = + result = contains(message.hasField, 3) + +proc setcompiler_version*(message: google_protobuf_compiler_CodeGeneratorRequest, value: google_protobuf_compiler_Version) = + message.compiler_version = value + incl(message.hasField, 3) + +proc compiler_version*(message: google_protobuf_compiler_CodeGeneratorRequest): google_protobuf_compiler_Version {.inline.} = + message.compiler_version + +proc `compiler_version=`*(message: google_protobuf_compiler_CodeGeneratorRequest, value: google_protobuf_compiler_Version) {.inline.} = + setcompiler_version(message, value) + +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorRequest*(message: google_protobuf_compiler_CodeGeneratorRequest): uint64 = + for value in message.file_to_generate: + result = result + sizeOfTag(1, WireType.LengthDelimited) + result = result + sizeOfString(value) + if hasparameter(message): + result = result + sizeOfTag(2, WireType.LengthDelimited) + result = result + sizeOfString(message.parameter) + for value in message.proto_file: + result = result + sizeOfTag(15, WireType.LengthDelimited) + result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_FileDescriptorProto(value)) + if hascompiler_version(message): + result = result + sizeOfTag(3, WireType.LengthDelimited) + result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_compiler_Version(message.compiler_version)) + +proc writegoogle_protobuf_compiler_CodeGeneratorRequest*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorRequest) = + for value in message.file_to_generate: + writeString(stream, value, 1) + if hasparameter(message): + writeString(stream, message.parameter, 2) + for value in message.proto_file: + writeMessage(stream, value, 15) + if hascompiler_version(message): + writeMessage(stream, message.compiler_version, 3) + +proc readgoogle_protobuf_compiler_CodeGeneratorRequest*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorRequest = + result = newgoogle_protobuf_compiler_CodeGeneratorRequest() + 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) + addfile_to_generate(result, readString(stream)) + of 2: + expectWireType(wireType, WireType.LengthDelimited) + setparameter(result, readString(stream)) + of 15: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addproto_file(result, readgoogle_protobuf_FileDescriptorProto(pbs)) + of 3: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + setcompiler_version(result, readgoogle_protobuf_compiler_Version(pbs)) + else: skipField(stream, wireType) + +proc serialize*(message: google_protobuf_compiler_CodeGeneratorRequest): string = + let + ss = newStringStream() + pbs = newProtobufStream(ss) + writegoogle_protobuf_compiler_CodeGeneratorRequest(pbs, message) + result = ss.data + +proc newgoogle_protobuf_compiler_CodeGeneratorRequest*(data: string): google_protobuf_compiler_CodeGeneratorRequest = + let + ss = newStringStream(data) + pbs = newProtobufStream(ss) + result = readgoogle_protobuf_compiler_CodeGeneratorRequest(pbs) + + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse_File*(): google_protobuf_compiler_CodeGeneratorResponse_File = + new(result) + result.hasField = initIntSet() + result.name = "" + result.insertion_point = "" + result.content = "" + +proc clearname*(message: google_protobuf_compiler_CodeGeneratorResponse_File) = + message.name = "" + excl(message.hasField, [1]) + +proc hasname*(message: google_protobuf_compiler_CodeGeneratorResponse_File): bool = + result = contains(message.hasField, 1) + +proc setname*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) = + message.name = value + incl(message.hasField, 1) + +proc name*(message: google_protobuf_compiler_CodeGeneratorResponse_File): string {.inline.} = + message.name + +proc `name=`*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) {.inline.} = + setname(message, value) + +proc clearinsertion_point*(message: google_protobuf_compiler_CodeGeneratorResponse_File) = + message.insertion_point = "" + excl(message.hasField, [2]) + +proc hasinsertion_point*(message: google_protobuf_compiler_CodeGeneratorResponse_File): bool = + result = contains(message.hasField, 2) + +proc setinsertion_point*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) = + message.insertion_point = value + incl(message.hasField, 2) + +proc insertion_point*(message: google_protobuf_compiler_CodeGeneratorResponse_File): string {.inline.} = + message.insertion_point + +proc `insertion_point=`*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) {.inline.} = + setinsertion_point(message, value) + +proc clearcontent*(message: google_protobuf_compiler_CodeGeneratorResponse_File) = + message.content = "" + excl(message.hasField, [15]) + +proc hascontent*(message: google_protobuf_compiler_CodeGeneratorResponse_File): bool = + result = contains(message.hasField, 15) + +proc setcontent*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) = + message.content = value + incl(message.hasField, 15) + +proc content*(message: google_protobuf_compiler_CodeGeneratorResponse_File): string {.inline.} = + message.content + +proc `content=`*(message: google_protobuf_compiler_CodeGeneratorResponse_File, value: string) {.inline.} = + setcontent(message, value) + +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorResponse_File*(message: google_protobuf_compiler_CodeGeneratorResponse_File): uint64 = + if hasname(message): + result = result + sizeOfTag(1, WireType.LengthDelimited) + result = result + sizeOfString(message.name) + if hasinsertion_point(message): + result = result + sizeOfTag(2, WireType.LengthDelimited) + result = result + sizeOfString(message.insertion_point) + if hascontent(message): + result = result + sizeOfTag(15, WireType.LengthDelimited) + result = result + sizeOfString(message.content) + +proc writegoogle_protobuf_compiler_CodeGeneratorResponse_File*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorResponse_File) = + if hasname(message): + writeString(stream, message.name, 1) + if hasinsertion_point(message): + writeString(stream, message.insertion_point, 2) + if hascontent(message): + writeString(stream, message.content, 15) + +proc readgoogle_protobuf_compiler_CodeGeneratorResponse_File*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorResponse_File = + result = newgoogle_protobuf_compiler_CodeGeneratorResponse_File() + 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) + setinsertion_point(result, readString(stream)) + of 15: + expectWireType(wireType, WireType.LengthDelimited) + setcontent(result, readString(stream)) + else: skipField(stream, wireType) + +proc serialize*(message: google_protobuf_compiler_CodeGeneratorResponse_File): string = + let + ss = newStringStream() + pbs = newProtobufStream(ss) + writegoogle_protobuf_compiler_CodeGeneratorResponse_File(pbs, message) + result = ss.data + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse_File*(data: string): google_protobuf_compiler_CodeGeneratorResponse_File = + let + ss = newStringStream(data) + pbs = newProtobufStream(ss) + result = readgoogle_protobuf_compiler_CodeGeneratorResponse_File(pbs) + + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse*(): google_protobuf_compiler_CodeGeneratorResponse = + new(result) + result.hasField = initIntSet() + result.error = "" + result.file = @[] + +proc clearerror*(message: google_protobuf_compiler_CodeGeneratorResponse) = + message.error = "" + excl(message.hasField, [1]) + +proc haserror*(message: google_protobuf_compiler_CodeGeneratorResponse): bool = + result = contains(message.hasField, 1) + +proc seterror*(message: google_protobuf_compiler_CodeGeneratorResponse, value: string) = + message.error = value + incl(message.hasField, 1) + +proc error*(message: google_protobuf_compiler_CodeGeneratorResponse): string {.inline.} = + message.error + +proc `error=`*(message: google_protobuf_compiler_CodeGeneratorResponse, value: string) {.inline.} = + seterror(message, value) + +proc clearfile*(message: google_protobuf_compiler_CodeGeneratorResponse) = + message.file = @[] + excl(message.hasField, [15]) + +proc hasfile*(message: google_protobuf_compiler_CodeGeneratorResponse): bool = + result = contains(message.hasField, 15) or (len(message.file) > 0) + +proc setfile*(message: google_protobuf_compiler_CodeGeneratorResponse, value: seq[google_protobuf_compiler_CodeGeneratorResponse_File]) = + message.file = value + incl(message.hasField, 15) + +proc addfile*(message: google_protobuf_compiler_CodeGeneratorResponse, value: google_protobuf_compiler_CodeGeneratorResponse_File) = + add(message.file, value) + incl(message.hasField, 15) + +proc file*(message: google_protobuf_compiler_CodeGeneratorResponse): seq[google_protobuf_compiler_CodeGeneratorResponse_File] {.inline.} = + message.file + +proc `file=`*(message: google_protobuf_compiler_CodeGeneratorResponse, value: seq[google_protobuf_compiler_CodeGeneratorResponse_File]) {.inline.} = + setfile(message, value) + +proc sizeOfgoogle_protobuf_compiler_CodeGeneratorResponse*(message: google_protobuf_compiler_CodeGeneratorResponse): uint64 = + if haserror(message): + result = result + sizeOfTag(1, WireType.LengthDelimited) + result = result + sizeOfString(message.error) + for value in message.file: + result = result + sizeOfTag(15, WireType.LengthDelimited) + result = result + sizeOfLengthDelimited(sizeOfgoogle_protobuf_compiler_CodeGeneratorResponse_File(value)) + +proc writegoogle_protobuf_compiler_CodeGeneratorResponse*(stream: ProtobufStream, message: google_protobuf_compiler_CodeGeneratorResponse) = + if haserror(message): + writeString(stream, message.error, 1) + for value in message.file: + writeMessage(stream, value, 15) + +proc readgoogle_protobuf_compiler_CodeGeneratorResponse*(stream: ProtobufStream): google_protobuf_compiler_CodeGeneratorResponse = + result = newgoogle_protobuf_compiler_CodeGeneratorResponse() + 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) + seterror(result, readString(stream)) + of 15: + expectWireType(wireType, WireType.LengthDelimited) + let + size = readVarint(stream) + data = safeReadStr(stream, int(size)) + pbs = newProtobufStream(newStringStream(data)) + addfile(result, readgoogle_protobuf_compiler_CodeGeneratorResponse_File(pbs)) + else: skipField(stream, wireType) + +proc serialize*(message: google_protobuf_compiler_CodeGeneratorResponse): string = + let + ss = newStringStream() + pbs = newProtobufStream(ss) + writegoogle_protobuf_compiler_CodeGeneratorResponse(pbs, message) + result = ss.data + +proc newgoogle_protobuf_compiler_CodeGeneratorResponse*(data: string): google_protobuf_compiler_CodeGeneratorResponse = + let + ss = newStringStream(data) + pbs = newProtobufStream(ss) + result = readgoogle_protobuf_compiler_CodeGeneratorResponse(pbs) + + |
