include/AK/Tools/Common/AkAssert.h
説明を見る。00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _AK_AKASSERT_H_
00029 #define _AK_AKASSERT_H_
00030
00031 #if defined( _DEBUG ) && !(defined AK_DISABLE_ASSERTS)
00032 #ifndef AK_ENABLE_ASSERTS
00033 #define AK_ENABLE_ASSERTS
00034 #endif
00035 #endif
00036
00037 #if !defined( AKASSERT )
00038
00039 #include <AK/SoundEngine/Common/AkTypes.h>
00040 #include <AK/SoundEngine/Common/AkSoundEngineExport.h>
00041
00042 #if defined( AK_ENABLE_ASSERTS )
00043
00044 #ifndef AK_ASSERT_HOOK
00045 AK_CALLBACK( void, AkAssertHook)(
00046 const char * in_pszExpression,
00047 const char * in_pszFileName,
00048 int in_lineNumber
00049 );
00050 #define AK_ASSERT_HOOK
00051 #endif
00052
00053 extern AKSOUNDENGINE_API AkAssertHook g_pAssertHook;
00054
00055
00056 #define AKASSERT(Condition) ((Condition) ? ((void) 0) : g_pAssertHook( #Condition, __FILE__, __LINE__) )
00057
00058
00059 #define AKVERIFY AKASSERT
00060
00061 #ifdef _DEBUG
00062 #define AKASSERTD AKASSERT
00063 #else
00064 #define AKASSERTD(Condition) ((void)0)
00065 #endif
00066
00067 #else // defined( AK_ENABLE_ASSERTS )
00068
00069 #define AKASSERT(Condition) ((void)0)
00070 #define AKASSERTD(Condition) ((void)0)
00071 #define AKVERIFY(x) ((void)(x))
00072
00073 #endif // defined( AK_ENABLE_ASSERTS )
00074
00075 #define AKASSERT_RANGE(Value, Min, Max) (AKASSERT(((Value) >= (Min)) && ((Value) <= (Max))))
00076
00077 #define AKASSERTANDRETURN( __Expression, __ErrorCode )\
00078 if (!(__Expression))\
00079 {\
00080 AKASSERT(__Expression);\
00081 return __ErrorCode;\
00082 }\
00083
00084 #define AKASSERTPOINTERORFAIL( __Pointer ) AKASSERTANDRETURN( __Pointer != NULL, AK_Fail )
00085 #define AKASSERTSUCCESSORRETURN( __akr ) AKASSERTANDRETURN( __akr == AK_Success, __akr )
00086
00087 #define AKASSERTPOINTERORRETURN( __Pointer ) \
00088 if ((__Pointer) == NULL)\
00089 {\
00090 AKASSERT((__Pointer) == NULL);\
00091 return ;\
00092 }\
00093
00094 #if defined( AK_WIN ) && ( _MSC_VER >= 1600 )
00095
00096 #define AKSTATICASSERT( __expr__, __msg__ ) static_assert( (__expr__), (__msg__) )
00097 #else
00098
00099 #define AKSTATICASSERT( __expr__, __msg__ ) typedef char __AKSTATICASSERT__[(__expr__)?1:-1]
00100 #endif
00101
00102 #endif // ! defined( AKASSERT )
00103
00104 #ifdef AK_ENABLE_ASSERTS
00105
00106
00107
00108 #define DEFINEDUMMYASSERTHOOK void AkAssertHookFunc( \
00109 const char* in_pszExpression,\
00110 const char* in_pszFileName,\
00111 int in_lineNumber)\
00112 {\
00113 \
00114 }\
00115 AkAssertHook g_pAssertHook = AkAssertHookFunc;
00116 #else
00117 #define DEFINEDUMMYASSERTHOOK
00118
00119 #endif
00120
00121
00122
00123
00124
00125
00126 template <bool b>
00127 struct AkStaticAssert {};
00128
00129
00130 template <>
00131 struct AkStaticAssert<true>
00132 {
00133 static void Assert() {}
00134 };
00135
00136 #endif
00137
あなたのプロジェクトについて教えてください。ご不明な点はありませんか。
プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。
Wwiseからはじめよう