csutil/compileassert.h
Go to the documentation of this file.00001 /* 00002 Copyright (C) 2006 by Marten Svanfeldt 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public 00015 License along with this library; if not, write to the Free 00016 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00017 */ 00018 00019 #ifndef __CSUTIL_COMPILEASSERT_H__ 00020 #define __CSUTIL_COMPILEASSERT_H__ 00021 00025 namespace CrystalSpace 00026 { 00027 00028 template <bool x> 00029 struct COMPILE_ASSERT_FAILURE 00030 { 00031 }; 00032 00033 template <> 00034 struct COMPILE_ASSERT_FAILURE<true> 00035 { 00036 enum { value = 1}; 00037 }; 00038 00039 template <int x> 00040 struct CompileAssertTest 00041 { 00042 }; 00043 } 00044 00045 00046 #define CS_JOIN( X, Y ) CS_DO_JOIN( X, Y ) 00047 #define CS_DO_JOIN( X, Y ) CS_DO_JOIN2(X,Y) 00048 #define CS_DO_JOIN2( X, Y ) X##Y 00049 00050 #define CS_COMPILE_ASSERT(B) \ 00051 typedef CrystalSpace::CompileAssertTest< \ 00052 sizeof(CrystalSpace::COMPILE_ASSERT_FAILURE<(bool)(B)>)> \ 00053 CS_JOIN(CrystalSpaceCompileAssertTypedef, __LINE__) 00054 00055 00056 #endif
Generated for Crystal Space by doxygen 1.4.7