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)
100static inline uint16_t pntohu16(
const void *p)
103 memcpy(&ret, p,
sizeof(ret));
104#if G_BYTE_ORDER == G_LITTLE_ENDIAN
105 ret = pint_bswap16(ret);
115static inline uint32_t pntohu32(
const void *p)
118 memcpy(&ret, p,
sizeof(ret));
119#if G_BYTE_ORDER == G_LITTLE_ENDIAN
120 ret = pint_bswap32(ret);
130static inline uint64_t pntohu64(
const void *p)
133 memcpy(&ret, p,
sizeof(ret));
134#if G_BYTE_ORDER == G_LITTLE_ENDIAN
135 ret = pint_bswap64(ret);
145static inline uint16_t pletohu16(
const void *p)
148 memcpy(&ret, p,
sizeof(ret));
149#if G_BYTE_ORDER == G_BIG_ENDIAN
150 ret = pint_bswap16(ret);
160static inline uint32_t pletohu32(
const void *p)
163 memcpy(&ret, p,
sizeof(ret));
164#if G_BYTE_ORDER == G_BIG_ENDIAN
165 ret = pint_bswap32(ret);
175static inline uint64_t pletohu64(
const void *p)
178 memcpy(&ret, p,
sizeof(ret));
179#if G_BYTE_ORDER == G_BIG_ENDIAN
180 ret = pint_bswap64(ret);
190static inline void phtonu16(uint8_t *p, uint16_t v)
192#if G_BYTE_ORDER == G_LITTLE_ENDIAN
195 memcpy(p, &v,
sizeof(v));
203static inline void phtonu32(uint8_t *p, uint32_t v)
205#if G_BYTE_ORDER == G_LITTLE_ENDIAN
208 memcpy(p, &v,
sizeof(v));
216static inline void phtonu64(uint8_t *p, uint64_t v)
218#if G_BYTE_ORDER == G_LITTLE_ENDIAN
221 memcpy(p, &v,
sizeof(v));
229static inline void phtoleu16(uint8_t *p, uint32_t v)
231#if G_BYTE_ORDER == G_BIG_ENDIAN
234 memcpy(p, &v,
sizeof(v));
242static inline void phtoleu32(uint8_t *p, uint32_t v)
244#if G_BYTE_ORDER == G_BIG_ENDIAN
247 memcpy(p, &v,
sizeof(v));
255static inline void phtoleu64(uint8_t *p, uint64_t v)
257#if G_BYTE_ORDER == G_BIG_ENDIAN
260 memcpy(p, &v,
sizeof(v));
272static inline uint16_t pntohu16(
const void *p)
274 return (uint16_t)*((
const uint8_t *)(p)+0)<<8|
275 (uint16_t)*((
const uint8_t *)(p)+1)<<0;
284static inline uint32_t pntohu32(
const void *p)
286 return (uint32_t)*((
const uint8_t *)(p)+0)<<24|
287 (uint32_t)*((
const uint8_t *)(p)+1)<<16|
288 (uint32_t)*((
const uint8_t *)(p)+2)<<8|
289 (uint32_t)*((
const uint8_t *)(p)+3)<<0;
299static inline uint64_t pntohu64(
const void *p)
301 return (uint64_t)*((
const uint8_t *)(p)+0)<<56|
302 (uint64_t)*((
const uint8_t *)(p)+1)<<48|
303 (uint64_t)*((
const uint8_t *)(p)+2)<<40|
304 (uint64_t)*((
const uint8_t *)(p)+3)<<32|
305 (uint64_t)*((
const uint8_t *)(p)+4)<<24|
306 (uint64_t)*((
const uint8_t *)(p)+5)<<16|
307 (uint64_t)*((
const uint8_t *)(p)+6)<<8|
308 (uint64_t)*((
const uint8_t *)(p)+7)<<0;
317static inline uint16_t pletohu16(
const void *p)
319 return (uint16_t)*((
const uint8_t *)(p)+1)<<8|
320 (uint16_t)*((
const uint8_t *)(p)+0)<<0;
329static inline uint32_t pletohu32(
const void *p)
331 return (uint32_t)*((
const uint8_t *)(p)+3)<<24|
332 (uint32_t)*((
const uint8_t *)(p)+2)<<16|
333 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
334 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
343static inline uint64_t pletohu64(
const void *p)
345 return (uint64_t)*((
const uint8_t *)(p)+7)<<56|
346 (uint64_t)*((
const uint8_t *)(p)+6)<<48|
347 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
348 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
349 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
350 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
351 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
352 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
360static inline void phtonu16(uint8_t *p, uint16_t v)
362 p[0] = (uint8_t)(v >> 8);
363 p[1] = (uint8_t)(v >> 0);
372static inline void phtonu32(uint8_t *p, uint32_t v)
374 p[0] = (uint8_t)(v >> 24);
375 p[1] = (uint8_t)(v >> 16);
376 p[2] = (uint8_t)(v >> 8);
377 p[3] = (uint8_t)(v >> 0);
386static inline void phtonu64(uint8_t *p, uint64_t v) {
387 p[0] = (uint8_t)(v >> 56);
388 p[1] = (uint8_t)(v >> 48);
389 p[2] = (uint8_t)(v >> 40);
390 p[3] = (uint8_t)(v >> 32);
391 p[4] = (uint8_t)(v >> 24);
392 p[5] = (uint8_t)(v >> 16);
393 p[6] = (uint8_t)(v >> 8);
394 p[7] = (uint8_t)(v >> 0);
403static inline void phtoleu16(uint8_t *p, uint16_t v)
405 p[0] = (uint8_t)(v >> 0);
406 p[1] = (uint8_t)(v >> 8);
415static inline void phtoleu32(uint8_t *p, uint32_t v) {
416 p[0] = (uint8_t)(v >> 0);
417 p[1] = (uint8_t)(v >> 8);
418 p[2] = (uint8_t)(v >> 16);
419 p[3] = (uint8_t)(v >> 24);
428static inline void phtoleu64(uint8_t *p, uint64_t v) {
429 p[0] = (uint8_t)(v >> 0);
430 p[1] = (uint8_t)(v >> 8);
431 p[2] = (uint8_t)(v >> 16);
432 p[3] = (uint8_t)(v >> 24);
433 p[4] = (uint8_t)(v >> 32);
434 p[5] = (uint8_t)(v >> 40);
435 p[6] = (uint8_t)(v >> 48);
436 p[7] = (uint8_t)(v >> 56);
450static inline uint8_t pntohu8(
const void *p)
452 return *((
const uint8_t *)(p)+0)<<0;
461static inline uint8_t pletohu8(
const void *p)
463 return *((
const uint8_t *)(p)+0)<<0;
472static inline void phtonu8(uint8_t *p, uint8_t v)
474 p[0] = (uint8_t)((v) >> 0);
483static inline void phtoleu8(uint8_t *p, uint8_t v)
485 p[0] = (uint8_t)((v) >> 0);
497static inline uint32_t pntohu24(
const void *p)
499 return (uint32_t)*((
const uint8_t *)(p)+0)<<16|
500 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
501 (uint32_t)*((
const uint8_t *)(p)+2)<<0;
513static inline uint64_t pntohu40(
const void *p)
515 return (uint64_t)*((
const uint8_t *)(p)+0)<<32|
516 (uint64_t)*((
const uint8_t *)(p)+1)<<24|
517 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
518 (uint64_t)*((
const uint8_t *)(p)+3)<<8|
519 (uint64_t)*((
const uint8_t *)(p)+4)<<0;
528static inline uint64_t pntohu48(
const void *p)
530 return (uint64_t)*((
const uint8_t *)(p)+0)<<40|
531 (uint64_t)*((
const uint8_t *)(p)+1)<<32|
532 (uint64_t)*((
const uint8_t *)(p)+2)<<24|
533 (uint64_t)*((
const uint8_t *)(p)+3)<<16|
534 (uint64_t)*((
const uint8_t *)(p)+4)<<8|
535 (uint64_t)*((
const uint8_t *)(p)+5)<<0;
544static inline uint64_t pntohu56(
const void *p)
546 return (uint64_t)*((
const uint8_t *)(p)+0)<<48|
547 (uint64_t)*((
const uint8_t *)(p)+1)<<40|
548 (uint64_t)*((
const uint8_t *)(p)+2)<<32|
549 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
550 (uint64_t)*((
const uint8_t *)(p)+4)<<16|
551 (uint64_t)*((
const uint8_t *)(p)+5)<<8|
552 (uint64_t)*((
const uint8_t *)(p)+6)<<0;
561static inline uint32_t pletohu24(
const void *p)
563 return (uint32_t)*((
const uint8_t *)(p)+2)<<16|
564 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
565 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
574static inline uint64_t pletohu40(
const void *p)
576 return (uint64_t)*((
const uint8_t *)(p)+4)<<32|
577 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
578 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
579 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
580 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
589static inline uint64_t pletohu48(
const void *p)
591 return (uint64_t)*((
const uint8_t *)(p)+5)<<40|
592 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
593 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
594 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
595 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
596 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
606static inline uint64_t pletohu56(
const void *p)
608 return (uint64_t)*((
const uint8_t *)(p)+6)<<48|
609 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
610 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
611 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
612 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
613 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
614 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
624static inline void phtonu24(uint8_t *p, uint32_t v)
626 p[0] = (uint8_t)((v) >> 16);
627 p[1] = (uint8_t)((v) >> 8);
628 p[2] = (uint8_t)((v) >> 0);
637static inline void phtonu40(uint8_t *p, uint64_t v)
639 p[0] = (uint8_t)((v) >> 32);
640 p[1] = (uint8_t)((v) >> 24);
641 p[2] = (uint8_t)((v) >> 16);
642 p[3] = (uint8_t)((v) >> 8);
643 p[4] = (uint8_t)((v) >> 0);
652static inline void phtonu48(uint8_t *p, uint64_t v)
654 p[0] = (uint8_t)((v) >> 40);
655 p[1] = (uint8_t)((v) >> 32);
656 p[2] = (uint8_t)((v) >> 24);
657 p[3] = (uint8_t)((v) >> 16);
658 p[4] = (uint8_t)((v) >> 8);
659 p[5] = (uint8_t)((v) >> 0);
669static inline void phtonu56(uint8_t *p, uint64_t v)
671 p[0] = (uint8_t)((v) >> 48);
672 p[1] = (uint8_t)((v) >> 40);
673 p[2] = (uint8_t)((v) >> 32);
674 p[3] = (uint8_t)((v) >> 24);
675 p[4] = (uint8_t)((v) >> 16);
676 p[5] = (uint8_t)((v) >> 8);
677 p[6] = (uint8_t)((v) >> 0);
686static inline void phtoleu24(uint8_t *p, uint32_t v)
688 p[0] = (uint8_t)((v) >> 0);
689 p[1] = (uint8_t)((v) >> 8);
690 p[2] = (uint8_t)((v) >> 16);
699static inline void phtoleu40(uint8_t *p, uint64_t v)
701 p[0] = (uint8_t)((v) >> 0);
702 p[1] = (uint8_t)((v) >> 8);
703 p[2] = (uint8_t)((v) >> 16);
704 p[3] = (uint8_t)((v) >> 24);
705 p[4] = (uint8_t)((v) >> 32);
714static inline void phtoleu48(uint8_t *p, uint64_t v)
716 p[0] = (uint8_t)((v) >> 0);
717 p[1] = (uint8_t)((v) >> 8);
718 p[2] = (uint8_t)((v) >> 16);
719 p[3] = (uint8_t)((v) >> 24);
720 p[4] = (uint8_t)((v) >> 32);
721 p[5] = (uint8_t)((v) >> 40);
730static inline void phtoleu56(uint8_t *p, uint64_t v)
732 p[0] = (uint8_t)((v) >> 0);
733 p[1] = (uint8_t)((v) >> 8);
734 p[2] = (uint8_t)((v) >> 16);
735 p[3] = (uint8_t)((v) >> 24);
736 p[4] = (uint8_t)((v) >> 32);
737 p[5] = (uint8_t)((v) >> 40);
738 p[6] = (uint8_t)((v) >> 48);