first commit
[blok] / Box2D / Source / Common / jtypes.h
diff --git a/Box2D/Source/Common/jtypes.h b/Box2D/Source/Common/jtypes.h
new file mode 100644 (file)
index 0000000..9f22454
--- /dev/null
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------------
+       $Id: jtypes.h,v 1.17 2007/07/18 05:20:45 wntrmute Exp $
+
+       jtypes.h -- Common types (and a few useful macros)
+
+       Copyright (C) 2005
+               Michael Noland (joat)
+               Jason Rogers (dovoto)
+               Dave Murphy (WinterMute)
+               Chris Double (doublec)
+
+       This software is provided 'as-is', without any express or implied
+       warranty.  In no event will the authors be held liable for any
+       damages arising from the use of this software.
+
+       Permission is granted to anyone to use this software for any
+       purpose, including commercial applications, and to alter it and
+       redistribute it freely, subject to the following restrictions:
+
+       1.      The origin of this software must not be misrepresented; you
+               must not claim that you wrote the original software. If you use
+               this software in a product, an acknowledgment in the product
+               documentation would be appreciated but is not required.
+       2.      Altered source versions must be plainly marked as such, and
+               must not be misrepresented as being the original software.
+       3.      This notice may not be removed or altered from any source
+               distribution.
+
+---------------------------------------------------------------------------------*/
+#ifndef NDS_JTYPES_INCLUDE
+#define NDS_JTYPES_INCLUDE
+//---------------------------------------------------------------------------------
+
+
+#define PACKED __attribute__ ((packed))
+#define packed_struct struct PACKED
+
+//---------------------------------------------------------------------------------
+// libgba compatible section macros
+//---------------------------------------------------------------------------------
+#define ITCM_CODE      __attribute__((section(".itcm"), long_call))
+
+#define DTCM_DATA      __attribute__((section(".dtcm")))
+#define DTCM_BSS       __attribute__((section(".sbss")))
+#define ALIGN(m)       __attribute__((aligned (m)))
+
+#define PACKED __attribute__ ((packed))
+#define packed_struct struct PACKED
+
+//---------------------------------------------------------------------------------
+// These are linked to the bin2o macro in the Makefile
+//---------------------------------------------------------------------------------
+#define GETRAW(name)      (name)
+#define GETRAWSIZE(name)  ((int)name##_size)
+#define GETRAWEND(name)  ((int)name##_end)
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#define BIT(n) (1 << (n))
+
+// define libnds types in terms of stdint
+#include <stdint.h>
+
+typedef uint8_t                uint8;
+typedef uint16_t       uint16;
+typedef uint32_t       uint32;
+typedef uint64_t       uint64;
+
+typedef int8_t         int8;
+typedef int16_t                int16;
+typedef int32_t                int32;
+typedef int64_t                int64;
+
+//typedef float                float32;
+typedef double         float64;
+
+typedef volatile uint8_t       vuint8;
+typedef volatile uint16_t      vuint16;
+typedef volatile uint32_t      vuint32;
+typedef volatile uint64_t      vuint64;
+
+typedef volatile int8_t                vint8;
+typedef volatile int16_t       vint16;
+typedef volatile int32_t       vint32;
+typedef volatile int64_t       vint64;
+
+typedef volatile float          vfloat32;
+typedef volatile float64        vfloat64;
+
+typedef uint8_t                byte;
+
+typedef uint8_t                u8;
+typedef uint16_t       u16;
+typedef uint32_t       u32;
+typedef uint64_t       u64;
+
+typedef int8_t         s8;
+typedef int16_t                s16;
+typedef int32_t                s32;
+typedef int64_t                s64;
+
+typedef volatile u8          vu8;
+typedef volatile u16         vu16;
+typedef volatile u32         vu32;
+typedef volatile u64         vu64;
+
+typedef volatile s8           vs8;
+typedef volatile s16          vs16;
+typedef volatile s32          vs32;
+typedef volatile s64          vs64;
+
+typedef struct touchPosition {
+       int16   x;
+       int16   y;
+       int16   px;
+       int16   py;
+       int16   z1;
+       int16   z2;
+} touchPosition;
+
+
+#ifndef __cplusplus
+/** C++ compatible bool for C
+
+*/
+typedef enum { false, true } bool;
+#endif
+
+// Handy function pointer typedefs
+typedef void ( * IntFn)(void);
+typedef void (* VoidFunctionPointer)(void);
+typedef void (* fp)(void);
+
+//---------------------------------------------------------------------------------
+#endif
+//---------------------------------------------------------------------------------