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 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 } // namespace Implementation 00047 } // namespace Utility 00048 } // namespace CS 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__
Generated for Crystal Space 2.0 by doxygen 1.6.1