diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-06 18:32:34 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-06 18:32:34 +0300 |
| commit | ff443dfdf28bf97c933344cc6dbf60f4023e4162 (patch) | |
| tree | 2489c9ff2eb02f3f68fefc643407c30fe3ce1e31 /src/nimpb_buildpkg/plugin.nim | |
| parent | 24a650752d347acca240298e554ea32e127b100e (diff) | |
| download | nimpb_protoc-ff443dfdf28bf97c933344cc6dbf60f4023e4162.tar.gz nimpb_protoc-ff443dfdf28bf97c933344cc6dbf60f4023e4162.zip | |
Generate a bit less code
Diffstat (limited to 'src/nimpb_buildpkg/plugin.nim')
| -rw-r--r-- | src/nimpb_buildpkg/plugin.nim | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/nimpb_buildpkg/plugin.nim b/src/nimpb_buildpkg/plugin.nim index 70efc1b..7ae60c5 100644 --- a/src/nimpb_buildpkg/plugin.nim +++ b/src/nimpb_buildpkg/plugin.nim @@ -725,22 +725,16 @@ iterator genReadMessageProc(msg: Message): string = yield indent(&"{setter}(result, {field.readProc}(stream))", 16) elif isMessage(field): yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) - yield indent("let", 12) - yield indent("size = readVarint(stream)", 16) - yield indent("data = safeReadStr(stream, int(size))", 16) - yield indent("pbs = newProtobufStream(newStringStream(data))", 16) - yield indent(&"{setter}(result, {field.readProc}(pbs))", 12) + yield indent(&"let data = readLengthDelimited(stream)", 12) + yield indent(&"{setter}(result, new{field.typeName}(data))", 12) else: yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent(&"{setter}(result, {field.readProc}(stream))", 12) else: yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) if isMessage(field): - yield indent("let", 12) - yield indent("size = readVarint(stream)", 16) - yield indent("data = safeReadStr(stream, int(size))", 16) - yield indent("pbs = newProtobufStream(newStringStream(data))", 16) - yield indent(&"{setter}(result, {field.readProc}(pbs))", 12) + yield indent("let data = readLengthDelimited(stream)", 12) + yield indent(&"{setter}(result, new{field.typeName}(data))", 12) else: yield indent(&"{setter}(result, {field.readProc}(stream))", 12) yield indent("else: skipField(stream, wireType)", 8) @@ -802,8 +796,11 @@ iterator genSizeOfMessageProc(msg: Message): string = yield "" iterator genMessageProcForwards(msg: Message): string = + # TODO: can we be more intelligent and only forward declare the minimum set + # of procs? if not isMapEntry(msg): yield &"proc new{msg.names}*(): {msg.names}" + yield &"proc new{msg.names}*(data: string): {msg.names}" yield &"proc write{msg.names}*(stream: ProtobufStream, message: {msg.names})" yield &"proc read{msg.names}*(stream: ProtobufStream): {msg.names}" yield &"proc sizeOf{msg.names}*(message: {msg.names}): uint64" |
