summary refs log tree commit diff stats
path: root/lib/pure/endians.nim
diff options
context:
space:
mode:
authorBillingsly Wetherfordshire <phowl.mouth@gmail.com>2013-12-23 11:52:11 -0600
committerBillingsly Wetherfordshire <phowl.mouth@gmail.com>2013-12-23 11:52:11 -0600
commitb3057be2c9a2b354ad1244814a2cac3968cc4d65 (patch)
tree199d6f234c1ff6c2bb05fa952bdf85f522788820 /lib/pure/endians.nim
parentc3b3339e779dfe19ed1891295a763aea47981131 (diff)
downloadNim-b3057be2c9a2b354ad1244814a2cac3968cc4d65.tar.gz
Update endians.nim
adds swapEndian16 function
Diffstat (limited to 'lib/pure/endians.nim')
-rw-r--r--lib/pure/endians.nim14
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)
.org> 2019-04-10 15:55:57 +0200 committer Andreas Rumpf <rumpf_a@web.de> 2019-04-10 15:55:57 +0200 rst: parse brackets individually, fixes #10475 (#10997)' href='/ahoang/Nim/commit/tests/stdlib/trstgen.nim?h=devel&id=1494d88fa27a31b46884799b2ff9712c73937551'>1494d88fa ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155