diff options
Diffstat (limited to 'examples/simple/simple_pb.nim')
| -rw-r--r-- | examples/simple/simple_pb.nim | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/examples/simple/simple_pb.nim b/examples/simple/simple_pb.nim new file mode 100644 index 0000000..6de8b3f --- /dev/null +++ b/examples/simple/simple_pb.nim @@ -0,0 +1,113 @@ +# Generated by protoc_gen_nim. Do not edit! + +import intsets + +import protobuf/stream +import protobuf/types + +type + Test1_MyEnum* {.pure.} = enum + Foo = 0 + Bar = 1 + Test1* = ref Test1Obj + Test1Obj* = object of RootObj + hasField: IntSet + a: int32 + e: Test1_MyEnum + +proc readTest1_MyEnum*(stream: ProtobufStream): Test1_MyEnum = + Test1_MyEnum(readUInt32(stream)) + +proc writeTest1_MyEnum*(stream: ProtobufStream, value: Test1_MyEnum) = + writeUInt32(stream, uint32(value)) + +proc sizeOfTest1_MyEnum*(value: Test1_MyEnum): uint64 = + sizeOfUInt32(uint32(value)) + +proc newTest1*(): Test1 = + new(result) + result.hasField = initIntSet() + result.a = 0 + result.e = Test1_MyEnum(0) + +proc cleara*(message: Test1) = + message.a = 0 + excl(message.hasField, 1) + +proc hasa*(message: Test1): bool = + result = contains(message.hasField, 1) + +proc seta*(message: Test1, value: int32) = + message.a = value + incl(message.hasField, 1) + +proc a*(message: Test1): int32 {.inline.} = + message.a + +proc `a=`*(message: Test1, value: int32) {.inline.} = + seta(message, value) + +proc cleare*(message: Test1) = + message.e = Test1_MyEnum(0) + excl(message.hasField, 2) + +proc hase*(message: Test1): bool = + result = contains(message.hasField, 2) + +proc sete*(message: Test1, value: Test1_MyEnum) = + message.e = value + incl(message.hasField, 2) + +proc e*(message: Test1): Test1_MyEnum {.inline.} = + message.e + +proc `e=`*(message: Test1, value: Test1_MyEnum) {.inline.} = + sete(message, value) + +proc sizeOfTest1*(message: Test1): uint64 = + if hasa(message): + let + sizeOfField = sizeOfInt32(message.a) + sizeOfTag = sizeOfUInt32(uint32(makeTag(1, WireType.Varint))) + result = result + sizeOfField + sizeOfTag + if hase(message): + let + sizeOfField = sizeOfTest1_MyEnum(message.e) + sizeOfTag = sizeOfUInt32(uint32(makeTag(2, WireType.Varint))) + result = result + sizeOfField + sizeOfTag + +proc writeTest1*(stream: ProtobufStream, message: Test1) = + if hasa(message): + writeTag(stream, 1, WireType.Varint) + writeInt32(stream, message.a) + if hase(message): + writeTag(stream, 2, WireType.Varint) + writeTest1_MyEnum(stream, message.e) + +proc readTest1*(stream: ProtobufStream): Test1 = + result = newTest1() + while not atEnd(stream): + let + tag = readTag(stream) + wireType = getTagWireType(tag) + case getTagFieldNumber(tag) + of 1: + seta(result, readInt32(stream)) + of 2: + sete(result, readTest1_MyEnum(stream)) + else: skipField(stream, wireType) + +proc serialize*(message: Test1): string = + let + ss = newStringStream() + pbs = newProtobufStream(ss) + writeTest1(pbs, message) + result = ss.data + +proc newTest1*(data: string): Test1 = + let + ss = newStringStream(data) + pbs = newProtobufStream(ss) + result = readTest1(pbs) + + |
