A first attempt on detecting endianness and number of bits

This commit is contained in:
ehofman
2003-12-01 18:57:32 +00:00
parent fbf018598e
commit 3c7f9e7ba4
2 changed files with 35 additions and 0 deletions

View File

@@ -17,3 +17,5 @@ libsgnasal_a_SOURCES = \
parse.c \
string.c \
vector.c
INCLUDES = -I$(top_srcdir)

View File

@@ -4,6 +4,39 @@
extern "C" {
#endif
#ifndef BYTE_ORDER
# if (BSD >= 199103)
# include <machine/endian.h>
# elif defined(__CYGWIN__) || defined(__MINGW32__)
# include <sys/param.h>
# elif defined(linux)
# include <endian.h>
# else
# ifndef LITTLE_ENDIAN
# define LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
# endif
# ifndef BIG_ENDIAN
# define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
# endif
# if defined(ultrix) || defined(__alpha__) || defined(__alpha) || \
defined(__i386__) || defined(__i486__) || defined(_X86_) || \
defined(sun386)
# define BYTE_ORDER LITTLE_ENDIAN
# else
# define BYTE_ORDER BIG_ENDIAN
# endif
# endif /* BSD */
#endif /* BYTE_ORDER */
#if BYTE_ORDER == BIG_ENDIAN
# include <limits.h>
# if (LONG_MAX == 2147483647)
# define NASAL_BIG_ENDIAN_32_BIT 1
# endif
#endif
// This is a nasal "reference". They are always copied by value, and
// contain either a pointer to a garbage-collectable nasal object
// (string, vector, hash) or a floating point number. Keeping the