|
FreeRDP
|
20 #ifndef WINPR_ENDIAN_H
21 #define WINPR_ENDIAN_H
23 #include <winpr/winpr.h>
24 #include <winpr/wtypes.h>
25 #include <winpr/platform.h>
32 #define Data_Read_UINT8_NE(_d, _v) \
35 _v = *((const BYTE*)_d); \
38 #define Data_Read_UINT8(_d, _v) \
41 _v = *((const BYTE*)_d); \
44 #define Data_Read_UINT16_NE(_d, _v) \
47 _v = *((const UINT16*)_d); \
50 #define Data_Read_UINT16(_d, _v) \
53 _v = (UINT16)(*((const BYTE*)_d)) + (UINT16)(((UINT16)(*((const BYTE*)_d + 1))) << 8); \
56 #define Data_Read_UINT16_BE(_d, _v) \
59 _v = (((UINT16)(*(const BYTE*)_d)) << 8) + (UINT16)(*((const BYTE*)_d + 1)); \
62 #define Data_Read_UINT32_NE(_d, _v) \
65 _v = *((UINT32*)_d); \
68 #define Data_Read_UINT32(_d, _v) \
71 _v = (UINT32)(*((const BYTE*)_d)) + (((UINT32)(*((const BYTE*)_d + 1))) << 8) + \
72 (((UINT32)(*((const BYTE*)_d + 2))) << 16) + \
73 (((UINT32)(*((const BYTE*)_d + 3))) << 24); \
76 #define Data_Read_UINT32_BE(_d, _v) \
79 _v = (((UINT32)(*((const BYTE*)_d))) << 24) + (((UINT32)(*((const BYTE*)_d + 1))) << 16) + \
80 (((UINT32)(*((const BYTE*)_d + 2))) << 8) + (((UINT32)(*((const BYTE*)_d + 3)))); \
83 #define Data_Read_UINT64_NE(_d, _v) \
86 _v = *((UINT64*)_d); \
89 #define Data_Read_UINT64(_d, _v) \
92 _v = (UINT64)(*((const BYTE*)_d)) + (((UINT64)(*((const BYTE*)_d + 1))) << 8) + \
93 (((UINT64)(*((const BYTE*)_d + 2))) << 16) + \
94 (((UINT64)(*((const BYTE*)_d + 3))) << 24) + \
95 (((UINT64)(*((const BYTE*)_d + 4))) << 32) + \
96 (((UINT64)(*((const BYTE*)_d + 5))) << 40) + \
97 (((UINT64)(*((const BYTE*)_d + 6))) << 48) + \
98 (((UINT64)(*((const BYTE*)_d + 7))) << 56); \
101 #define Data_Read_UINT64_BE(_d, _v) \
104 _v = (((UINT64)(*((const BYTE*)_d))) << 56) + (((UINT64)(*((const BYTE*)_d + 1))) << 48) + \
105 (((UINT64)(*((const BYTE*)_d + 2))) << 40) + \
106 (((UINT64)(*((const BYTE*)_d + 3))) << 32) + \
107 (((UINT64)(*((const BYTE*)_d + 4))) << 24) + \
108 (((UINT64)(*((const BYTE*)_d + 5))) << 16) + \
109 (((UINT64)(*((const BYTE*)_d + 6))) << 8) + (((UINT64)(*((const BYTE*)_d + 7)))); \
112 #define Data_Write_UINT8_NE(_d, _v) \
118 #define Data_Write_UINT8(_d, _v) \
124 #define Data_Write_UINT16_NE(_d, _v) \
127 *((UINT16*)_d) = _v; \
130 #define Data_Write_UINT16(_d, _v) \
133 *((BYTE*)_d) = (_v)&0xFF; \
134 *((BYTE*)_d + 1) = ((_v) >> 8) & 0xFF; \
137 #define Data_Write_UINT16_BE(_d, _v) \
140 *((BYTE*)_d) = ((_v) >> 8) & 0xFF; \
141 *((BYTE*)_d + 1) = (_v)&0xFF; \
144 #define Data_Write_UINT32_NE(_d, _v) \
147 *((UINT32*)_d) = _v; \
150 #define Data_Write_UINT32(_d, _v) \
153 *((BYTE*)_d) = (_v)&0xFF; \
154 *((BYTE*)_d + 1) = ((_v) >> 8) & 0xFF; \
155 *((BYTE*)_d + 2) = ((_v) >> 16) & 0xFF; \
156 *((BYTE*)_d + 3) = ((_v) >> 24) & 0xFF; \
159 #define Data_Write_UINT32_BE(_d, _v) \
162 Data_Write_UINT16_BE((BYTE*)_d, ((_v) >> 16 & 0xFFFF)); \
163 Data_Write_UINT16_BE((BYTE*)_d + 2, ((_v)&0xFFFF)); \
166 #define Data_Write_UINT64_NE(_d, _v) \
169 *((UINT64*)_d) = _v; \
172 #define Data_Write_UINT64(_d, _v) \
175 *((BYTE*)_d) = (UINT64)(_v)&0xFF; \
176 *((BYTE*)_d + 1) = ((UINT64)(_v) >> 8) & 0xFF; \
177 *((BYTE*)_d + 2) = ((UINT64)(_v) >> 16) & 0xFF; \
178 *((BYTE*)_d + 3) = ((UINT64)(_v) >> 24) & 0xFF; \
179 *((BYTE*)_d + 4) = ((UINT64)(_v) >> 32) & 0xFF; \
180 *((BYTE*)_d + 5) = ((UINT64)(_v) >> 40) & 0xFF; \
181 *((BYTE*)_d + 6) = ((UINT64)(_v) >> 48) & 0xFF; \
182 *((BYTE*)_d + 7) = ((UINT64)(_v) >> 56) & 0xFF; \
185 #define Data_Write_UINT64_BE(_d, _v) \
188 Data_Write_UINT32_BE((BYTE*)_d, ((_v) >> 32 & 0xFFFFFFFF)); \
189 Data_Write_UINT32_BE((BYTE*)_d + 4, ((_v)&0xFFFFFFFF)); \