ithewei 6 years ago
parent
commit
f62d82b3f8
2 changed files with 90 additions and 65 deletions
  1. 86 61
      hdef.h
  2. 4 4
      hplatform.h

+ 86 - 61
hdef.h

@@ -21,65 +21,24 @@ typedef int uid_t;
 typedef int (*method_t)(void* userdata);
 typedef void (*procedure_t)(void* userdata);
 
-#ifdef __cplusplus
-
-#include <string>
-#include <map>
-typedef std::map<std::string, std::string> keyval_t;
-
-#ifndef BEGIN_NAMESPACE
-#define BEGIN_NAMESPACE(ns) namespace ns {
-#endif
-
-#ifndef END_NAMESPACE
-#define END_NAMESPACE(ns)   } // ns
-#endif
-
-#ifndef EXTERN_C
-#define EXTERN_C            extern "C"
-#endif
-
-#ifndef BEGIN_EXTERN_C
-#define BEGIN_EXTERN_C      extern "C" {
-#endif
-
-#ifndef END_EXTERN_C
-#define END_EXTERN_C        } // extern "C"
-#endif
-
-#else
-
-#define BEGIN_NAMESPACE(ns)
-#define END_NAMESPACE(ns)
-
-#define EXTERN_C
-#define BEGIN_EXTERN_C
-#define END_EXTERN_C
-
-#endif // __cplusplus
-
 #ifndef MAX_PATH
 #define MAX_PATH          260
 #endif
 
 #ifndef NULL
-#ifdef __cplusplus
-#define NULL    0
-#else
-#define NULL    ((void *)0)
-#endif
+#define NULL        0
 #endif
 
-#ifndef FALSE
-#define FALSE               0
+#ifndef TRUE
+#define TRUE        1
 #endif
 
-#ifndef TRUE
-#define TRUE                1
+#ifndef FALSE
+#define FALSE       0
 #endif
 
 #ifndef INFINITE
-#define INFINITE            0xFFFFFFFF
+#define INFINITE    0xFFFFFFFF
 #endif
 
 #ifndef CR
@@ -127,27 +86,39 @@ typedef std::map<std::string, std::string> keyval_t;
 #endif
 
 #ifndef LIMIT
-#define LIMIT(lower, v, upper) MIN(MAX((lower), (v)), (upper))
+#define LIMIT(lower, v, upper) ((v) < (lower) ? (lower) : (v) > (upper) ? (upper) : (v))
+#endif
+
+#ifndef BITSET
+#define BITSET(p, n) (*(p) |= (1u << (n)))
+#endif
+
+#ifndef BITCLEAR
+#define BITCLEAR(p, n) (*(p) &= ~(1u << (n)))
+#endif
+
+#ifndef BITGET
+#define BITGET(i, n) ((i) & (1u << (n)))
 #endif
 
 #ifndef ARRAY_SIZE
-#define ARRAY_SIZE(a) (sizeof(a)/sizeof(*(a)))
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
 #endif
 
 #ifndef SAFE_FREE
-#define SAFE_FREE(p)    do {if (p) {free(p); (p) = NULL;}}while(0)
+#define SAFE_FREE(p)    do {if (p) {free(p); (p) = NULL;}} while(0)
 #endif
 
 #ifndef SAFE_DELETE
-#define SAFE_DELETE(p)  do {if (p) {delete (p); (p) = NULL;}}while(0)
+#define SAFE_DELETE(p)  do {if (p) {delete (p); (p) = NULL;}} while(0)
 #endif
 
 #ifndef SAFE_DELETE_ARRAY
-#define SAFE_DELETE_ARRAY(p) do {if (p) {delete[] (p); (p) = NULL;}}while(0)
+#define SAFE_DELETE_ARRAY(p) do {if (p) {delete[] (p); (p) = NULL;}} while(0)
 #endif
 
 #ifndef SAFE_RELEASE
-#define SAFE_RELEASE(p) do {if (p) {(p)->release(); (p) = NULL;}}while(0)
+#define SAFE_RELEASE(p) do {if (p) {(p)->release(); (p) = NULL;}} while(0)
 #endif
 
 #ifndef MAKE_FOURCC
