show commit message; added nimc cfg
[d2df-bot.git] / src / rawread.nim
blob97da8aaadb165694e0918022dc206a8ace4a2d9f
1 type
2   ByteBuffer {.unchecked.} = array[0..1, uint8]
4 var rawBase: ptr ByteBuffer = nil
5 var rawPtr: uint = 0
7 proc readByte*(): uint8 {.inline.} =
8   result = rawBase[rawPtr]
9   rawPtr += 1
11 proc readWord*(): uint16 {.inline.} =
12   result = cast[ptr uint16](addr rawBase[rawPtr])[]
13   rawPtr += 2
15 proc readLongWord*(): uint32 {.inline.} =
16   result = cast[ptr uint32](addr rawBase[rawPtr])[]
17   rawPtr += 4
19 proc readString*(): string {.inline.} =
20   var slen = rawBase[rawPtr]
21   rawPtr += 1
22   result = ""
23   if slen == 0: return
24   for i in rawPtr ..< rawPtr + slen:
25     result.add(rawBase[i].char)
26   rawPtr += slen
28 template withRawBuffer*(buf: pointer, body: untyped) =
29   rawBase = cast[ptr ByteBuffer](buf)
30   rawPtr = 0
31   body