maliput
drake_assert.h File Reference

Detailed Description

Provides Drake's assertion implementation. This is intended to be used both within Drake and by other software. Drake's asserts can be armed and disarmed independently from the system-wide asserts.

#include <type_traits>
Include dependency graph for drake_assert.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  ConditionTraits< Condition >
 

Namespaces

 maliput
 Code in this file is inspired by: https://github.com/RobotLocomotion/drake/blob/master/common/text_logging.h.
 
 maliput::drake
 
 maliput::drake::internal
 
 maliput::drake::assert
 

Macros

#define MALIPUT_DRAKE_ASSERT_IS_ARMED
 
#define MALIPUT_DRAKE_UNREACHABLE()   ::maliput::drake::internal::Abort("Unreachable code was reached?!", __func__, __FILE__, __LINE__)
 
#define MALIPUT_DRAKE_DEMAND(condition)
 
#define MALIPUT_DRAKE_ASSERT(condition)   MALIPUT_DRAKE_DEMAND(condition)
 
#define MALIPUT_DRAKE_ASSERT_VOID(expression)
 

Functions

void Abort (const char *condition, const char *func, const char *file, int line)
 
void AssertionFailed (const char *condition, const char *func, const char *file, int line)
 

Variables

constexpr bool kDrakeAssertIsArmed = true
 
constexpr bool kDrakeAssertIsDisarmed = false
 

Macro Definition Documentation

◆ MALIPUT_DRAKE_ASSERT

#define MALIPUT_DRAKE_ASSERT (   condition)    MALIPUT_DRAKE_DEMAND(condition)

◆ MALIPUT_DRAKE_ASSERT_IS_ARMED

#define MALIPUT_DRAKE_ASSERT_IS_ARMED

◆ MALIPUT_DRAKE_ASSERT_VOID

#define MALIPUT_DRAKE_ASSERT_VOID (   expression)
Value:
do { \
static_assert(std::is_convertible_v<decltype(expression), void>, "Expression should be void."); \
expression; \
} while (0)

◆ MALIPUT_DRAKE_DEMAND

#define MALIPUT_DRAKE_DEMAND (   condition)
Value:
do { \
typedef ::maliput::drake::assert::ConditionTraits<typename std::remove_cv_t<decltype(condition)>> Trait; \
static_assert(Trait::is_valid, "Condition should be bool-convertible."); \
if (!Trait::Evaluate(condition)) { \
::maliput::drake::internal::AssertionFailed(#condition, __func__, __FILE__, __LINE__); \
} \
} while (0)

◆ MALIPUT_DRAKE_UNREACHABLE

#define MALIPUT_DRAKE_UNREACHABLE ( )    ::maliput::drake::internal::Abort("Unreachable code was reached?!", __func__, __FILE__, __LINE__)
maliput::drake::internal::AssertionFailed
void AssertionFailed(const char *condition, const char *func, const char *file, int line)
Definition: drake_assert_and_throw.cc:58