1 #ifndef EBML_NG_DOUBLE_H 2 #define EBML_NG_DOUBLE_H 11 memcpy(dest, &value,
sizeof(
float));
13 if (std::endian::native == std::endian::little) {
14 _reverse(dest, 0,
sizeof(
float) - 1);
21 memcpy(dest, &value,
sizeof(
double));
23 if (std::endian::native == std::endian::little) {
24 _reverse(dest, 0,
sizeof(
double) - 1);
27 return sizeof(double);
33 if (
size == 0) {
return 0;}
36 throw std::invalid_argument(
"unpack<float>: invalid value for size");
39 memcpy(&ret, src,
sizeof(
float));
41 if (std::endian::native == std::endian::little) {
42 _reverse((
char*)&ret, 0,
sizeof(
float) - 1);
51 if (
size == 0) {
return 0;}
53 if (
size == 4) {
return unpack<float>(src,
size);}
56 throw std::invalid_argument(
"unpack<double>: invalid value for size");
59 memcpy(&ret, src,
sizeof(
double));
61 if (std::endian::native == std::endian::little) {
62 _reverse((
char*)&ret, 0,
sizeof(
double) - 1);
DEF_UNPACK(float)
Definition: double.h:30
#define FIXED_SIZE(T, s)
Definition: struct.h:139
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
DEF_PACK_ALT(float)
Definition: double.h:10