nim_duilib/base/macros.h
jiajia_deng 4933d1f2bc Remove dependency on shared
Signed-off-by: jiajia_deng <2894220@gmail.com>
2019-09-20 16:27:58 +08:00

76 lines
2.5 KiB
C++

// This file defines some useful macros
#ifndef BASE_MACROS_H_
#define BASE_MACROS_H_
#include <assert.h>
#include <string>
#include "base_types.h"
// check the pointer is null and return null
#define PTR_NULL(p) { assert(p); if (NULL == p) return NULL; }
// check the pointer is null and return void
#define PTR_VOID(p) { assert(p); if (NULL == p) return; }
// check the pointer avalible£¬ if not then return false
#define PTR_FALSE(p) { assert(p); if (NULL == p) return false; }
// delete pointer on safe mode
#ifndef SAFE_DELETE
#define SAFE_DELETE(p) { if (NULL != p) { delete (p); (p) = NULL; } }
#endif
// release object on safe mode
#define SAFE_RELEASE(p) { if (NULL != p) { (p)->Release(); (p) = NULL; } }
//namespace
#ifndef NAMESPACE_USING_
#define NAMESPACE_USING_(n) using namespace n;
#endif
#ifndef NAMESPACE_BEGIN_
#define NAMESPACE_BEGIN_(n) namespace n {
#endif
#ifndef NAMESPACE_END_
#define NAMESPACE_END_(n) }
#endif
#ifndef COUNT_OF
#define COUNT_OF(array) (sizeof(array)/sizeof(array[0]))
#endif
// define some format string
#define CHAR_FORMAT "%c"
#define POINTER_FORMAT "%p"
#define STRING_FORMAT "%s"
#define INT8_FORMAT "%d"
#define UINT8_FORMAT "%u"
#define INT16_FORMAT "%d"
#define UINT16_FORMAT "%u"
#define INT32_FORMAT "%d"
#define UINT32_FORMAT "%u"
#define HEX8_FORMAT "%x"
#define HEX16_FORMAT "%x"
#define HEX32_FORMAT "%x"
#define OCT8_FORMAT "%o"
#define OCT16_FORMAT "%o"
#define OCT32_FORMAT "%o"
#define FLOAT_FORMAT "%f"
#define DOUBLE_FORMAT "%lf"
#if defined(COMPILER_MSVC)
#define INT64_FORMAT "%I64d"
#define UINT64_FORMAT "%I64u"
#define HEX64_FORMAT "%I64x"
#define OCT64_FORMAT "%I64o"
#else //OS_WIN
#define UINT64_FORMAT "%llu"
#define INT64_FORMAT "%lld"
#define HEX64_FORMAT "%llx"
#define OCT64_FORMAT "%llo"
#endif //OS_WIN
#endif // BASE_MACROS_H_