diff options
| -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) |
