machine_endian.h
1/***************************************************************************
2 *
3 * Copyright (C) 1999 by Willem van Straten
4 * Licensed under the Academic Free License version 2.1
5 *
6 ***************************************************************************/
7// psrchive/Util/genutil/machine_endian.h
8
9#ifndef __M_ENDIAN_H
10#define __M_ENDIAN_H
11
12/* the main byte-swapping function */
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17void changeEndian (void *p, int size);
18void array_changeEndian (int count, void *p, int element_size);
19
20#ifdef __cplusplus
21}
22#endif
23
24/* MACRO to save you some typing */
25#define ChangeEndian(p) changeEndian (&(p), sizeof(p))
26
27#ifdef HAVE_CONFIG_H
28#include <config.h>
29#endif
30
31#ifdef WORDS_BIGENDIAN
32
33#define MACHINE_LITTLE_ENDIAN 0
34
35#define toBigEndian(p,s)
36#define toLittleEndian(p,s) changeEndian(p,s)
37#define fromBigEndian(p,s)
38#define fromLittleEndian(p,s) changeEndian(p,s)
39
40/* short forms that save typing */
41#define ToBigEndian(p)
42#define ToLittleEndian(p) changeEndian (&(p), sizeof(p))
43#define FromBigEndian(p)
44#define FromLittleEndian(p) changeEndian (&(p), sizeof(p))
45
46/* short forms that work on arrays */
47#define N_ToBigEndian(N,p)
48#define N_ToLittleEndian(N,p) array_changeEndian (N, p, sizeof(*p))
49#define N_FromBigEndian(N,p)
50#define N_FromLittleEndian(N,p) array_changeEndian (N, p, sizeof(*p))
51
52#else
53
54#define MACHINE_LITTLE_ENDIAN 1
55
56#define toBigEndian(p,s) changeEndian(p,s)
57#define toLittleEndian(p,s)
58#define fromBigEndian(p,s) changeEndian(p,s)
59#define fromLittleEndian(p,s)
60
61/* short forms that save typing */
62#define ToBigEndian(p) changeEndian (&(p), sizeof(p))
63#define ToLittleEndian(p)
64#define FromBigEndian(p) changeEndian (&(p), sizeof(p))
65#define FromLittleEndian(p)
66
67/* short forms that work on arrays */
68#define N_ToBigEndian(N,p) array_changeEndian (N, p, sizeof(*(p)))
69#define N_ToLittleEndian(N,p)
70#define N_FromBigEndian(N,p) array_changeEndian (N, p, sizeof(*(p)))
71#define N_FromLittleEndian(N,p)
72
73#endif
74
75#endif /* !def __M_ENDIAN_H */

Generated using doxygen 1.14.0