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