12#define uint_pack(s,X) _Generic((X),\ 
   14    uint16:  uint16_pack,           \ 
   15    uint32:  uint32_pack,           \ 
   16    uint64:  uint64_pack,           \ 
   17    uint128: uint128_pack           \ 
 
   20#define uint_pack_big(s,X) _Generic((X),\ 
   21    uint8:   uint8_pack_big,            \ 
   22    uint16:  uint16_pack_big,           \ 
   23    uint32:  uint32_pack_big,           \ 
   24    uint64:  uint64_pack_big,           \ 
   25    uint128: uint128_pack_big           \ 
 
   28#define uint_unpack(s,X) _Generic((X),\ 
   29    uint8 *:   uint8_unpack,          \ 
   30    uint16 *:  uint16_unpack,         \ 
   31    uint32 *:  uint32_unpack,         \ 
   32    uint64 *:  uint64_unpack,         \ 
   33    uint128 *: uint128_unpack         \ 
 
   36#define uint_unpack_big(s,X) _Generic((X),\ 
   37    uint8 *:   uint8_unpack_big,          \ 
   38    uint16 *:  uint16_unpack_big,         \ 
   39    uint32 *:  uint32_unpack_big,         \ 
   40    uint64 *:  uint64_unpack_big,         \ 
   41    uint128 *: uint128_unpack_big         \ 
 
void uint16_pack(char *, uint16)
void uint32_pack(char *, uint32)
void uint128_pack_big(char *, uint128)
unsigned long long uint64
void uint8_pack_big(char *, uint8)
void uint128_unpack_big(char *, uint128 *)
void uint64_unpack_big(char *, uint64 *)
void uint128_pack(char *, uint128)
void uint32_unpack(char *, uint32 *)
void uint16_unpack_big(char *, uint16 *)
void uint32_pack_big(char *, uint32)
void uint16_pack_big(char *, uint16)
void uint8_pack(char *, uint8)
void uint64_pack(char *, uint64)
void uint16_unpack(char *, uint16 *)
void uint64_pack_big(char *, uint64)
void uint8_unpack(char *, uint8 *)
void uint128_unpack(char *, uint128 *)
void uint32_unpack_big(char *, uint32 *)
void uint8_unpack_big(char *, uint8 *)
void uint64_unpack(char *, uint64 *)