diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2014-01-18 15:05:57 -0800 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2014-01-18 15:05:57 -0800 |
commit | f4b81ba92bdf413c70a2276b327bf7e0f433ba73 (patch) | |
tree | 26ca2c980dcef7555958d709c6bcb3b76faced30 /lib/pure | |
parent | 899d286d2bd26c24fc7fde4ea747b9ad92a3256e (diff) | |
parent | b3057be2c9a2b354ad1244814a2cac3968cc4d65 (diff) | |
download | Nim-f4b81ba92bdf413c70a2276b327bf7e0f433ba73.tar.gz |
Merge pull request #775 from fowlmouth/patch-3
Update endians.nim
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/endians.nim | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/pure/endians.nim b/lib/pure/endians.nim index 34270b320..73017464d 100644 --- a/lib/pure/endians.nim +++ b/lib/pure/endians.nim @@ -34,14 +34,26 @@ proc swapEndian32*(outp, inp: pointer) = o[2] = i[1] o[3] = i[0] +proc swapEndian16*(outp, inp: pointer) = + ## copies `inp` to `outp` swapping bytes. Both buffers are supposed to + ## contain at least 2 bytes. + var + i = cast[cstring](inp) + o = cast[cstring](outp) + o[0] = i[1] + o[1] = i[0] + when system.cpuEndian == bigEndian: proc littleEndian64*(outp, inp: pointer) {.inline.} = swapEndian64(outp, inp) proc littleEndian32*(outp, inp: pointer) {.inline.} = swapEndian32(outp, inp) + proc littleEndian16*(outp, inp: pointer) {.inline.} = swapEndian16(outp, inp) proc bigEndian64*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 8) proc bigEndian32*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 4) + proc bigEndian16*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 2) else: proc littleEndian64*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 8) proc littleEndian32*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 4) + proc littleEndian16*(outp, inp: pointer){.inline.} = copyMem(outp, inp, 2) proc bigEndian64*(outp, inp: pointer) {.inline.} = swapEndian64(outp, inp) proc bigEndian32*(outp, inp: pointer) {.inline.} = swapEndian32(outp, inp) - + proc bigEndian16*(outp, inp: pointer) {.inline.} = swapEndian16(outp, inp) |