@@ -156,8 +127,8 @@ typedef std::map<std::string, std::string> keyval_t;
 #endif
 
 #ifndef OS_WIN
-#ifndef MAKE_WORD
-#define MAKE_WORD(h, l)  ( (((WORD)h) << 8) | (l & 0xff) )
+#ifndef MAKEWORD
+#define MAKEWORD(h, l)  ( (((WORD)h) << 8) | (l & 0xff) )
 #endif
 
 #ifndef HIBYTE
@@ -167,15 +138,31 @@ typedef std::map<std::string, std::string> keyval_t;
 #ifndef LOBYTE
 #define LOBYTE(w) ( (BYTE)(w & 0xff) )
 #endif
+
+#ifndef MAKELONG
+#define MAKELONG(h, l)   ( ((int32_t)h) << 16 | (l & 0xffff) )
+#endif
+
+#ifndef HIWORD
+#define HIWORD(n)        ( (WORD)(((int32_t)n) >> 16) )
+#endif
+
+#ifndef LOWORD
+#define LOWORD(n)        ( (WORD)(n & 0xffff) )
+#endif
+#endif
+
+#ifndef MAKEINT64
+#define MAKEINT64(h, l)   ( ((int64_t)h) << 32 | (l & 0xffffffff) )
 #endif
 
-#define MAKE_INT32(h, l)   ( ((int32)h) << 16 | (l & 0xffff) )
-#define HIINT16(n)        ( (int16)(((int32)n) >> 16) )
-#define LOINI16(n)        ( (int16)(n & 0xffff) )
+#ifndef HIINT
+#define HIINT(n)        ( (int32_t)(((int64_t)n) >> 32) )
+#endif
 
-#define MAKE_INT64(h, l)   ( ((int64)h) << 32 | (l & 0xffffffff) )
-#define HIINT32(n)        ( (int32)(((int64)n) >> 32) )
-#define LOINI32(n)        ( (int32)(n & 0xffffffff) )
+#ifndef LOINT
+#define LOINT(n)        ( (int32_t)(n & 0xffffffff) )
+#endif
 
 #define FLOAT_PRECISION 1e-6
 #define FLOAT_EQUAL_ZERO(f) (ABS(f) < FLOAT_PRECISION)
@@ -189,4 +176,42 @@ typedef std::map<std::string, std::string> keyval_t;
 #define container_of(ptr, type, member) \
   ((type *) ((char *) (ptr) - offsetof(type, member)))
 
+// __cplusplus
+#ifdef __cplusplus
+
+#include <string>
+#include <map>
+typedef std::map<std::string, std::string> keyval_t;
+
+#ifndef BEGIN_NAMESPACE
+#define BEGIN_NAMESPACE(ns) namespace ns {
+#endif
+
+#ifndef END_NAMESPACE
+#define END_NAMESPACE(ns)   } // ns
+#endif
+
+#ifndef EXTERN_C
+#define EXTERN_C            extern "C"
+#endif
+
+#ifndef BEGIN_EXTERN_C
+#define BEGIN_EXTERN_C      extern "C" {
+#endif
+
+#ifndef END_EXTERN_C
+#define END_EXTERN_C        } // extern "C"
+#endif
+
+#else
+
+#define BEGIN_NAMESPACE(ns)
+#define END_NAMESPACE(ns)
+
+#define EXTERN_C
+#define BEGIN_EXTERN_C
+#define END_EXTERN_C
+
+#endif // __cplusplus
+
 #endif  // HW_DEF_H_

+ 4 - 4
hplatform.h

@@ -140,10 +140,10 @@
 
 // c99
 #if defined(_MSC_VER) && _MSC_VER < 1700
-typedef __int8      int8_t;
-typedef __int16     int16_t;
-typedef __int32     int32_t;
-typedef __int64     int64_t;
+typedef __int8              int8_t;
+typedef __int16             int16_t;
+typedef __int32             int32_t;
+typedef __int64             int64_t;
 typedef unsigned __int8     uint8_t;
 typedef unsigned __int16    uint16_t;
 typedef unsigned __int32    uint32_t;