aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-07 10:30:23 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-07 10:36:19 +0300
commitc95199eadb76d139eb67f07d8eb64142d691fae7 (patch)
tree395762fc8631dc94bada91ef7eb92191cac926ad
parentcde40dc086f7df2b1522d5e254bb901706ba935f (diff)
downloadnimpb-c95199eadb76d139eb67f07d8eb64142d691fae7.tar.gz
nimpb-c95199eadb76d139eb67f07d8eb64142d691fae7.zip
Add sizeOfUnknownField()
-rw-r--r--src/nimpb/nimpb.nim14
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)