8#define M_PI 3.14159265358979323846
12#define M_2PI (2.0 * M_PI)
18constexpr double M_1G = 9.80665;
22#define XR_TO_STR(_arg) #_arg
23#define DEF2STR(_arg) XR_TO_STR(_arg)
29#define UNUSED(_x) ((void)(_x))
35#define OFFSET_OF(type, member) ((size_t) & ((type *)0)->member)
41#define MEMBER_SIZE_OF(type, member) (sizeof(decltype(((type *)0)->member)))
46#define CONTAINER_OF(ptr, type, member) \
47 ((type *)((char *)(ptr) - OFFSET_OF(type, member)))
50static constexpr size_t LIBXR_CACHE_LINE_SIZE = (
sizeof(
void *) == 8) ? 64 : 32;
57enum class ErrorCode : int8_t
84enum class SizeLimitMode : uint8_t
96#ifdef LIBXR_DEBUG_BUILD
107 libxr_fatal_error(__FILE__, __LINE__, false); \
116#define ASSERT_ISR(arg) \
121 libxr_fatal_error(__FILE__, __LINE__, true); \
125#define ASSERT(arg) ((void)0)
126#define ASSERT_ISR(arg) ((void)0)
136extern void libxr_fatal_error(
const char *file, uint32_t line,
bool in_isr);
149template <
typename T1,
typename T2>
150constexpr auto max(T1 a, T2 b) ->
typename std::common_type<T1, T2>::type
152 return (a > b) ? a : b;
164template <
typename T1,
typename T2>
165constexpr auto min(T1 a, T2 b) ->
typename std::common_type<T1, T2>::type
167 return (a < b) ? a : b;
constexpr auto max(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最大值
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值