#include <iostream>
#include <sstream>
#include <string>
#include "rcutils/snprintf.h"
#include "rmw/allocators.h"
#include "rmw/error_handling.h"
#include "rmw/impl/config.h"
#include "rmw/impl/cpp/demangle.hpp"
Go to the source code of this file.
|
#define | RMW_TRY_PLACEMENT_NEW(Destination, BufferForNew, FailureAction, Type, ...) |
|
#define | RMW_TRY_DESTRUCTOR(Statement, Type, FailureAction) |
|
#define | RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE(Statement, Type) |
|
#define | RMW_CHECK_TYPE_IDENTIFIERS_MATCH(ElementName, ElementTypeID, ExpectedTypeID, OnFailure) |
|
◆ RMW_TRY_PLACEMENT_NEW
#define RMW_TRY_PLACEMENT_NEW |
( |
|
Destination, |
|
|
|
BufferForNew, |
|
|
|
FailureAction, |
|
|
|
Type, |
|
|
|
... |
|
) |
| |
Value:try { \
Destination = new(BufferForNew) Type(__VA_ARGS__); \
RMW_SET_ERROR_MSG( \
( \
" constructing " #Type
": " + exception.
what() \
).c_str()); \
FailureAction; \
} catch (...) { \
RMW_SET_ERROR_MSG("caught unknown C++ exception constructing " #Type); \
FailureAction; \
}
std::string demangle(const T &instance)
Return the demangle name of the instance of type T.
Definition: demangle.hpp:39
◆ RMW_TRY_DESTRUCTOR
#define RMW_TRY_DESTRUCTOR |
( |
|
Statement, |
|
|
|
Type, |
|
|
|
FailureAction |
|
) |
| |
Value:try { \
Statement; \
RMW_SET_ERROR_MSG( \
( \
std::string(
"caught C++ exception in destructor of " #Type
": ") + \
).c_str()); \
FailureAction; \
} catch (...) { \
RMW_SET_ERROR_MSG("caught unknown C++ exception in destructor of " #Type); \
FailureAction; \
}
std::string demangle(const T &instance)
Return the demangle name of the instance of type T.
Definition: demangle.hpp:39
◆ RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE
#define RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE |
( |
|
Statement, |
|
|
|
Type |
|
) |
| |
Value:try { \
Statement; \
std::stringstream ss; \
ss << "caught C++ exception in destructor of " #Type " while handling a failure: " \
<< ", at: " << __FILE__ << ":" << __LINE__ << '\n'; \
} catch (...) { \
std::stringstream ss; \
ss << "caught unknown C++ exception in destructor of " #Type << \
" while handling a failure at: " << __FILE__ << ":" << __LINE__ << '\n'; \
}
std::string demangle(const T &instance)
Return the demangle name of the instance of type T.
Definition: demangle.hpp:39
◆ RMW_CHECK_TYPE_IDENTIFIERS_MATCH
#define RMW_CHECK_TYPE_IDENTIFIERS_MATCH |
( |
|
ElementName, |
|
|
|
ElementTypeID, |
|
|
|
ExpectedTypeID, |
|
|
|
OnFailure |
|
) |
| |