From d0d7fd08f350389ced2b39700aacc6fd96b38cfd Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Fri, 6 Apr 2018 19:32:12 +0300 Subject: Handle defaults for enums better --- src/nimpb_buildpkg/plugin.nim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') 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 = -- cgit v1.2.3