aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-03 22:31:28 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-03 22:31:28 +0300
commit7d7838614d58378003b645c0222bd8effcecc5cd (patch)
tree5395d4a951aa3ea4f772bb83465bc99eba89b914
parenta862f4d7b35b5cb999ea9c7ce11e0f59b6318b74 (diff)
downloadnimpb-7d7838614d58378003b645c0222bd8effcecc5cd.tar.gz
nimpb-7d7838614d58378003b645c0222bd8effcecc5cd.zip
Cleanups
-rw-r--r--generator/protoc_gen_nim.nim60
1 files changed, 30 insertions, 30 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim
index d2cb497..60a8f34 100644
--- a/generator/protoc_gen_nim.nim
+++ b/generator/protoc_gen_nim.nim
@@ -224,6 +224,20 @@ proc isKeyword(s: string): bool =
else:
result = false
+proc writeProc(field: Field): string =
+ if isMapEntry(field):
+ result = &"write{field.typeName}KV"
+ elif isMessage(field):
+ result = "writeMessage"
+ else:
+ result = &"write{field.typeName}"
+
+proc readProc(field: Field): string =
+ if isMapEntry(field):
+ result = &"read{field.typeName}KV"
+ else:
+ result = &"read{field.typeName}"
+
proc newField(file: ProtoFile, message: Message, desc: FieldDescriptorProto): Field =
new(result)
@@ -585,44 +599,31 @@ iterator genWriteMapKVProc(msg: Message): string =
value = mapValueField(msg)
yield &"proc write{msg.names}KV(stream: ProtobufStream, key: {key.fullType}, value: {value.fullType}) ="
-
- yield indent(&"write{key.typeName}(stream, key, {key.number})", 4)
-
- if isMessage(value):
- yield indent(&"writeMessage(stream, value, {value.number})", 4)
- else:
- yield indent(&"write{value.typeName}(stream, value, {value.number})", 4)
-
+ yield indent(&"{key.writeProc}(stream, key, {key.number})", 4)
+ yield indent(&"{value.writeProc}(stream, value, {value.number})", 4)
yield ""
iterator genWriteMessageProc(msg: Message): string =
yield &"proc write{msg.names}*(stream: ProtobufStream, message: {msg.names}) ="
for field in msg.fields:
- let writer = "write" & field.typeName
if isMapEntry(field):
yield indent(&"for key, value in message.{field.name}:", 4)
yield indent(&"writeTag(stream, {field.number}, {wiretypeStr(field)})", 8)
yield indent(&"writeVarint(stream, sizeOf{field.typeName}KV(key, value))", 8)
- yield indent(&"write{field.typeName}KV(stream, key, value)", 8)
+ yield indent(&"{field.writeProc}(stream, key, value)", 8)
elif isRepeated(field):
if field.packed:
yield indent(&"if has{field.name}(message):", 4)
yield indent(&"writeTag(stream, {field.number}, WireType.LengthDelimited)", 8)
yield indent(&"writeVarint(stream, packedFieldSize(message.{field.name}, {field.fieldTypeStr}))", 8)
yield indent(&"for value in message.{field.name}:", 8)
- yield indent(&"{writer}(stream, value)", 12)
+ yield indent(&"{field.writeProc}(stream, value)", 12)
else:
yield indent(&"for value in message.{field.name}:", 4)
- if isMessage(field):
- yield indent(&"writeMessage(stream, value, {field.number})", 8)
- else:
- yield indent(&"{writer}(stream, value, {field.number})", 8)
+ yield indent(&"{field.writeProc}(stream, value, {field.number})", 8)
else:
yield indent(&"if has{field.name}(message):", 4)
- if isMessage(field):
- yield indent(&"writeMessage(stream, message.{field.accessor}, {field.number})", 8)
- else:
- yield indent(&"{writer}(stream, message.{field.accessor}, {field.number})", 8)
+ yield indent(&"{field.writeProc}(stream, message.{field.accessor}, {field.number})", 8)
if len(msg.fields) == 0:
yield indent("discard", 4)
@@ -647,7 +648,7 @@ iterator genReadMapKVProc(msg: Message): string =
yield indent("wireType = getTagWireType(tag)", 12)
yield indent("case getTagFieldNumber(tag)", 8)
yield indent(&"of {key.number}:", 8)
- yield indent(&"key = read{key.typeName}(stream)", 12)
+ yield indent(&"key = {key.readProc}(stream)", 12)
yield indent("gotKey = true", 12)
yield indent(&"of {value.number}:", 8)
if isMessage(value):
@@ -655,9 +656,9 @@ iterator genReadMapKVProc(msg: Message): string =
yield indent("size = readVarint(stream)", 16)
yield indent("data = safeReadStr(stream, int(size))", 16)
yield indent("pbs = newProtobufStream(newStringStream(data))", 16)
- yield indent(&"value = read{value.typeName}(pbs)", 12)
+ yield indent(&"value = {value.readProc}(pbs)", 12)
else:
- yield indent(&"value = read{value.typeName}(stream)", 12)
+ yield indent(&"value = {value.readProc}(stream)", 12)
yield indent("gotValue = true", 12)
yield indent("else: skipField(stream, wireType)", 8)
yield indent("if not gotKey:", 4)
@@ -680,7 +681,6 @@ iterator genReadMessageProc(msg: Message): string =
yield indent("raise newException(InvalidFieldNumberError, \"Invalid field number: 0\")", 12)
for field in msg.fields:
let
- reader = &"read{field.typeName}"
setter =
if isRepeated(field):
&"add{field.name}"
@@ -694,7 +694,7 @@ iterator genReadMessageProc(msg: Message): string =
yield indent("size = readVarint(stream)", 16)
yield indent("data = safeReadStr(stream, int(size))", 16)
yield indent("pbs = newProtobufStream(newStringStream(data))", 16)
- yield indent(&"read{field.typeName}KV(pbs, result.{field.name})", 12)
+ yield indent(&"{field.readProc}(pbs, result.{field.name})", 12)
elif isNumeric(field):
yield indent(&"expectWireType(wireType, {field.wiretypeStr}, WireType.LengthDelimited)", 12)
yield indent("if wireType == WireType.LengthDelimited:", 12)
@@ -703,22 +703,22 @@ iterator genReadMessageProc(msg: Message): string =
yield indent("start = uint64(getPosition(stream))", 20)
yield indent("var consumed = 0'u64", 16)
yield indent("while consumed < size:", 16)
- yield indent(&"{setter}(result, {reader}(stream))", 20)
+ yield indent(&"{setter}(result, {field.readProc}(stream))", 20)
yield indent("consumed = uint64(getPosition(stream)) - start", 20)
yield indent("if consumed != size:", 16)
yield indent("raise newException(Exception, \"packed field size mismatch\")", 20)
yield indent("else:", 12)
- yield indent(&"{setter}(result, {reader}(stream))", 16)
+ 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, {reader}(pbs))", 12)
+ yield indent(&"{setter}(result, {field.readProc}(pbs))", 12)
else:
yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12)
- yield indent(&"{setter}(result, {reader}(stream))", 12)
+ yield indent(&"{setter}(result, {field.readProc}(stream))", 12)
else:
yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12)
if isMessage(field):
@@ -726,9 +726,9 @@ iterator genReadMessageProc(msg: Message): string =
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, {reader}(pbs))", 12)
+ yield indent(&"{setter}(result, {field.readProc}(pbs))", 12)
else:
- yield indent(&"{setter}(result, {reader}(stream))", 12)
+ yield indent(&"{setter}(result, {field.readProc}(stream))", 12)
yield indent("else: skipField(stream, wireType)", 8)
yield ""