41#if (defined(_MSC_VER) && !defined(__clang__)) || defined(__INTEL_COMPILER) || defined(__INTEL_LLVM_COMPILER)
53#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__INTEL_LLVM_COMPILER) && !defined(__clang__)
62#define pint_bswap16(x) _byteswap_ushort(x)
63#define pint_bswap32(x) _byteswap_ulong(x)
65#define pint_bswap64(x) _byteswap_uint64(x)
66#elif defined(__INTEL_COMPILER)
72#define pint_bswap16(x) _bswap16(x)
73#define pint_bswap32(x) _bswap32(x)
74#define pint_bswap64(x) _bswap64(x)
90#define pint_bswap16(x) __builtin_bswap16(x)
91#define pint_bswap32(x) __builtin_bswap32(x)
92#define pint_bswap64(x) __builtin_bswap64(x)
95static inline uint16_t pntohu16(
const void *p)
98 memcpy(&ret, p,
sizeof(ret));
99#if G_BYTE_ORDER == G_LITTLE_ENDIAN
100 ret = pint_bswap16(ret);
105static inline uint32_t pntohu32(
const void *p)
108 memcpy(&ret, p,
sizeof(ret));
109#if G_BYTE_ORDER == G_LITTLE_ENDIAN
110 ret = pint_bswap32(ret);
115static inline uint64_t pntohu64(
const void *p)
118 memcpy(&ret, p,
sizeof(ret));
119#if G_BYTE_ORDER == G_LITTLE_ENDIAN
120 ret = pint_bswap64(ret);
125static inline uint16_t pletohu16(
const void *p)
128 memcpy(&ret, p,
sizeof(ret));
129#if G_BYTE_ORDER == G_BIG_ENDIAN
130 ret = pint_bswap16(ret);
135static inline uint32_t pletohu32(
const void *p)
138 memcpy(&ret, p,
sizeof(ret));
139#if G_BYTE_ORDER == G_BIG_ENDIAN
140 ret = pint_bswap32(ret);
145static inline uint64_t pletohu64(
const void *p)
148 memcpy(&ret, p,
sizeof(ret));
149#if G_BYTE_ORDER == G_BIG_ENDIAN
150 ret = pint_bswap64(ret);
155static inline void phtonu16(uint8_t *p, uint16_t v)
157#if G_BYTE_ORDER == G_LITTLE_ENDIAN
160 memcpy(p, &v,
sizeof(v));
163static inline void phtonu32(uint8_t *p, uint32_t v)
165#if G_BYTE_ORDER == G_LITTLE_ENDIAN
168 memcpy(p, &v,
sizeof(v));
171static inline void phtonu64(uint8_t *p, uint64_t v) {
172#if G_BYTE_ORDER == G_LITTLE_ENDIAN
175 memcpy(p, &v,
sizeof(v));
178static inline void phtoleu16(uint8_t *p, uint32_t v)
180#if G_BYTE_ORDER == G_BIG_ENDIAN
183 memcpy(p, &v,
sizeof(v));
186static inline void phtoleu32(uint8_t *p, uint32_t v)
188#if G_BYTE_ORDER == G_BIG_ENDIAN
191 memcpy(p, &v,
sizeof(v));
194static inline void phtoleu64(uint8_t *p, uint64_t v) {
195#if G_BYTE_ORDER == G_BIG_ENDIAN
198 memcpy(p, &v,
sizeof(v));
203static inline uint16_t pntohu16(
const void *p)
205 return (uint16_t)*((
const uint8_t *)(p)+0)<<8|
206 (uint16_t)*((
const uint8_t *)(p)+1)<<0;
209static inline uint32_t pntohu32(
const void *p)
211 return (uint32_t)*((
const uint8_t *)(p)+0)<<24|
212 (uint32_t)*((
const uint8_t *)(p)+1)<<16|
213 (uint32_t)*((
const uint8_t *)(p)+2)<<8|
214 (uint32_t)*((
const uint8_t *)(p)+3)<<0;
217static inline uint64_t pntohu64(
const void *p)
219 return (uint64_t)*((
const uint8_t *)(p)+0)<<56|
220 (uint64_t)*((
const uint8_t *)(p)+1)<<48|
221 (uint64_t)*((
const uint8_t *)(p)+2)<<40|
222 (uint64_t)*((
const uint8_t *)(p)+3)<<32|
223 (uint64_t)*((
const uint8_t *)(p)+4)<<24|
224 (uint64_t)*((
const uint8_t *)(p)+5)<<16|
225 (uint64_t)*((
const uint8_t *)(p)+6)<<8|
226 (uint64_t)*((
const uint8_t *)(p)+7)<<0;
229static inline uint16_t pletohu16(
const void *p)
231 return (uint16_t)*((
const uint8_t *)(p)+1)<<8|
232 (uint16_t)*((
const uint8_t *)(p)+0)<<0;
235static inline uint32_t pletohu32(
const void *p)
237 return (uint32_t)*((
const uint8_t *)(p)+3)<<24|
238 (uint32_t)*((
const uint8_t *)(p)+2)<<16|
239 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
240 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
243static inline uint64_t pletohu64(
const void *p)
245 return (uint64_t)*((
const uint8_t *)(p)+7)<<56|
246 (uint64_t)*((
const uint8_t *)(p)+6)<<48|
247 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
248 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
249 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
250 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
251 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
252 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
259static inline void phtonu16(uint8_t *p, uint16_t v)
261 p[0] = (uint8_t)(v >> 8);
262 p[1] = (uint8_t)(v >> 0);
265static inline void phtonu32(uint8_t *p, uint32_t v)
267 p[0] = (uint8_t)(v >> 24);
268 p[1] = (uint8_t)(v >> 16);
269 p[2] = (uint8_t)(v >> 8);
270 p[3] = (uint8_t)(v >> 0);
273static inline void phtonu64(uint8_t *p, uint64_t v) {
274 p[0] = (uint8_t)(v >> 56);
275 p[1] = (uint8_t)(v >> 48);
276 p[2] = (uint8_t)(v >> 40);
277 p[3] = (uint8_t)(v >> 32);
278 p[4] = (uint8_t)(v >> 24);
279 p[5] = (uint8_t)(v >> 16);
280 p[6] = (uint8_t)(v >> 8);
281 p[7] = (uint8_t)(v >> 0);
284static inline void phtoleu16(uint8_t *p, uint16_t v)
286 p[0] = (uint8_t)(v >> 0);
287 p[1] = (uint8_t)(v >> 8);
290static inline void phtoleu32(uint8_t *p, uint32_t v) {
291 p[0] = (uint8_t)(v >> 0);
292 p[1] = (uint8_t)(v >> 8);
293 p[2] = (uint8_t)(v >> 16);
294 p[3] = (uint8_t)(v >> 24);
297static inline void phtoleu64(uint8_t *p, uint64_t v) {
298 p[0] = (uint8_t)(v >> 0);
299 p[1] = (uint8_t)(v >> 8);
300 p[2] = (uint8_t)(v >> 16);
301 p[3] = (uint8_t)(v >> 24);
302 p[4] = (uint8_t)(v >> 32);
303 p[5] = (uint8_t)(v >> 40);
304 p[6] = (uint8_t)(v >> 48);
305 p[7] = (uint8_t)(v >> 56);
312static inline uint8_t pntohu8(
const void *p)
314 return *((
const uint8_t *)(p)+0)<<0;
317static inline uint8_t pletohu8(
const void *p)
319 return *((
const uint8_t *)(p)+0)<<0;
322static inline void phtonu8(uint8_t *p, uint8_t v)
324 p[0] = (uint8_t)((v) >> 0);
327static inline void phtoleu8(uint8_t *p, uint8_t v)
329 p[0] = (uint8_t)((v) >> 0);
337static inline uint32_t pntohu24(
const void *p)
339 return (uint32_t)*((
const uint8_t *)(p)+0)<<16|
340 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
341 (uint32_t)*((
const uint8_t *)(p)+2)<<0;
344static inline uint64_t pntohu40(
const void *p)
346 return (uint64_t)*((
const uint8_t *)(p)+0)<<32|
347 (uint64_t)*((
const uint8_t *)(p)+1)<<24|
348 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
349 (uint64_t)*((
const uint8_t *)(p)+3)<<8|
350 (uint64_t)*((
const uint8_t *)(p)+4)<<0;
353static inline uint64_t pntohu48(
const void *p)
355 return (uint64_t)*((
const uint8_t *)(p)+0)<<40|
356 (uint64_t)*((
const uint8_t *)(p)+1)<<32|
357 (uint64_t)*((
const uint8_t *)(p)+2)<<24|
358 (uint64_t)*((
const uint8_t *)(p)+3)<<16|
359 (uint64_t)*((
const uint8_t *)(p)+4)<<8|
360 (uint64_t)*((
const uint8_t *)(p)+5)<<0;
363static inline uint64_t pntohu56(
const void *p)
365 return (uint64_t)*((
const uint8_t *)(p)+0)<<48|
366 (uint64_t)*((
const uint8_t *)(p)+1)<<40|
367 (uint64_t)*((
const uint8_t *)(p)+2)<<32|
368 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
369 (uint64_t)*((
const uint8_t *)(p)+4)<<16|
370 (uint64_t)*((
const uint8_t *)(p)+5)<<8|
371 (uint64_t)*((
const uint8_t *)(p)+6)<<0;
374static inline uint32_t pletohu24(
const void *p)
376 return (uint32_t)*((
const uint8_t *)(p)+2)<<16|
377 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
378 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
381static inline uint64_t pletohu40(
const void *p)
383 return (uint64_t)*((
const uint8_t *)(p)+4)<<32|
384 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
385 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
386 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
387 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
390static inline uint64_t pletohu48(
const void *p)
392 return (uint64_t)*((
const uint8_t *)(p)+5)<<40|
393 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
394 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
395 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
396 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
397 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
400static inline uint64_t pletohu56(
const void *p)
402 return (uint64_t)*((
const uint8_t *)(p)+6)<<48|
403 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
404 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
405 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
406 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
407 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
408 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
411static inline void phtonu24(uint8_t *p, uint32_t v)
413 p[0] = (uint8_t)((v) >> 16);
414 p[1] = (uint8_t)((v) >> 8);
415 p[2] = (uint8_t)((v) >> 0);
418static inline void phtonu40(uint8_t *p, uint64_t v)
420 p[0] = (uint8_t)((v) >> 32);
421 p[1] = (uint8_t)((v) >> 24);
422 p[2] = (uint8_t)((v) >> 16);
423 p[3] = (uint8_t)((v) >> 8);
424 p[4] = (uint8_t)((v) >> 0);
427static inline void phtonu48(uint8_t *p, uint64_t v)
429 p[0] = (uint8_t)((v) >> 40);
430 p[1] = (uint8_t)((v) >> 32);
431 p[2] = (uint8_t)((v) >> 24);
432 p[3] = (uint8_t)((v) >> 16);
433 p[4] = (uint8_t)((v) >> 8);
434 p[5] = (uint8_t)((v) >> 0);
437static inline void phtonu56(uint8_t *p, uint64_t v)
439 p[0] = (uint8_t)((v) >> 48);
440 p[1] = (uint8_t)((v) >> 40);
441 p[2] = (uint8_t)((v) >> 32);
442 p[3] = (uint8_t)((v) >> 24);
443 p[4] = (uint8_t)((v) >> 16);
444 p[5] = (uint8_t)((v) >> 8);
445 p[6] = (uint8_t)((v) >> 0);
448static inline void phtoleu24(uint8_t *p, uint32_t v)
450 p[0] = (uint8_t)((v) >> 0);
451 p[1] = (uint8_t)((v) >> 8);
452 p[2] = (uint8_t)((v) >> 16);
455static inline void phtoleu40(uint8_t *p, uint64_t v)
457 p[0] = (uint8_t)((v) >> 0);
458 p[1] = (uint8_t)((v) >> 8);
459 p[2] = (uint8_t)((v) >> 16);
460 p[3] = (uint8_t)((v) >> 24);
461 p[4] = (uint8_t)((v) >> 32);
464static inline void phtoleu48(uint8_t *p, uint64_t v)
466 p[0] = (uint8_t)((v) >> 0);
467 p[1] = (uint8_t)((v) >> 8);
468 p[2] = (uint8_t)((v) >> 16);
469 p[3] = (uint8_t)((v) >> 24);
470 p[4] = (uint8_t)((v) >> 32);
471 p[5] = (uint8_t)((v) >> 40);
474static inline void phtoleu56(uint8_t *p, uint64_t v)
476 p[0] = (uint8_t)((v) >> 0);
477 p[1] = (uint8_t)((v) >> 8);
478 p[2] = (uint8_t)((v) >> 16);
479 p[3] = (uint8_t)((v) >> 24);
480 p[4] = (uint8_t)((v) >> 32);
481 p[5] = (uint8_t)((v) >> 40);
482 p[6] = (uint8_t)((v) >> 48);