75 #if !defined(__i386__)
79 #define MACHINE_WORD_FORMAT DGL_LITTLE_ENDIAN
80 #define MACHINE_FLOAT_FORMAT DGL_NON_IEEE
89 #if defined(__linux__) && (__i386__ || __ia64__ || __x86_64__ || __arm__ || __arm64__ || __aarch64__)
91 #define MACHINE_WORD_FORMAT DGL_LITTLE_ENDIAN
92 #define MACHINE_FLOAT_FORMAT DGL_NON_IEEE
101 #if defined(__APPLE__)
102 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
104 #define MACHINE_WORD_FORMAT DGL_LITTLE_ENDIAN
105 #define MACHINE_FLOAT_FORMAT DGL_NON_IEEE
109 #define MACHINE_WORD_FORMAT DGL_BIG_ENDIAN
110 #define MACHINE_FLOAT_FORMAT DGL_BIG_IEEE
119 #define M_SIZEOF(x) sizeof(x)
125 #define DGL_LITTLE_ENDIAN 1
126 #define DGL_BIG_ENDIAN 2
128 #define DGL_BIG_IEEE 1
129 #define DGL_NON_IEEE 3
138 #if MACHINE_WORD_FORMAT == DGL_BIG_ENDIAN
139 #define DGL_HTON_SHORT(t,f) t = f
140 #define DGL_NTOH_SHORT DGL_HTON_SHORT
141 #define DGL_HTON_INT32(t,f) t = f
142 #define DGL_NTOH_INT32 DGL_HTON_INT32
149 #if MACHINE_FLOAT_FORMAT == DGL_BIG_IEEE
150 #define DGL_HTON_FLOAT(t,f) t = f
151 #define DGL_NTOH_FLOAT DGL_HTON_FLOAT
152 #define DGL_HTON_DOUBLE(t,f) t = f
153 #define DGL_NTOH_DOUBLE DGL_HTON_DOUBLE
162 #if MACHINE_WORD_FORMAT == DGL_LITTLE_ENDIAN
165 #define DGL_HTON_SHORT(t,f) \
167 short _from = f,_to; \
168 ((char *)&_to)[0] = ((char *)&_from)[1]; \
169 ((char *)&_to)[1] = ((char *)&_from)[0]; \
172 #define DGL_NTOH_SHORT DGL_HTON_SHORT
173 #define DGL_HTON_INT32(t,f) \
175 int32_t _from = f,_to; \
176 ((char *)&_to)[0] = ((char *)&_from)[3]; \
177 ((char *)&_to)[1] = ((char *)&_from)[2]; \
178 ((char *)&_to)[2] = ((char *)&_from)[1]; \
179 ((char *)&_to)[3] = ((char *)&_from)[0]; \
182 #define DGL_NTOH_INT32 DGL_HTON_INT32
192 #if MACHINE_FLOAT_FORMAT == DGL_NON_IEEE
193 #if __i386__ || __x86_64__ || __ia64__ || __arm__ || __arm64__ || __arch64__
199 #define DGL_HTON_FLOAT(t,f) mem_hton_float(&t,&f)
200 #define DGL_NTOH_FLOAT(t,f) mem_ntoh_float(&t,&f)
201 #define DGL_HTON_DOUBLE(t,f) mem_hton_double(&t,&f)
202 #define DGL_NTOH_DOUBLE(t,f) mem_ntoh_double(&t,&f)
210 #define INT32(p) (*(int32_t *)(p))
211 #define FLOAT(p) (*(float *)(p))
212 #define DOUBLE(p) (*(double *)(p))
213 #define SHORT(p) (*(short *)(p))
void mem_hton_double(double *t, double *f)
void mem_ntoh_double(double *t, double *f)
void mem_ntoh_float(float *t, float *f)
void mem_hton_float(float *t, float *f)