2 ByteBuffer {.unchecked.} = array[0..1, uint8]
4 var rawBase: ptr ByteBuffer = nil
7 proc readByte*(): uint8 {.inline.} =
8 result = rawBase[rawPtr]
11 proc readWord*(): uint16 {.inline.} =
12 result = cast[ptr uint16](addr rawBase[rawPtr])[]
15 proc readLongWord*(): uint32 {.inline.} =
16 result = cast[ptr uint32](addr rawBase[rawPtr])[]
19 proc readString*(): string {.inline.} =
20 var slen = rawBase[rawPtr]
24 for i in rawPtr ..< rawPtr + slen:
25 result.add(rawBase[i].char)
28 template withRawBuffer*(buf: pointer, body: untyped) =
29 rawBase = cast[ptr ByteBuffer](buf)