00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012 #ifndef _CH_ASSERT_H_
00013 #define _CH_ASSERT_H_
00014
00015 #ifdef CH_LANG_CC
00016 # include "MayDay.H"
00017 #endif
00018
00019 #include "BaseNamespaceHeader.H"
00020
00021
00022 #ifdef CH_LANG_CC
00023
00027 # ifndef NDEBUG
00028 # define CH_assert_str(s) # s
00029 # define CH_assert_xstr(s) CH_assert_str(s)
00030 # define CH_assert(cond) if(!(cond)){ CH_XD::MayDay::Abort( __FILE__ ":" CH_assert_xstr(__LINE__) ": Assertion `" #cond "' failed."); }
00031 # else
00032 # define CH_assert(cond) (void)0
00033 #endif
00034
00037 template<bool> struct diy_static_assert;
00038 template<> struct diy_static_assert<true> {};
00039 #define STATIC_ASSERT( a ) diy_static_assert<a>()
00040
00041
00042 #endif //CH_LANG_CC
00043
00044 #ifdef CH_LANG_FORT
00045 #ifndef NDEBUG
00046 # define CH_assert(cond) if(.NOT. cond) call MAYDAYERROR()
00047 #else
00048 # define CH_assert(cond)
00049 #endif
00050 #endif //CH_LANG_FORT
00051
00052
00053 #include "BaseNamespaceFooter.H"
00054
00055 #endif // include guard
00056