From 4adb99fff64984085a12b123863fc8122991b829 Mon Sep 17 00:00:00 2001 From: "zik.saleeba" Date: Tue, 15 Feb 2011 04:48:18 +0000 Subject: [PATCH] Implemented LITTLE_ENDIAN and BIG_ENDIAN macros as requested in issue #106. git-svn-id: http://picoc.googlecode.com/svn/trunk@533 21eae674-98b7-11dd-bd71-f92a316d2d60 --- clibrary.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/clibrary.c b/clibrary.c index 78533b6..80e60ef 100644 --- a/clibrary.c +++ b/clibrary.c @@ -5,6 +5,12 @@ #define PICOC_VERSION "v2.1 beta r" VER /* VER is the subversion version number, obtained via the Makefile */ static const char *VersionString = NULL; +/* endian-ness checking */ +static const int __ENDIAN_CHECK__ = 1; + +static int BigEndian = 0; +static int LittleEndian = 0; + /* global initialisation for libraries */ void LibraryInit() @@ -12,6 +18,13 @@ void LibraryInit() /* define the version number macro */ VersionString = TableStrRegister(PICOC_VERSION); VariableDefinePlatformVar(NULL, "PICOC_VERSION", CharPtrType, (union AnyValue *)&VersionString, FALSE); + + /* define endian-ness macros */ + BigEndian = ((*(char*)&__ENDIAN_CHECK__) == 0); + LittleEndian = ((*(char*)&__ENDIAN_CHECK__) == 1); + + VariableDefinePlatformVar(NULL, "BIG_ENDIAN", &IntType, (union AnyValue *)&BigEndian, FALSE); + VariableDefinePlatformVar(NULL, "LITTLE_ENDIAN", &IntType, (union AnyValue *)&LittleEndian, FALSE); } /* add a library */