#ifndef MPACK_CONV_H #define MPACK_CONV_H #include "mpack_core.h" #if ULLONG_MAX == 0xffffffffffffffff typedef long long mpack_sintmax_t; typedef unsigned long long mpack_uintmax_t; #elif UINT64_MAX == 0xffffffffffffffff typedef int64_t mpack_sintmax_t; typedef uint64_t mpack_uintmax_t; #else typedef mpack_sint32_t mpack_sintmax_t; typedef mpack_uint32_t mpack_uintmax_t; #endif #ifndef bool # define bool unsigned #endif MPACK_API mpack_token_t mpack_pack_nil(void) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_boolean(unsigned v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_uint(mpack_uintmax_t v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_sint(mpack_sintmax_t v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_float_compat(double v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_float_fast(double v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_number(double v) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_chunk(const char *p, mpack_uint32_t l) FUNUSED FPURE FNONULL; MPACK_API mpack_token_t mpack_pack_str(mpack_uint32_t l) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_bin(mpack_uint32_t l) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_ext(int type, mpack_uint32_t l) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_array(mpack_uint32_t l) FUNUSED FPURE; MPACK_API mpack_token_t mpack_pack_map(mpack_uint32_t l) FUNUSED FPURE; MPACK_API bool mpack_unpack_boolean(mpack_token_t t) FUNUSED FPURE; MPACK_API mpack_uintmax_t mpack_unpack_uint(mpack_token_t t) FUNUSED FPURE; MPACK_API mpack_sintmax_t mpack_unpack_sint(mpack_token_t t) FUNUSED FPURE; MPACK_API double mpack_unpack_float_fast(mpack_token_t t) FUNUSED FPURE; MPACK_API double mpack_unpack_float_compat(mpack_token_t t) FUNUSED FPURE; MPACK_API double mpack_unpack_number(mpack_token_t t) FUNUSED FPURE; /* The mpack_{pack,unpack}_float_fast functions should work in 99% of the * platforms. When compiling for a platform where floats don't use ieee754 as * the internal format, pass * -Dmpack_{pack,unpack}_float=mpack_{pack,unpack}_float_compat to the * compiler.*/ #ifndef mpack_pack_float # define mpack_pack_float mpack_pack_float_fast #endif #ifndef mpack_unpack_float # define mpack_unpack_float mpack_unpack_float_fast #endif #endif /* MPACK_CONV_H */