1/* Generic bytes.h */
2/* $OpenLDAP$ */
3/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 *
5 * Copyright 1998-2011 The OpenLDAP Foundation.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
10 * Public License.
11 *
12 * A copy of this license is available in file LICENSE in the
13 * top-level directory of the distribution or, alternatively, at
14 * <http://www.OpenLDAP.org/license.html>.
15 */
16
17#ifndef _AC_BYTES_H
18#define _AC_BYTES_H
19
20/* cross compilers should define both AC_INT{2,4}_TYPE in CPPFLAGS */
21
22#if !defined( AC_INT4_TYPE )
23	/* use autoconf defines to provide sized typedefs */
24#	if SIZEOF_LONG == 4
25#		define AC_INT4_TYPE long
26#	elif SIZEOF_INT == 4
27#		define AC_INT4_TYPE int
28#	elif SIZEOF_SHORT == 4
29#		define AC_INT4_TYPE short
30#	else
31#	error "AC_INT4_TYPE?"
32#	endif
33#endif
34
35typedef AC_INT4_TYPE ac_int4;
36typedef signed AC_INT4_TYPE ac_sint4;
37typedef unsigned AC_INT4_TYPE ac_uint4;
38
39#if !defined( AC_INT2_TYPE )
40#	if SIZEOF_SHORT == 2
41#		define AC_INT2_TYPE short
42#	elif SIZEOF_INT == 2
43#		define AC_INT2_TYPE int
44#	elif SIZEOF_LONG == 2
45#		define AC_INT2_TYPE long
46#	else
47#	error "AC_INT2_TYPE?"
48#	endif
49#endif
50
51#if defined( AC_INT2_TYPE )
52typedef AC_INT2_TYPE ac_int2;
53typedef signed AC_INT2_TYPE ac_sint2;
54typedef unsigned AC_INT2_TYPE ac_uint2;
55#endif
56
57#ifndef BYTE_ORDER
58/* cross compilers should define BYTE_ORDER in CPPFLAGS */
59
60/*
61 * Definitions for byte order, according to byte significance from low
62 * address to high.
63 */
64#define LITTLE_ENDIAN   1234    /* LSB first: i386, vax */
65#define BIG_ENDIAN  4321        /* MSB first: 68000, ibm, net */
66#define PDP_ENDIAN  3412        /* LSB first in word, MSW first in long */
67
68/* assume autoconf's AC_C_BIGENDIAN has been ran */
69/* if it hasn't, we assume (maybe falsely) the order is LITTLE ENDIAN */
70#	ifdef __BIG_ENDIAN__
71#		define BYTE_ORDER  BIG_ENDIAN
72#	else
73#		define BYTE_ORDER  LITTLE_ENDIAN
74#	endif
75
76#endif /* BYTE_ORDER */
77
78#endif /* _AC_BYTES_H */
79