Go to the documentation of this file.
5 #ifndef __pinocchio_macros_hpp__
6 #define __pinocchio_macros_hpp__
14 #if (__cplusplus >= 202002L)
15 #define PINOCCHIO_WITH_CXX20_SUPPORT
18 #if (__cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703))
19 #define PINOCCHIO_WITH_CXX17_SUPPORT
22 #if (__cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201403))
23 #define PINOCCHIO_WITH_CXX14_SUPPORT
26 #if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
27 #define PINOCCHIO_WITH_CXX11_SUPPORT
30 #define PINOCCHIO_STRING_LITERAL(string) #string
34 #if defined(__GNUC__) || defined(__clang__)
35 #define PINOCCHIO_PRAGMA(x) _Pragma(#x)
36 #define PINOCCHIO_PRAGMA_MESSAGE(the_message) PINOCCHIO_PRAGMA(GCC message #the_message)
37 #define PINOCCHIO_PRAGMA_WARNING(the_message) PINOCCHIO_PRAGMA(GCC warning #the_message)
38 #define PINOCCHIO_PRAGMA_DEPRECATED(the_message) \
39 PINOCCHIO_PRAGMA_WARNING(Deprecated : #the_message)
40 #define PINOCCHIO_PRAGMA_DEPRECATED_HEADER(old_header, new_header) \
41 PINOCCHIO_PRAGMA_WARNING(Deprecated header file \
42 : #old_header has been replaced \
43 by #new_header.\n Please use #new_header instead of #old_header.)
45 #define PINOCCHIO_PRAGMA(x)
46 #define PINOCCHIO_PRAGMA_MESSAGE(the_message)
47 #define PINOCCHIO_PRAGMA_WARNING(the_message)
48 #define PINOCCHIO_PRAGMA_DEPRECATED(the_message)
49 #define PINOCCHIO_PRAGMA_DEPRECATED_HEADER(old_header, new_header)
53 #define PINOCCHIO_NOT_A_MACRO
61 template<
typename T,
typename U>
70 #define PINOCCHIO_MACRO_EMPTY_ARG
73 #define PINOCCHIO_UNUSED_VARIABLE(var) (void)(var)
76 #define PINOCCHIO_ASSERT_MATRIX_SPECIFIC_SIZE(type, M, nrows, ncols) \
77 EIGEN_STATIC_ASSERT( \
78 (type::RowsAtCompileTime == Eigen::Dynamic || type::RowsAtCompileTime == nrows) \
79 && (type::ColsAtCompileTime == Eigen::Dynamic || type::ColsAtCompileTime == ncols), \
80 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE); \
81 assert(M.rows() == nrows && M.cols() == ncols);
86 #define PINOCCHIO_STATIC_ASSERT(condition, msg) \
88 int msg[(condition) ? 1 : -1]; \
96 template<
typename D,
template<
typename>
class TypeAccess>
105 #if defined(__GNUC__) || defined(__clang__)
106 #define PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
107 #define PINOCCHIO_COMPILER_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
108 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS \
109 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
110 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_VARIADIC_MACROS \
111 _Pragma("GCC diagnostic ignored \"-Wvariadic-macros\"")
112 #if defined(__clang__)
113 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED
114 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_SELF_ASSIGN_OVERLOADED \
115 _Pragma("GCC diagnostic ignored \"-Wself-assign-overloaded\"")
117 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED \
118 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
119 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_SELF_ASSIGN_OVERLOADED
122 #define PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH _Pragma("warning(push)")
123 #define PINOCCHIO_COMPILER_DIAGNOSTIC_POP _Pragma("warning(pop)")
124 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS \
125 _Pragma("warning(disable : 4996)")
126 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_VARIADIC_MACROS
127 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_SELF_ASSIGN_OVERLOADED
128 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED
130 #define PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
131 #define PINOCCHIO_COMPILER_DIAGNOSTIC_POP
132 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
133 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_VARIADIC_MACROS
134 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_SELF_ASSIGN_OVERLOADED
135 #define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED
136 #endif // __GNUC__ || __clang__
143 #if defined(__GNUC__)
144 #pragma GCC system_header
151 #define PINOCCHIO_PRETTY_FUNCTION __FUNCSIG__
153 #define PINOCCHIO_PRETTY_FUNCTION __PRETTY_FUNCTION__
158 #if !defined(PINOCCHIO_NO_THROW)
159 #define PINOCCHIO_THROW(condition, exception_type, message) \
162 throw exception_type(message); \
165 #define PINOCCHIO_THROW_PRETTY(exception, message) \
167 std::stringstream ss; \
168 ss << "From file: " << __FILE__ << "\n"; \
169 ss << "in function: " << PINOCCHIO_PRETTY_FUNCTION << "\n"; \
170 ss << "at line: " << __LINE__ << "\n"; \
171 ss << "message: " << message << "\n"; \
172 throw exception(ss.str()); \
175 #define PINOCCHIO_THROW(condition, exception_type, message)
176 #define PINOCCHIO_THROW_PRETTY(exception, message)
179 #define _PINOCCHIO_EXPAND(x) x
180 #define _PINOCCHIO_GET_OVERRIDE_FOR_CHECK_INPUT_ARGUMENT(_1, _2, MACRO_NAME, ...) MACRO_NAME
182 #define _PINOCCHIO_CHECK_INPUT_ARGUMENT_2(condition, message) \
183 PINOCCHIO_THROW(condition, std::invalid_argument, message)
185 #define _PINOCCHIO_CHECK_INPUT_ARGUMENT_1(condition) \
186 _PINOCCHIO_CHECK_INPUT_ARGUMENT_2( \
187 condition, "The following check on the input argument has failed: " #condition)
189 #define _PINOCCHIO_CHECK_INPUT_ARGUMENT_0
193 #define PINOCCHIO_CHECK_INPUT_ARGUMENT(...) \
194 _PINOCCHIO_EXPAND(_PINOCCHIO_EXPAND(_PINOCCHIO_GET_OVERRIDE_FOR_CHECK_INPUT_ARGUMENT( \
195 __VA_ARGS__, _PINOCCHIO_CHECK_INPUT_ARGUMENT_2, _PINOCCHIO_CHECK_INPUT_ARGUMENT_1, \
196 _PINOCCHIO_CHECK_INPUT_ARGUMENT_0))(__VA_ARGS__))
198 #define _PINOCCHIO_GET_OVERRIDE_FOR_CHECK_ARGUMENT_SIZE(_1, _2, _3, MACRO_NAME, ...) MACRO_NAME
200 #define _PINOCCHIO_CHECK_ARGUMENT_SIZE_3(size, expected_size, message) \
201 if (size != expected_size) \
203 std::ostringstream oss; \
204 oss << "wrong argument size: expected " << expected_size << ", got " << size << std::endl; \
205 oss << "hint: " << message << std::endl; \
206 PINOCCHIO_THROW(false, std::invalid_argument, oss.str()); \
209 #define _PINOCCHIO_CHECK_ARGUMENT_SIZE_2(size, expected_size) \
210 _PINOCCHIO_CHECK_ARGUMENT_SIZE_3( \
211 size, expected_size, \
212 PINOCCHIO_STRING_LITERAL(size) " is different from " PINOCCHIO_STRING_LITERAL(expected_size))
214 #define _PINOCCHIO_CHECK_ARGUMENT_SIZE_1
217 #define PINOCCHIO_CHECK_ARGUMENT_SIZE(...) \
218 _PINOCCHIO_EXPAND(_PINOCCHIO_EXPAND(_PINOCCHIO_GET_OVERRIDE_FOR_CHECK_ARGUMENT_SIZE( \
219 __VA_ARGS__, _PINOCCHIO_CHECK_ARGUMENT_SIZE_3, _PINOCCHIO_CHECK_ARGUMENT_SIZE_2, \
220 _PINOCCHIO_CHECK_ARGUMENT_SIZE_1))(__VA_ARGS__))
224 #endif // ifndef __pinocchio_macros_hpp__
#define PINOCCHIO_COMPILER_DIAGNOSTIC_POP
#define PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_VARIADIC_MACROS
TypeAccess< typename argument_type< void(D)>::type >::type type
#define PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
macros for pragma push/pop/ignore deprecated warnings
Main pinocchio namespace.
pinocchio
Author(s):
autogenerated on Sat Jun 22 2024 02:41:48