# Generated by protoc_gen_nim. Do not edit! import intsets import protobuf/protobuf type PhoneType* {.pure.} = enum MOBILE = 0 HOME = 1 WORK = 2 PhoneNumber* = ref PhoneNumberObj PhoneNumberObj* = object of RootObj hasField: IntSet number: string ftype: PhoneType proc readPhoneType*(stream: ProtobufStream): PhoneType = PhoneType(readUInt32(stream)) proc writePhoneType*(stream: ProtobufStream, value: PhoneType) = writeUInt32(stream, uint32(value)) proc writePhoneType*(stream: ProtobufStream, value: PhoneType, fieldNumber: int) = writeUInt32(stream, uint32(value), fieldNumber) proc sizeOfPhoneType*(value: PhoneType): uint64 = sizeOfUInt32(uint32(value)) proc newPhoneNumber*(): PhoneNumber proc writePhoneNumber*(stream: ProtobufStream, message: PhoneNumber) proc readPhoneNumber*(stream: ProtobufStream): PhoneNumber proc sizeOfPhoneNumber*(message: PhoneNumber): uint64 proc newPhoneNumber*(): PhoneNumber = new(result) result.hasField = initIntSet() result.number = "" result.ftype = PhoneType(0) proc clearnumber*(message: PhoneNumber) = message.number = "" excl(message.hasField, [1]) proc hasnumber*(message: PhoneNumber): bool = result = contains(message.hasField, 1) proc setnumber*(message: PhoneNumber, value: string) = message.number = value incl(message.hasField, 1) proc number*(message: PhoneNumber): string {.inline.} = message.number proc `number=`*(message: PhoneNumber, value: string) {.inline.} = setnumber(message, value) proc clearftype*(message: PhoneNumber) = message.ftype = PhoneType(0) excl(message.hasField, [2]) proc hasftype*(message: PhoneNumber): bool = result = contains(message.hasField, 2) proc setftype*(message: PhoneNumber, value: PhoneType) = message.ftype = value incl(message.hasField, 2) proc ftype*(message: PhoneNumber): PhoneType {.inline.} = message.ftype proc `ftype=`*(message: PhoneNumber, value: PhoneType) {.inline.} = setftype(message, value) proc sizeOfPhoneNumber*(message: PhoneNumber): uint64 = if hasnumber(message): result = result + sizeOfTag(1, WireType.LengthDelimited) result = result + sizeOfString(message.number) if hasftype(message): result = result + sizeOfTag(2, WireType.Varint) result = result + sizeOfPhoneType(message.ftype) proc writePhoneNumber*(stream: ProtobufStream, message: PhoneNumber) = if hasnumber(message): writeString(stream, message.number, 1) if hasftype(message): writePhoneType(stream, message.ftype, 2) proc readPhoneNumber*(stream: ProtobufStream): PhoneNumber = result = newPhoneNumber() while not atEnd(stream): let tag = readTag(stream) wireType = getTagWireType(tag) case getTagFieldNumber(tag) of 0: raise newException(InvalidFieldNumberError, "Invalid field number: 0") of 1: expectWireType(wireType, WireType.LengthDelimited) setnumber(result, readString(stream)) of 2: expectWireType(wireType, WireType.Varint) setftype(result, readPhoneType(stream)) else: skipField(stream, wireType) proc serialize*(message: PhoneNumber): string = let ss = newStringStream() pbs = newProtobufStream(ss) writePhoneNumber(pbs, message) result = ss.data proc newPhoneNumber*(data: string): PhoneNumber = let ss = newStringStream(data) pbs = newProtobufStream(ss) result = readPhoneNumber(pbs)