Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CSUTIL_COMPILEASSERT_H__
00020 #define __CSUTIL_COMPILEASSERT_H__
00021
00025 namespace CS
00026 {
00027 namespace Utility
00028 {
00029 namespace Implementation
00030 {
00031
00032 template <bool x>
00033 struct CompileAssertFailure;
00034
00035 template <>
00036 struct CompileAssertFailure<true>
00037 {
00038 enum { value = 1};
00039 };
00040
00041 template <int x>
00042 struct CompileAssertTest
00043 {
00044 };
00045
00046 }
00047 }
00048 }
00049
00050
00051 #define CS_JOIN( X, Y ) CS_DO_JOIN( X, Y )
00052 #define CS_DO_JOIN( X, Y ) CS_DO_JOIN2(X,Y)
00053 #define CS_DO_JOIN2( X, Y ) X##Y
00054
00055 #define CS_COMPILE_ASSERT(B) \
00056 typedef CS::Utility::Implementation::CompileAssertTest< \
00057 sizeof(CS::Utility::Implementation::CompileAssertFailure<(bool)(B)>)> \
00058 CS_JOIN(CrystalSpaceCompileAssertTypedef, __LINE__)
00059
00060
00061 #endif // __CSUTIL_COMPILEASSERT_H__