BOSS 7.0.1
BESIII Offline Software System
|
#include <stdio.h>
#include "ers/Issue.h"
Go to the source code of this file.
Classes | |
class | ers::Assertion |
This Issue represents a basic assertion. More... | |
struct | ers::Compile_time_error< true > |
compile time error structure More... | |
Namespaces | |
namespace | ers |
Macros | |
#define | ERS_STATIC_ASSERT(expr) { ers::Compile_time_error <((expr) != 0)> ERROR_ASSERTION_FAILED ; (void) ERROR_ASSERTION_FAILED ; } |
#define | ERS_ASSERT(expr, ...) { if(!(expr)) { char assertion_buffer[256] ; snprintf(assertion_buffer,sizeof(assertion_buffer), __VA_ARGS__) ; ers::Assertion failed_assertion(ERS_HERE, ers::error,#expr,assertion_buffer,false) ; throw failed_assertion ; } } |
This file defines the assertion class and the associated macros.
Definition in file InstallArea/include/ers/ers/Assertion.h.
#define ERS_ASSERT | ( | expr, | |
... | |||
) | { if(!(expr)) { char assertion_buffer[256] ; snprintf(assertion_buffer,sizeof(assertion_buffer), __VA_ARGS__) ; ers::Assertion failed_assertion(ERS_HERE, ers::error,#expr,assertion_buffer,false) ; throw failed_assertion ; } } |
if e is not true, then an issue of type ers::Asertion is thrown with message msg. The msg is actually a formatting string, like printf, that can be used with subsequent parameters. If the compiler is gcc, then the transient field of the assertion is set according to the transcience of the expression. This means that if the expression is detected by the compiler as being constant,
N_ERS_ASSERT
macro is defined Definition at line 86 of file InstallArea/include/ers/ers/Assertion.h.
#define ERS_STATIC_ASSERT | ( | expr | ) | { ers::Compile_time_error <((expr) != 0)> ERROR_ASSERTION_FAILED ; (void) ERROR_ASSERTION_FAILED ; } |
Compile time assertion can only be done on constant factors (i.e compile-time known quantities).
Definition at line 69 of file InstallArea/include/ers/ers/Assertion.h.