diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-06 19:32:12 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-06 19:32:12 +0300 |
| commit | d0d7fd08f350389ced2b39700aacc6fd96b38cfd (patch) | |
| tree | 57236c5ca02580225e9e23ea4b7b0e1a7e0a7870 /src/nimpb_buildpkg/plugin.nim | |
| parent | 5d8a2a81240afa6afffa9fab946fe16775e558ba (diff) | |
| download | nimpb_protoc-d0d7fd08f350389ced2b39700aacc6fd96b38cfd.tar.gz nimpb_protoc-d0d7fd08f350389ced2b39700aacc6fd96b38cfd.zip | |
Handle defaults for enums better
Diffstat (limited to 'src/nimpb_buildpkg/plugin.nim')
| -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 = |
