All pastes #809382 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-12-08 21:34 UTC
rendered paste body
Index: dep/include/g3dlite/G3D/g3dmath.h
===================================================================
--- dep/include/g3dlite/G3D/g3dmath.h	(revision 4772)
+++ dep/include/g3dlite/G3D/g3dmath.h	(working copy)
@@ -153,20 +153,26 @@
     @deprecated Use G3D::twoPi() instead. */
 #define G3D_TWO_PI  (6.283185)
 
+#ifdef G3D_WIN32
 typedef signed char		int8;
 typedef unsigned char	uint8;
 typedef short			int16;
 typedef unsigned short	uint16;
 typedef int				int32;
 typedef unsigned int	uint32;
-
-#ifdef _MSC_EXTENSIONS
-    typedef __int64			   int64;
-    typedef unsigned __int64   uint64;
+typedef __int64            int64;
+typedef unsigned __int64   uint64;
 #else
-    typedef long long		   int64;
-    typedef unsigned long long uint64;
+typedef __int64_t   int64;
+typedef __int32_t   int32;
+typedef __int16_t   int16;
+typedef __int8_t    int8;
+typedef __uint64_t  uint64;
+typedef __uint32_t  uint32;
+typedef __uint16_t  uint16;
+typedef __uint8_t   uint8;
 #endif
+
 typedef unsigned int uint;
 
 typedef float			float32;
Index: dep/include/g3dlite/G3D/Vector3.h
===================================================================
--- dep/include/g3dlite/G3D/Vector3.h	(revision 4772)
+++ dep/include/g3dlite/G3D/Vector3.h	(working copy)
@@ -47,6 +47,13 @@
  Do not subclass-- this implementation makes assumptions about the
  memory layout.
  */
+// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack(1)
+#else
+#pragma pack(push,1)
+#endif
+
 class Vector3 {
 private:
     /**
@@ -481,6 +488,13 @@
     static Vector3 dummy;
 };
 
+// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack()
+#else
+#pragma pack(pop)
+#endif
+
 inline G3D::Vector3 operator*(float s, const G3D::Vector3& v) {
     return v * s;
 }
Index: src/shared/vmap/ShortBox.h
===================================================================
--- src/shared/vmap/ShortBox.h	(revision 4772)
+++ src/shared/vmap/ShortBox.h	(working copy)
@@ -31,6 +31,13 @@
 namespace VMAP
 {
 
+// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack(1)
+#else
+#pragma pack(push,1)
+#endif
+
     class ShortBox
     {
         private:
@@ -110,5 +117,12 @@
             }
     };
 
+// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack()
+#else
+#pragma pack(pop)
+#endif
+
 }
 #endif
Index: src/shared/vmap/ShortVector.h
===================================================================
--- src/shared/vmap/ShortVector.h	(revision 4772)
+++ src/shared/vmap/ShortVector.h	(working copy)
@@ -28,12 +28,19 @@
     Vector with 16 bit fix point values 12.4 bit.
     */
 
+// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack(1)
+#else
+#pragma pack(push,1)
+#endif
+
     class ShortVector
     {
         private:
-            short iX;
-            short iY;
-            short iZ;
+            uint16 iX;
+            uint16 iY;
+            uint16 iZ;
 
             const static short maxvalue = 0x7fff;
             const static short minvalue = -0x7fff;
@@ -131,5 +138,14 @@
             }
 
     };
+
+// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some paltform
+#if defined( __GNUC__ )
+#pragma pack()
+#else
+#pragma pack(pop)
+#endif
+
 }
+
 #endif
Index: src/shared/vmap/SubModel.cpp
===================================================================
--- src/shared/vmap/SubModel.cpp	(revision 4772)
+++ src/shared/vmap/SubModel.cpp	(working copy)
@@ -96,16 +96,18 @@
         BP_iBox=38,
     };
     /**
-    This is ugly, but due to compatibility and 64 bit support we have to do that ... sorry
+    This is ugly, but due to compatibility and 64 bit support we have to do that ... 
     */
     void SubModel::initFromBinBlock(void *pBinBlock)
     {
-        iNTriangles =  *((unsigned int *)(((char *) pBinBlock) + BP_iNTriangles));
-        iNNodes =  *((unsigned int *) (((char *) pBinBlock) + BP_iNNodes));
+        iNTriangles =  *((uint32*)(((char *) pBinBlock) + BP_iNTriangles));
+        iNNodes =  *((uint32*) (((char *) pBinBlock) + BP_iNNodes));
         iBasePosition =  *((Vector3 *) (((char *) pBinBlock) + BP_iBasePosition));
-        iNodesPos =  *((unsigned int *) (((char *) pBinBlock) + BP_iNodesPos));
-        iTrianglesPos =  *((unsigned int *) (((char *) pBinBlock) + BP_iTrianglesPos));
-        iHasInternalMemAlloc = *((bool *) (((char *) pBinBlock) + BP_iHasInternalMemAlloc));
+        iNodesPos =  *((uint32*) (((char *) pBinBlock) + BP_iNodesPos));
+        iTrianglesPos =  *((uint32*) (((char *) pBinBlock) + BP_iTrianglesPos));
+
+        // bool is platform dependent and at 64-bit platform sizeof(bool)==8, for ready must be used fixed size type
+        iHasInternalMemAlloc = (*((uint32 *) (((char *) pBinBlock) + BP_iHasInternalMemAlloc)))!=0;
         iBox =  *((ShortBox *) (((char *) pBinBlock) + BP_iBox));
     }