1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# Generated by protoc_gen_nim. Do not edit!
import intsets
import nimpb/nimpb
type
Test1_MyEnum* {.pure.} = enum
Foo = 0
Bar = 1
Test1* = ref Test1Obj
Test1Obj* = object of RootObj
hasField: IntSet
a: int32
e: Test1_MyEnum
proc newTest1*(): Test1
proc writeTest1*(stream: ProtobufStream, message: Test1)
proc readTest1*(stream: ProtobufStream): Test1
proc sizeOfTest1*(message: Test1): uint64
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):
result = result + sizeOfTag(1, WireType.Varint)
result = result + sizeOfInt32(message.a)
if hase(message):
result = result + sizeOfTag(2, WireType.Varint)
result = result + sizeOfEnum[Test1_MyEnum](message.e)
proc writeTest1*(stream: ProtobufStream, message: Test1) =
if hasa(message):
writeInt32(stream, message.a, 1)
if hase(message):
writeEnum(stream, message.e, 2)
proc readTest1*(stream: ProtobufStream): Test1 =
result = newTest1()
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)
seta(result, readInt32(stream))
of 2:
expectWireType(wireType, WireType.Varint)
sete(result, readEnum[Test1_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)
|