Home | History | Annotate | Line # | Download | only in ac
      1 /*	$NetBSD: bytes.h,v 1.4 2025/09/05 21:16:20 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-2024 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