Mercurial > hg > orthanc-stone
diff Framework/StoneException.h @ 751:712ff6ff3c19
- undo redo now works fine for both measure tool creation commands
- added LayerHolder to streamline layer index management
- added overloads for ORTHANC_ASSERT with no string message (some heavy
preprocessor wizardry in there)
- fixing wasm BasicScene is *not* finished.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 22 May 2019 11:55:52 +0200 |
parents | 28b9e3a54200 |
children | 92c400a09f1b |
line wrap: on
line diff
--- a/Framework/StoneException.h Tue May 21 13:18:35 2019 +0200 +++ b/Framework/StoneException.h Wed May 22 11:55:52 2019 +0200 @@ -115,7 +115,7 @@ // See https://isocpp.org/wiki/faq/misc-technical-issues#macros-with-multi-stmts // (or google "Multiple lines macro C++ faq lite" if link is dead) -#define ORTHANC_ASSERT(cond,streamChainMessage) \ +#define ORTHANC_ASSERT2(cond,streamChainMessage) \ if (!(cond)) { \ std::stringstream sst; \ sst << "Assertion failed. Condition = \"" #cond "\" Message = \"" << streamChainMessage << "\""; \ @@ -123,3 +123,38 @@ throw OrthancException(ErrorCode_InternalError,sstr.c_str()); \ } else (void)0 +#define ORTHANC_ASSERT1(cond) \ + if (!(cond)) { \ + std::stringstream sst; \ + sst << "Assertion failed. Condition = \"" #cond "\""; \ + std::string sstr = sst.str(); \ + throw OrthancException(ErrorCode_InternalError,sstr.c_str()); \ + } else (void)0 + + + +# define ORTHANC_EXPAND( x ) x +# define GET_ORTHANC_ASSERT(_1,_2,NAME,...) NAME +# define ORTHANC_ASSERT(...) ORTHANC_EXPAND(GET_ORTHANC_ASSERT(__VA_ARGS__, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(__VA_ARGS__)) + +/* +Explanation: + +ORTHANC_ASSERT(a) +ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a)) +ORTHANC_EXPAND(ORTHANC_ASSERT1(a)) +ORTHANC_ASSERT1(a) + +ORTHANC_ASSERT(a,b) +ORTHANC_EXPAND(GET_ORTHANC_ASSERT(a, b, ORTHANC_ASSERT2, ORTHANC_ASSERT1, UNUSED)(a,b)) +ORTHANC_EXPAND(ORTHANC_ASSERT2(a,b)) +ORTHANC_ASSERT2(a,b) + +Note: ORTHANC_EXPAND is required for some older compilers (MS v100 cl.exe ) +*/ + + + + + +