- added min/max macros
authorMartin Willi <martin@strongswan.org>
Tue, 22 Nov 2005 15:02:54 +0000 (15:02 -0000)
committerMartin Willi <martin@strongswan.org>
Tue, 22 Nov 2005 15:02:54 +0000 (15:02 -0000)
Source/charon/definitions.h

index 0392f22..9909cc9 100644 (file)
@@ -8,7 +8,8 @@
 /*
  * Copyright (C) 2005 Jan Hutter, Martin Willi
  * Hochschule fuer Technik Rapperswil
- *
+ * Copyright (C) 1998, 1999  D. Hugh Redelmeier. (Endian stuff)
+ * 
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
  * Free Software Foundation; either version 2 of the License, or (at your
 #ifndef DEFINITIONS_H_
 #define DEFINITIONS_H_
 
+
+
+/* stolen from strongswan */
+#if linux
+# if defined(i386) && !defined(__i386__)
+#  define __i386__ 1
+#  define MYHACKFORTHIS 1
+# endif
+# include <endian.h>
+# ifdef MYHACKFORTHIS
+#  undef __i386__
+#  undef MYHACKFORTHIS
+# endif
+#elif !(defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN) && defined(BYTE_ORDER))
+ /* we don't know how to do this, so we require the macros to be defined
+  * with compiler flags:
+  *    -DBIG_ENDIAN=4321 -DLITTLE_ENDIAN=1234 -DBYTE_ORDER=BIG_ENDIAN
+  * or -DBIG_ENDIAN=4321 -DLITTLE_ENDIAN=1234 -DBYTE_ORDER=LITTLE_ENDIAN
+  * Thse match the GNU definitions
+  */
+# include <sys/endian.h>
+#endif
+
+#ifndef BIG_ENDIAN
+ #error "BIG_ENDIAN must be defined"
+#endif
+
+#ifndef LITTLE_ENDIAN
+ #error "LITTLE_ENDIAN must be defined"
+#endif
+
+#ifndef BYTE_ORDER
+ #error "BYTE_ORDER must be defined"
+#endif
+
+/**
+ * macro gives back larger of two values
+ */
+#define max(x,y) (x > y ? x : y)
+
+
+/**
+ * macro gives back smaller of two values
+ */
+#define min(x,y) (x < y ? x : y)
+
+
+
 #define MAPPING_END (-1)
 
 /**