chiark / gitweb /
Fix compilation for Gtk with the new, stricter inheritance
[clg] / gffi / alien / memory.c
CommitLineData
dcd4ab9d 1#include <stdint.h>
2
3uint16_t gffi_get_uint_16_swapped (uint8_t* location, int offset)
4{
5 uint8_t buf[2];
6 buf[1] = location[offset];
7 buf[0] = location[offset + 1];
8 return *(uint16_t*)buf;
9}
10
11void gffi_set_uint_16_swapped (uint8_t* location, int offset, uint16_t value)
12{
13 uint8_t *buf = (uint8_t*)&value;
14
15 location[offset + 0] = buf[1];
16 location[offset + 1] = buf[0];
17}
18
19uint32_t gffi_get_uint_32_swapped (uint8_t* location, int offset)
20{
21 uint8_t buf[4];
22 buf[3] = location[offset];
23 buf[2] = location[offset + 1];
24 buf[1] = location[offset + 2];
25 buf[0] = location[offset + 3];
26 return *(uint32_t*)buf;
27}
28
29void gffi_set_uint_32_swapped (uint8_t* location, int offset, uint32_t value)
30{
31 uint8_t *buf = (uint8_t*)&value;
32
33 location[offset + 0] = buf[3];
34 location[offset + 1] = buf[2];
35 location[offset + 2] = buf[1];
36 location[offset + 3] = buf[0];
37}
38
39uint64_t gffi_get_uint_64_swapped (uint8_t* location, int offset)
40{
41 uint8_t buf[8];
42 buf[7] = location[offset];
43 buf[6] = location[offset + 1];
44 buf[5] = location[offset + 2];
45 buf[4] = location[offset + 3];
46 buf[3] = location[offset + 4];
47 buf[2] = location[offset + 5];
48 buf[1] = location[offset + 6];
49 buf[0] = location[offset + 7];
50 return *(uint64_t*)buf;
51}
52
53void gffi_set_uint_64_swapped (uint8_t* location, int offset, uint64_t value)
54{
55 uint8_t *buf = (uint8_t*)&value;
56
57 location[offset + 0] = buf[7];
58 location[offset + 1] = buf[6];
59 location[offset + 2] = buf[5];
60 location[offset + 3] = buf[4];
61 location[offset + 4] = buf[3];
62 location[offset + 5] = buf[2];
63 location[offset + 6] = buf[1];
64 location[offset + 7] = buf[0];
65}
66
67int16_t gffi_get_int_16_swapped (int8_t* location, int offset)
68{
69 int8_t buf[2];
70 buf[1] = location[offset];
71 buf[0] = location[offset + 1];
72 return *(int16_t*)buf;
73}
74
75void gffi_set_int_16_swapped (uint8_t* location, int offset, int16_t value)
76{
77 uint8_t *buf = (uint8_t*)&value;
78
79 location[offset + 0] = buf[1];
80 location[offset + 1] = buf[0];
81}
82
83int32_t gffi_get_int_32_swapped (int8_t* location, int offset)
84{
85 int8_t buf[4];
86 buf[3] = location[offset];
87 buf[2] = location[offset + 1];
88 buf[1] = location[offset + 2];
89 buf[0] = location[offset + 3];
90 return *(int32_t*)buf;
91}
92
93void gffi_set_int_32_swapped (uint8_t* location, int offset, int32_t value)
94{
95 uint8_t *buf = (uint8_t*)&value;
96
97 location[offset + 0] = buf[3];
98 location[offset + 1] = buf[2];
99 location[offset + 2] = buf[1];
100 location[offset + 3] = buf[0];
101}
102
103int64_t gffi_get_int_64_swapped (int8_t* location, int offset)
104{
105 int8_t buf[8];
106 buf[7] = location[offset];
107 buf[6] = location[offset + 1];
108 buf[5] = location[offset + 2];
109 buf[4] = location[offset + 3];
110 buf[3] = location[offset + 4];
111 buf[2] = location[offset + 5];
112 buf[1] = location[offset + 6];
113 buf[0] = location[offset + 7];
114 return *(int64_t*)buf;
115}
116
117void gffi_set_int_64_swapped (uint8_t* location, int offset, int64_t value)
118{
119 uint8_t *buf = (uint8_t*)&value;
120
121 location[offset + 0] = buf[7];
122 location[offset + 1] = buf[6];
123 location[offset + 2] = buf[5];
124 location[offset + 3] = buf[4];
125 location[offset + 4] = buf[3];
126 location[offset + 5] = buf[2];
127 location[offset + 6] = buf[1];
128 location[offset + 7] = buf[0];
129}
130
131float gffi_get_single_float_swapped (int8_t* location, int offset)
132{
133 int8_t buf[4];
134 buf[3] = location[offset];
135 buf[2] = location[offset + 1];
136 buf[1] = location[offset + 2];
137 buf[0] = location[offset + 3];
138 return *(float*)buf;
139}
140
141void gffi_set_single_float_swapped (uint8_t* location, int offset, float value)
142{
143 uint8_t *buf = (uint8_t*)&value;
144
145 location[offset + 0] = buf[3];
146 location[offset + 1] = buf[2];
147 location[offset + 2] = buf[1];
148 location[offset + 3] = buf[0];
149}
150
151double gffi_get_double_float_swapped (int8_t* location, int offset)
152{
153 int8_t buf[8];
154 buf[7] = location[offset];
155 buf[6] = location[offset + 1];
156 buf[5] = location[offset + 2];
157 buf[4] = location[offset + 3];
158 buf[3] = location[offset + 4];
159 buf[2] = location[offset + 5];
160 buf[1] = location[offset + 6];
161 buf[0] = location[offset + 7];
162 return *(double*)buf;
163}
164
165void gffi_set_double_float_swapped (uint8_t* location, int offset, double value)
166{
167 uint8_t *buf = (uint8_t*)&value;
168
169 location[offset + 0] = buf[7];
170 location[offset + 1] = buf[6];
171 location[offset + 2] = buf[5];
172 location[offset + 3] = buf[4];
173 location[offset + 4] = buf[3];
174 location[offset + 5] = buf[2];
175 location[offset + 6] = buf[1];
176 location[offset + 7] = buf[0];
177}