19
19
#ifndef BYTEORDER_H
20
20
#define BYTEORDER_H
21
21
22
- #include < inttypes.h>
23
- #include < string.h>
22
+ #include " local_config.h"
23
+
24
+ #include < cinttypes>
25
+ #include < cstring>
24
26
25
27
#ifndef BYTE_ORDER
26
28
#define LITTLE_ENDIAN 1234
@@ -31,6 +33,8 @@ extern int __endianess__;
31
33
#define is_big_endian (BYTE_ORDER == BIG_ENDIAN)
32
34
#define is_little_endian (BYTE_ORDER == LITTLE_ENDIAN)
33
35
36
+ namespace NSROOT
37
+ {
34
38
35
39
template <typename T> inline T fromUnaligned (const void * data)
36
40
{
@@ -44,24 +48,24 @@ template <typename T> inline void toUnaligned(void * data, T val)
44
48
memcpy (data, &val, sizeof (T));
45
49
}
46
50
47
- static inline int8_t read8 (const void * data)
51
+ inline int8_t read8 (const void * data)
48
52
{
49
53
return fromUnaligned<int8_t >(data);
50
54
}
51
55
52
- static inline void write8 (void * data, int8_t val)
56
+ inline void write8 (void * data, int8_t val)
53
57
{
54
58
toUnaligned (data, val);
55
59
}
56
60
57
- static inline int16_t swap16 (int16_t val)
61
+ inline int16_t swap16 (int16_t val)
58
62
{
59
63
return (int16_t )(0 |
60
64
(((uint32_t )val & 0x00ff ) << 8 ) |
61
65
(((uint32_t )val & 0xff00 ) >> 8 ));
62
66
}
63
67
64
- static inline int32_t swap32 (int32_t val)
68
+ inline int32_t swap32 (int32_t val)
65
69
{
66
70
return (int32_t )(0 |
67
71
(((uint32_t )val & 0x000000ff ) << 24 ) |
@@ -71,39 +75,39 @@ static inline int32_t swap32(int32_t val)
71
75
);
72
76
}
73
77
74
- static inline int16_t read16le (const void * data)
78
+ inline int16_t read16le (const void * data)
75
79
{
76
80
int16_t val = fromUnaligned<int16_t >(data);
77
81
if (is_little_endian)
78
82
return val;
79
83
return swap16 (val);
80
84
}
81
85
82
- static inline void write16le (void * data, int16_t val)
86
+ inline void write16le (void * data, int16_t val)
83
87
{
84
88
if (is_little_endian)
85
89
toUnaligned (data, val);
86
90
else
87
91
toUnaligned (data, swap16 (val));
88
92
}
89
93
90
- static inline int16_t read16be (const void * data)
94
+ inline int16_t read16be (const void * data)
91
95
{
92
96
int16_t val = fromUnaligned<int16_t >(data);
93
97
if (is_big_endian)
94
98
return val;
95
99
return swap16 (val);
96
100
}
97
101
98
- static inline void write16be (void * data, int16_t val)
102
+ inline void write16be (void * data, int16_t val)
99
103
{
100
104
if (is_big_endian)
101
105
toUnaligned (data, val);
102
106
else
103
107
toUnaligned (data, swap16 (val));
104
108
}
105
109
106
- static inline int32_t read24le (const void * data)
110
+ inline int32_t read24le (const void * data)
107
111
{
108
112
const char * p = (const char *)data;
109
113
int32_t val = fromUnaligned<uint8_t >(&p[2 ]) << 16 ;
@@ -114,7 +118,7 @@ static inline int32_t read24le(const void * data)
114
118
return val;
115
119
}
116
120
117
- static inline int32_t read24be (const void * data)
121
+ inline int32_t read24be (const void * data)
118
122
{
119
123
const char * p = (const char *)data;
120
124
int32_t val = fromUnaligned<uint8_t >(&p[0 ]) << 16 ;
@@ -125,37 +129,39 @@ static inline int32_t read24be(const void * data)
125
129
return val;
126
130
}
127
131
128
- static inline int32_t read32le (const void * data)
132
+ inline int32_t read32le (const void * data)
129
133
{
130
134
int32_t val = fromUnaligned<int32_t >(data);
131
135
if (is_little_endian)
132
136
return val;
133
137
return swap32 (val);
134
138
}
135
139
136
- static inline void write32le (void * data, int32_t val)
140
+ inline void write32le (void * data, int32_t val)
137
141
{
138
142
if (is_little_endian)
139
143
toUnaligned (data, val);
140
144
else
141
145
toUnaligned (data, swap32 (val));
142
146
}
143
147
144
- static inline int32_t read32be (const void * data)
148
+ inline int32_t read32be (const void * data)
145
149
{
146
150
int32_t val = fromUnaligned<int32_t >(data);
147
151
if (is_big_endian)
148
152
return val;
149
153
return swap32 (val);
150
154
}
151
155
152
- static inline void write32be (void * data, int32_t val)
156
+ inline void write32be (void * data, int32_t val)
153
157
{
154
158
if (is_big_endian)
155
159
toUnaligned (data, val);
156
160
else
157
161
toUnaligned (data, swap32 (val));
158
162
}
159
163
164
+ }
165
+
160
166
#endif /* BYTEORDER_H */
161
167
0 commit comments