Value:
( \
if (!(ARG_must_be_true)) \
{ \
FLOW_LOG_WARNING("Validation failed; the following condition must hold: [" #ARG_must_be_true "]."); \
outcome = ::flow::cfg::Final_validator_outcome::S_FAIL; \
} \
)
#define FLOW_UTIL_SEMICOLON_SAFE(ARG_func_macro_definition)
Use this to create a semicolon-safe version of a "void" functional macro definition consisting of at ...
Definition: util_fwd.hpp:1079
Convenience macro particularly useful in the final_validator_func()
callback taken by various Config_manager APIs; checks the given condition; if false
logs a FLOW_LOG_WARNING() containing the failed condition and executes outcome = flow::cfg::Final_validator_func::S_FAIL;
; otherwise no-op.
Note the context must be such that FLOW_LOG_WARNING() compiles and acts properly.
If auto outcome = flow::cfg::Final_validator_func::S_ACCEPT;
precedes multiple invocations of this macro, then by the end of those invocations outcome == S_ACCEPT
if and only if all checks passed. All errors will be printed if outcome != S_ACCEPT
.
Informally: If you have a condition that would cause your final_validator_func()
to return flow::cfg::Final_validator_outcome::S_SKIP, then it is probably best to check for this potential condition, and return flow::cfg::Final_validator_outcome::S_SKIP
if it holds, before any further checks (FLOW_CFG_OPT_CHECK_ASSERT() calls).
- Parameters
-
ARG_must_be_true | An expression convertible to bool that should evaluate to true to avoid WARNING and outcome = S_FAIL; . |