diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-07 10:30:23 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-07 10:36:19 +0300 |
| commit | c95199eadb76d139eb67f07d8eb64142d691fae7 (patch) | |
| tree | 395762fc8631dc94bada91ef7eb92191cac926ad | |
| parent | cde40dc086f7df2b1522d5e254bb901706ba935f (diff) | |
| download | nimpb-c95199eadb76d139eb67f07d8eb64142d691fae7.tar.gz nimpb-c95199eadb76d139eb67f07d8eb64142d691fae7.zip | |
Add sizeOfUnknownField()
| -rw-r--r-- | src/nimpb/nimpb.nim | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/nimpb/nimpb.nim b/src/nimpb/nimpb.nim index ea7cedd..4363c7d 100644 --- a/src/nimpb/nimpb.nim +++ b/src/nimpb/nimpb.nim @@ -589,3 +589,17 @@ proc writeUnknownFields*(stream: ProtobufStream, fields: seq[UnknownField]) = proc discardUnknownFields*[T](message: T) = message.unknownFields = @[] + +proc sizeOfUnknownField*(field: UnknownField): uint64 = + result = sizeOfTag(field.fieldNumber, field.wiretype) + case field.wiretype + of WireType.Varint: + result = result + sizeOfVarint(field.vint) + of WireType.Fixed64: + result = result + 8 + of WireType.Fixed32: + result = result + 4 + of WireType.LengthDelimited: + result = result + sizeOfLengthDelimited(uint64(len(field.data))) + else: + raise newException(Exception, "unsupported wiretype: " & $field.wiretype) |
