MCPcopy Create free account
hub / github.com/apache/fory / WriteVaruint36Small

Method WriteVaruint36Small

go/fory/buffer.go:952–983  ·  view source on GitHub ↗

WriteVaruint36Small writes a varint optimized for small values (up to 36 bits) Used for string headers: (length << 2) | encoding

(value uint64)

Source from the content-addressed store, hash-verified

950// WriteVaruint36Small writes a varint optimized for small values (up to 36 bits)
951// Used for string headers: (length << 2) | encoding
952func (b *ByteBuffer) WriteVaruint36Small(value uint64) {
953 b.grow(5)
954 offset := b.writerIndex
955 data := b.data[offset:]
956
957 if value < 0x80 {
958 data[0] = byte(value)
959 b.writerIndex += 1
960 } else if value < 0x4000 {
961 data[0] = byte(value&0x7F) | 0x80
962 data[1] = byte(value >> 7)
963 b.writerIndex += 2
964 } else if value < 0x200000 {
965 data[0] = byte(value&0x7F) | 0x80
966 data[1] = byte((value>>7)&0x7F) | 0x80
967 data[2] = byte(value >> 14)
968 b.writerIndex += 3
969 } else if value < 0x10000000 {
970 data[0] = byte(value&0x7F) | 0x80
971 data[1] = byte((value>>7)&0x7F) | 0x80
972 data[2] = byte((value>>14)&0x7F) | 0x80
973 data[3] = byte(value >> 21)
974 b.writerIndex += 4
975 } else {
976 data[0] = byte(value&0x7F) | 0x80
977 data[1] = byte((value>>7)&0x7F) | 0x80
978 data[2] = byte((value>>14)&0x7F) | 0x80
979 data[3] = byte((value>>21)&0x7F) | 0x80
980 data[4] = byte(value >> 28)
981 b.writerIndex += 5
982 }
983}
984
985// ReadVaruint36Small reads a varint optimized for small values (up to 36 bits)
986// Used for string headers: (length << 2) | encoding

Callers 2

writeStringFunction · 0.80

Calls 1

growMethod · 0.95

Tested by 1