aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-03-26 20:48:24 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-03-26 20:48:24 +0300
commit2225256a6c97273a81f85f488ea2d4fc057ee142 (patch)
treea07b1bbfda05c6932eeca642f53676ec7cfcacbf /src
parent34dab72b3577ca143dc20dc745e640c4f6a8207d (diff)
downloadnimpb-2225256a6c97273a81f85f488ea2d4fc057ee142.tar.gz
nimpb-2225256a6c97273a81f85f488ea2d4fc057ee142.zip
Forward declare sizeOf procs for write procs
If a message refers to itself, then the write procs for that message needs to use sizeOf procs of the same message.
Diffstat (limited to 'src')
-rw-r--r--src/protobuf/gen.nim3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/protobuf/gen.nim b/src/protobuf/gen.nim
index 53e7b4e..512c0c5 100644
--- a/src/protobuf/gen.nim
+++ b/src/protobuf/gen.nim
@@ -307,11 +307,14 @@ proc generateWriteMessageProc(desc: NimNode): NimNode =
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(field))
result = quote do:
+ proc `sizeproc`(`messageId`: `mtype`): uint64
+
proc `procName`(`stream`: ProtobufStream, `messageId`: `mtype`) =
`body`