diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nimpb_buildpkg/plugin.nim | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nimpb_buildpkg/plugin.nim b/src/nimpb_buildpkg/plugin.nim index ae5aa31..1691e6b 100644 --- a/src/nimpb_buildpkg/plugin.nim +++ b/src/nimpb_buildpkg/plugin.nim @@ -18,6 +18,7 @@ type Enum = ref object names: Names values: seq[tuple[name: string, number: int]] + defaultValue: string Field = ref object number: int @@ -192,10 +193,13 @@ proc defaultValue(field: Field): string = return &"newTable[{field.mapKeyType}, {field.mapValueType}]()" elif isRepeated(field): return "@[]" + elif isEnum(field): + for e in field.message.file.enums: + if $e.names == field.typeName: + result = e.defaultValue + break else: result = defaultValue(field.ftype) - if isEnum(field): - result = &"cast[{field.typeName}]({result})" proc wiretypeStr(field: Field): string = result = "WireType." @@ -361,6 +365,8 @@ proc newEnum(names: Names, desc: google_protobuf_EnumDescriptorProto): Enum = for value in desc.value: add(result.values, (value.name, int(value.number))) + result.defaultValue = &"{result.names}.{result.values[0].name}" + type EnumValue = tuple[name: string, number: int] sort(result.values, proc (x, y: EnumValue): int = |
