1 #ifndef EBML_NG_STRUCT_H 2 #define EBML_NG_STRUCT_H 12 #ifndef __STDC_IEC_559__ 13 #error "IEEE 754 is required for floating-point types" 26 inline void _reverse(
char* s,
unsigned int j,
unsigned int k) {
50 inline size_t size(
const T& value);
67 inline size_t pack(
const T& value,
char* dest);
86 inline size_t pack(
const T& value,
size_t size,
char* dest);
102 inline std::string
pack(
const T& value);
119 inline T
unpack(
const char* src,
size_t size);
134 inline T
unpack(
const std::string& str);
137 #define DEF_SIZE(T) inline size_t size(const T& value) 139 #define FIXED_SIZE(T, s) \ 140 inline size_t size(const T&) { \ 145 #define DEF_PACK(T) inline size_t pack(const T& value, size_t size, char* dest) 146 #define DEF_PACK_ALT(T) inline size_t pack(const T& value, char* dest) 147 #define DEF_UNPACK(T) \ 149 inline T unpack<T>(const char* src, size_t size) 151 #define DECL_EXTERN_STR_FUNCTIONS(T) \ 152 extern template std::string pack(const T&); \ 153 extern template T unpack<T>(const std::string&); 155 #define DECL_EXTERN_FUNCTIONS(T) \ 156 size_t size(const T&); \ 157 size_t pack(const T&, size_t, char*); \ 159 T unpack<T>(const char*, size_t); \ 160 extern template size_t pack(const T&, char*); \ 161 DECL_EXTERN_STR_FUNCTIONS(T) 163 #define DECL_EXTERN_FUNCTIONS_ALT(T) \ 164 size_t size(const T&); \ 165 size_t pack(const T&, char*); \ 167 T unpack<T>(const char*, size_t); \ 168 extern template size_t pack(const T&, size_t, char*); \ 169 DECL_EXTERN_STR_FUNCTIONS(T) 171 #define DECL_EXTERN_FUNCTIONS_ALT2(T) \ 172 size_t size(const T&); \ 173 size_t pack(const T&, char*); \ 174 size_t pack(const T&, size_t, char*); \ 176 T unpack<T>(const char*, size_t); \ 177 DECL_EXTERN_STR_FUNCTIONS(T) 179 #define INST_STRING_TEMPLATES(T) \ 180 template std::string pack(const T&); \ 181 template T unpack<T>(const std::string&); 183 #define INST_TEMPLATES(T) \ 184 template size_t pack(const T&, char*); \ 185 INST_STRING_TEMPLATES(T) 187 #define INST_TEMPLATES_ALT(T) \ 188 template size_t pack(const T&, size_t, char*); \ 189 INST_STRING_TEMPLATES(T)
size_t size(const std::string &value)
Definition: binary.h:8
void _reverse(char *s, unsigned int j, unsigned int k)
Reverses the contents of a character array between indices [j, k].
Definition: struct.h:26
Definition: basictypes.h:40
T unpack(const char *src, size_t size)
Unpacks a value of type T from a raw data buffer.
size_t pack(const std::string &value, size_t size, char *dest)
Definition: binary.h:12