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));
210static inline uint16_t pntohu16(
const void *p)
212 return (uint16_t)*((
const uint8_t *)(p)+0)<<8|
213 (uint16_t)*((
const uint8_t *)(p)+1)<<0;
222static inline uint32_t pntohu32(
const void *p)
224 return (uint32_t)*((
const uint8_t *)(p)+0)<<24|
225 (uint32_t)*((
const uint8_t *)(p)+1)<<16|
226 (uint32_t)*((
const uint8_t *)(p)+2)<<8|
227 (uint32_t)*((
const uint8_t *)(p)+3)<<0;
237static inline uint64_t pntohu64(
const void *p)
239 return (uint64_t)*((
const uint8_t *)(p)+0)<<56|
240 (uint64_t)*((
const uint8_t *)(p)+1)<<48|
241 (uint64_t)*((
const uint8_t *)(p)+2)<<40|
242 (uint64_t)*((
const uint8_t *)(p)+3)<<32|
243 (uint64_t)*((
const uint8_t *)(p)+4)<<24|
244 (uint64_t)*((
const uint8_t *)(p)+5)<<16|
245 (uint64_t)*((
const uint8_t *)(p)+6)<<8|
246 (uint64_t)*((
const uint8_t *)(p)+7)<<0;
255static inline uint16_t pletohu16(
const void *p)
257 return (uint16_t)*((
const uint8_t *)(p)+1)<<8|
258 (uint16_t)*((
const uint8_t *)(p)+0)<<0;
267static inline uint32_t pletohu32(
const void *p)
269 return (uint32_t)*((
const uint8_t *)(p)+3)<<24|
270 (uint32_t)*((
const uint8_t *)(p)+2)<<16|
271 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
272 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
281static inline uint64_t pletohu64(
const void *p)
283 return (uint64_t)*((
const uint8_t *)(p)+7)<<56|
284 (uint64_t)*((
const uint8_t *)(p)+6)<<48|
285 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
286 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
287 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
288 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
289 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
290 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
297static inline void phtonu16(uint8_t *p, uint16_t v)
299 p[0] = (uint8_t)(v >> 8);
300 p[1] = (uint8_t)(v >> 0);
309static inline void phtonu32(uint8_t *p, uint32_t v)
311 p[0] = (uint8_t)(v >> 24);
312 p[1] = (uint8_t)(v >> 16);
313 p[2] = (uint8_t)(v >> 8);
314 p[3] = (uint8_t)(v >> 0);
323static inline void phtonu64(uint8_t *p, uint64_t v) {
324 p[0] = (uint8_t)(v >> 56);
325 p[1] = (uint8_t)(v >> 48);
326 p[2] = (uint8_t)(v >> 40);
327 p[3] = (uint8_t)(v >> 32);
328 p[4] = (uint8_t)(v >> 24);
329 p[5] = (uint8_t)(v >> 16);
330 p[6] = (uint8_t)(v >> 8);
331 p[7] = (uint8_t)(v >> 0);
340static inline void phtoleu16(uint8_t *p, uint16_t v)
342 p[0] = (uint8_t)(v >> 0);
343 p[1] = (uint8_t)(v >> 8);
352static inline void phtoleu32(uint8_t *p, uint32_t v) {
353 p[0] = (uint8_t)(v >> 0);
354 p[1] = (uint8_t)(v >> 8);
355 p[2] = (uint8_t)(v >> 16);
356 p[3] = (uint8_t)(v >> 24);
365static inline void phtoleu64(uint8_t *p, uint64_t v) {
366 p[0] = (uint8_t)(v >> 0);
367 p[1] = (uint8_t)(v >> 8);
368 p[2] = (uint8_t)(v >> 16);
369 p[3] = (uint8_t)(v >> 24);
370 p[4] = (uint8_t)(v >> 32);
371 p[5] = (uint8_t)(v >> 40);
372 p[6] = (uint8_t)(v >> 48);
373 p[7] = (uint8_t)(v >> 56);
387static inline uint8_t pntohu8(
const void *p)
389 return *((
const uint8_t *)(p)+0)<<0;
398static inline uint8_t pletohu8(
const void *p)
400 return *((
const uint8_t *)(p)+0)<<0;
409static inline void phtonu8(uint8_t *p, uint8_t v)
411 p[0] = (uint8_t)((v) >> 0);
420static inline void phtoleu8(uint8_t *p, uint8_t v)
422 p[0] = (uint8_t)((v) >> 0);
430static inline uint32_t pntohu24(
const void *p)
432 return (uint32_t)*((
const uint8_t *)(p)+0)<<16|
433 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
434 (uint32_t)*((
const uint8_t *)(p)+2)<<0;
446static inline uint64_t pntohu40(
const void *p)
448 return (uint64_t)*((
const uint8_t *)(p)+0)<<32|
449 (uint64_t)*((
const uint8_t *)(p)+1)<<24|
450 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
451 (uint64_t)*((
const uint8_t *)(p)+3)<<8|
452 (uint64_t)*((
const uint8_t *)(p)+4)<<0;
461static inline uint64_t pntohu48(
const void *p)
463 return (uint64_t)*((
const uint8_t *)(p)+0)<<40|
464 (uint64_t)*((
const uint8_t *)(p)+1)<<32|
465 (uint64_t)*((
const uint8_t *)(p)+2)<<24|
466 (uint64_t)*((
const uint8_t *)(p)+3)<<16|
467 (uint64_t)*((
const uint8_t *)(p)+4)<<8|
468 (uint64_t)*((
const uint8_t *)(p)+5)<<0;
477static inline uint64_t pntohu56(
const void *p)
479 return (uint64_t)*((
const uint8_t *)(p)+0)<<48|
480 (uint64_t)*((
const uint8_t *)(p)+1)<<40|
481 (uint64_t)*((
const uint8_t *)(p)+2)<<32|
482 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
483 (uint64_t)*((
const uint8_t *)(p)+4)<<16|
484 (uint64_t)*((
const uint8_t *)(p)+5)<<8|
485 (uint64_t)*((
const uint8_t *)(p)+6)<<0;
494static inline uint32_t pletohu24(
const void *p)
496 return (uint32_t)*((
const uint8_t *)(p)+2)<<16|
497 (uint32_t)*((
const uint8_t *)(p)+1)<<8|
498 (uint32_t)*((
const uint8_t *)(p)+0)<<0;
507static inline uint64_t pletohu40(
const void *p)
509 return (uint64_t)*((
const uint8_t *)(p)+4)<<32|
510 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
511 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
512 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
513 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
522static inline uint64_t pletohu48(
const void *p)
524 return (uint64_t)*((
const uint8_t *)(p)+5)<<40|
525 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
526 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
527 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
528 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
529 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
539static inline uint64_t pletohu56(
const void *p)
541 return (uint64_t)*((
const uint8_t *)(p)+6)<<48|
542 (uint64_t)*((
const uint8_t *)(p)+5)<<40|
543 (uint64_t)*((
const uint8_t *)(p)+4)<<32|
544 (uint64_t)*((
const uint8_t *)(p)+3)<<24|
545 (uint64_t)*((
const uint8_t *)(p)+2)<<16|
546 (uint64_t)*((
const uint8_t *)(p)+1)<<8|
547 (uint64_t)*((
const uint8_t *)(p)+0)<<0;
557static inline void phtonu24(uint8_t *p, uint32_t v)
559 p[0] = (uint8_t)((v) >> 16);
560 p[1] = (uint8_t)((v) >> 8);
561 p[2] = (uint8_t)((v) >> 0);
570static inline void phtonu40(uint8_t *p, uint64_t v)
572 p[0] = (uint8_t)((v) >> 32);
573 p[1] = (uint8_t)((v) >> 24);
574 p[2] = (uint8_t)((v) >> 16);
575 p[3] = (uint8_t)((v) >> 8);
576 p[4] = (uint8_t)((v) >> 0);
585static inline void phtonu48(uint8_t *p, uint64_t v)
587 p[0] = (uint8_t)((v) >> 40);
588 p[1] = (uint8_t)((v) >> 32);
589 p[2] = (uint8_t)((v) >> 24);
590 p[3] = (uint8_t)((v) >> 16);
591 p[4] = (uint8_t)((v) >> 8);
592 p[5] = (uint8_t)((v) >> 0);
602static inline void phtonu56(uint8_t *p, uint64_t v)
604 p[0] = (uint8_t)((v) >> 48);
605 p[1] = (uint8_t)((v) >> 40);
606 p[2] = (uint8_t)((v) >> 32);
607 p[3] = (uint8_t)((v) >> 24);
608 p[4] = (uint8_t)((v) >> 16);
609 p[5] = (uint8_t)((v) >> 8);
610 p[6] = (uint8_t)((v) >> 0);
619static inline void phtoleu24(uint8_t *p, uint32_t v)
621 p[0] = (uint8_t)((v) >> 0);
622 p[1] = (uint8_t)((v) >> 8);
623 p[2] = (uint8_t)((v) >> 16);
632static inline void phtoleu40(uint8_t *p, uint64_t v)
634 p[0] = (uint8_t)((v) >> 0);
635 p[1] = (uint8_t)((v) >> 8);
636 p[2] = (uint8_t)((v) >> 16);
637 p[3] = (uint8_t)((v) >> 24);
638 p[4] = (uint8_t)((v) >> 32);
647static inline void phtoleu48(uint8_t *p, uint64_t v)
649 p[0] = (uint8_t)((v) >> 0);
650 p[1] = (uint8_t)((v) >> 8);
651 p[2] = (uint8_t)((v) >> 16);
652 p[3] = (uint8_t)((v) >> 24);
653 p[4] = (uint8_t)((v) >> 32);
654 p[5] = (uint8_t)((v) >> 40);
663static inline void phtoleu56(uint8_t *p, uint64_t v)
665 p[0] = (uint8_t)((v) >> 0);
666 p[1] = (uint8_t)((v) >> 8);
667 p[2] = (uint8_t)((v) >> 16);
668 p[3] = (uint8_t)((v) >> 24);
669 p[4] = (uint8_t)((v) >> 32);
670 p[5] = (uint8_t)((v) >> 40);
671 p[6] = (uint8_t)((v) >> 48);