# Generated by protoc_gen_nim. Do not edit! import base64 import intsets import json import nimpb/nimpb import nimpb/json as nimpb_json type PhoneType* {.pure.} = enum MOBILE = 0 HOME = 1 WORK = 2 PhoneNumber* = ref PhoneNumberObj PhoneNumberObj* = object of Message number: string ftype: PhoneType proc newPhoneNumber*(): PhoneNumber proc newPhoneNumber*(data: string): PhoneNumber proc newPhoneNumber*(data: seq[byte]): PhoneNumber proc writePhoneNumber*(stream: Stream, message: PhoneNumber) proc readPhoneNumber*(stream: Stream): PhoneNumber proc sizeOfPhoneNumber*(message: PhoneNumber): uint64 proc toJson*(message: PhoneNumber): JsonNode proc newPhoneNumber*(): PhoneNumber = new(result) initMessage(result[]) result.number = "" result.ftype = PhoneType.MOBILE proc clearnumber*(message: PhoneNumber) = message.number = "" clearFields(message, [1]) proc hasnumber*(message: PhoneNumber): bool = result = hasField(message, 1) proc setnumber*(message: PhoneNumber, value: string) = message.number = value setField(message, 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.MOBILE clearFields(message, [2]) proc hasftype*(message: PhoneNumber): bool = result = hasField(message, 2) proc setftype*(message: PhoneNumber, value: PhoneType) = message.ftype = value setField(message, 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 + sizeOfEnum[PhoneType](message.ftype) result = result + sizeOfUnknownFields(message) proc writePhoneNumber*(stream: Stream, message: PhoneNumber) = if hasnumber(message): protoWriteString(stream, message.number, 1) if hasftype(message): protoWriteEnum(stream, message.ftype, 2) writeUnknownFields(stream, message) proc readPhoneNumber*(stream: Stream): PhoneNumber = result = newPhoneNumber() 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) setnumber(result, protoReadString(stream)) of 2: expectWireType(wireType, WireType.Varint) setftype(result, protoReadEnum[PhoneType](stream)) else: readUnknownField(stream, result, tag) proc toJson*(message: PhoneNumber): JsonNode = result = newJObject() if hasnumber(message): result["number"] = %message.number if hasftype(message): result["type"] = %($message.ftype) proc serialize*(message: PhoneNumber): string = let ss = newStringStream() writePhoneNumber(ss, message) result = ss.data proc newPhoneNumber*(data: string): PhoneNumber = let ss = newStringStream(data) result = readPhoneNumber(ss) proc newPhoneNumber*(data: seq[byte]): PhoneNumber = let ss = newStringStream(cast[string](data)) result = readPhoneNumber(ss)