| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
专题 | 命名空间 | 类 | 宏定义 | 类型定义 | 枚举 | 函数
RMVL 核心模块

涵盖了有关异常处理、定时器、编程工具等相关内容 更多...

RMVL 核心模块 的协作图:

## 专题
| 聚合体编译期反射
| 提供了 C++17 和 C++20 两种实现的聚合体编译期反射功能
| 元编程
| 目前提供了 hash 生成相关的 Type Traits
| Python 风格的字符串处理
| 提供了 Python 风格的字符串处理函数，例如 split、strip 等
| 定时、计时模块

## 命名空间
namespace | rm::reflect::helper

## 类
class | rm::Exception
| 该类封装了有关程序中发生的错误的所有或几乎所有必要信息。异常通常是通过 RMVL_Error 和 RMVL_Error_ 宏隐式构造和抛出的 更多...

## 宏定义
#define | HIGHLIGHT_(...)
#define | WARNING_(...)
#define | PASS_(...)
#define | ERROR_(...)
#define | INFO_(...)
#define | DEBUG_WARNING_(...)
#define | DEBUG_ERROR_(...)
#define | DEBUG_HIGHLIGHT_(...)
#define | DEBUG_INFO_(...)
#define | DEBUG_PASS_(...)
#define | RMVL_ERRHANDLE(...)
#define | RMVL_Error(code, msg)
| 调用错误处理程序
#define | RMVL_Error_(code, fmt, ...)
| 调用错误处理程序
#define | RMVL_Assert(expr)
| 在运行时检查条件，如果失败则抛出异常
#define | RMVL_DbgAssert(expr)
| 在 Debug 条件下或启用静态分析工具的情况下，在运行时检查条件，如果失败则抛出异常

## 类型定义
using | rm::hash_traits< Tp, std::enable_if_t<!std::is_aggregate_v< Tp > > >::hash_func = std::hash<Tp>
using | rm::hash_traits< Tp, std::enable_if_t< std::is_aggregate_v< Tp > > >::hash_func = hash_aggregate<Tp>

## 枚举
enum | RMVLErrorCode : int { RMVL_StsOk = 0 , RMVL_StsBackTrace = -1 , RMVL_StsError = -2 , RMVL_StsNoMem = -3 , RMVL_StsBadArg = -4 , RMVL_StsBadSize = -5 , RMVL_StsBadFunc = -6 , RMVL_StsNullPtr = -7 , RMVL_StsNotaNumber = -8 , RMVL_StsDivByZero = -9 , RMVL_StsOutOfRange = -10 , RMVL_StsAssert = -11 , RMVL_StsInvFmt = -12 , RMVL_BadDynamicType = -13 }
| RMVL 错误码 更多...

## 函数
std::string | rm::format (const char *fmt,...)
| 返回使用类 printf 表达式格式化的文本字符串。
void | rm::breakOnError ()
| 触发非法内存操作
void | rm::throwError (const Exception &exc)
| 抛出异常
void | rm::error (int _code, std::string_view _err, const char *_func, const char *_file, int _line)
| 发出错误信号并引发异常
const char * | rm::getBuildInformation ()
| 返回完整的配置输出
std::size_t | rm::hash_aggregate< Tp, Enable >::operator() (const Tp &r) const
uint32_t | rm::processId ()
| 获取当前进程的 ID

## 详细描述

涵盖了有关异常处理、定时器、编程工具等相关内容

- 异常处理可参考 rm::Exception 类，提供了异常处理的相关函数
- 定时器可参考 rm::Timer 类
- 编程工具包括了 聚合体编译期反射 、 元编程 、Python 风格的字符串处理 等

## 宏定义说明

## ◆ DEBUG_ERROR_

#define DEBUG_ERROR_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
ERROR_(__VA_ARGS__)
ERROR_
#define ERROR_(...)
定义 util.hpp:47

## ◆ DEBUG_HIGHLIGHT_

#define DEBUG_HIGHLIGHT_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
HIGHLIGHT_(__VA_ARGS__)
HIGHLIGHT_
#define HIGHLIGHT_(...)
定义 util.hpp:29

## ◆ DEBUG_INFO_

#define DEBUG_INFO_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
INFO_(__VA_ARGS__)
INFO_
#define INFO_(...)
定义 util.hpp:53

## ◆ DEBUG_PASS_

#define DEBUG_PASS_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
PASS_(__VA_ARGS__)
PASS_
#define PASS_(...)
定义 util.hpp:41

## ◆ DEBUG_WARNING_

#define DEBUG_WARNING_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
WARNING_(__VA_ARGS__)
WARNING_
#define WARNING_(...)
定义 util.hpp:35

## ◆ ERROR_

#define ERROR_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
do { \
printf("\033[31m err - \033[0m" __VA_ARGS__); \
printf("\n"); \
} while (false)

示例
  samples/camera/hik/sample_hik_writer.cpp, samples/camera/mv/sample_mv_writer.cpp, samples/detector/hik/sample_hik_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_collection.cpp.

## ◆ HIGHLIGHT_

#define HIGHLIGHT_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
do { \
printf("\033[35minfo - \033[0m" __VA_ARGS__); \
printf("\n"); \
} while (false)

## ◆ INFO_

#define INFO_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
do { \
printf("info - " __VA_ARGS__); \
printf("\n"); \
} while (false)

示例
  samples/camera/hik/sample_hik_multi.cpp, samples/detector/hik/sample_hik_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_collection.cpp.

## ◆ PASS_

#define PASS_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
do { \
printf("\033[32minfo - \033[0m" __VA_ARGS__); \
printf("\n"); \
} while (false)

示例
  samples/detector/hik/sample_hik_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_collection.cpp.

## ◆ RMVL_Assert

#define RMVL_Assert | ( |  | expr | ) |

`#include <rmvl/core/util.hpp>`

值:
(!!(expr)) ? (void(0)) : ::rm::error(RMVL_StsAssert, #expr, RMVL_Func, __FILE__, __LINE__)
rm::error
void error(int _code, std::string_view _err, const char *_func, const char *_file, int _line)
发出错误信号并引发异常
RMVL_StsAssert
@ RMVL_StsAssert
断言失败 Assertion failed
定义 util.hpp:86

在运行时检查条件，如果失败则抛出异常

注解
  宏 RMVL_Assert (以及 RMVL_DbgAssert) 对指定的表达式求值。如果它是0，宏抛出一个错误。宏 RMVL_Assert 将会在 Debug 和 Release 的配置下检查条件，而 RMVL_DbgAssert 只会在 Debug 的配置下生效。

参见
  RMVLErrorCode

示例
  samples/tutorial_code/io/sample_write_corners.cpp.

## ◆ RMVL_DbgAssert

#define RMVL_DbgAssert | ( |  | expr | ) |

`#include <rmvl/core/util.hpp>`

值:
RMVL_Assert(expr)
RMVL_Assert
#define RMVL_Assert(expr)
在运行时检查条件，如果失败则抛出异常
定义 util.hpp:222

在 Debug 条件下或启用静态分析工具的情况下，在运行时检查条件，如果失败则抛出异常

## ◆ RMVL_ERRHANDLE

#define RMVL_ERRHANDLE | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
breakOnError()

## ◆ RMVL_Error

#define RMVL_Error | ( |  | code,
|  |  | msg )

`#include <rmvl/core/util.hpp>`

值:
::rm::error(code, msg, RMVL_Func, __FILE__, __LINE__)

调用错误处理程序

注解
  目前，错误处理程序将错误代码和错误消息打印到标准错误流 stderr。在 Debug 配置中，它会引发内存访问冲突，以便调试器可以分析执行堆栈和所有参数。在 Release 配置中，抛出异常。

参数

  [in] | code | 一种 RMVLErrorCode 错误码
  [in] | msg | 错误信息

示例
  samples/camera/mv/sample_mv_auto_calib.cpp, samples/detector/hik/sample_hik_armor_collection.cpp, samples/detector/hik/sample_hik_armor_size_classify.cpp, samples/detector/mv/sample_mv_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_size_classify.cpp.

## ◆ RMVL_Error_

#define RMVL_Error_ | ( |  | code,
|  |  | fmt,
|  |  | ... )

`#include <rmvl/core/util.hpp>`

值:
::rm::error(code, ::rm::format(fmt, __VA_ARGS__), RMVL_Func, __FILE__, __LINE__)
rm::format
std::string format(const char *fmt,...)
返回使用类 printf 表达式格式化的文本字符串。

调用错误处理程序

注解
  该宏可用于动态构造错误消息，以包含一些动态信息，例如
  // 请注意格式化文本消息周围的额外括号
  RMVL_Error_(RMVL_StsBadArg, "Bad channel of the input argument: \"input_image\", chn = %d", C);
  RMVL_Error_
  #define RMVL_Error_(code, fmt,...)
  调用错误处理程序
  定义 util.hpp:213
  RMVL_StsBadArg
  @ RMVL_StsBadArg
  参数异常 Bad argument
  定义 util.hpp:79

参数

  [in] | code | 一种 RMVLErrorCode 错误码
  [in] | fmt | 格式化字符串
  [in] | ... | 括号中带有类似 printf 格式的错误信息

## ◆ WARNING_

#define WARNING_ | ( |  | ... | ) |

`#include <rmvl/core/util.hpp>`

值:
do { \
printf("\033[33mwarn - \033[0m" __VA_ARGS__); \
printf("\n"); \
} while (false)

示例
  samples/detector/hik/sample_hik_armor_collection.cpp, samples/detector/hik/sample_hik_armor_size_classify.cpp, samples/detector/mv/sample_mv_armor_collection.cpp , 以及 samples/detector/mv/sample_mv_armor_size_classify.cpp.

## 类型定义说明

## ◆ hash_func [1/2]

template<typename Tp>

using rm::hash_traits< Tp, std::enable_if_t< std::is_aggregate_v< Tp > > >::hash_func = hash_aggregate<Tp>

## ◆ hash_func [2/2]

template<typename Tp>

using rm::hash_traits< Tp, std::enable_if_t<!std::is_aggregate_v< Tp > > >::hash_func = std::hash<Tp>

## 枚举类型说明

## ◆ RMVLErrorCode

enum RMVLErrorCode : int

`#include <rmvl/core/util.hpp>`

RMVL 错误码

枚举值
RMVL_StsOk | 没有错误 No Error
RMVL_StsBackTrace | 回溯 Backtrace
RMVL_StsError | 未指定（未知）错误 Unspecified (Unknown) error
RMVL_StsNoMem | 内存不足 Insufficient memory
RMVL_StsBadArg | 参数异常 Bad argument
RMVL_StsBadSize | 数组大小不正确 Incorrect size of the array
RMVL_StsBadFunc | 功能不支持 Unsupported function
RMVL_StsNullPtr | 空指针 Null pointer
RMVL_StsNotaNumber | 非数 Not a Number (nan)
RMVL_StsDivByZero | 发生了除以 0 的情况 Division by zero occurred
RMVL_StsOutOfRange | 其中一个参数的值超出了范围 One of the arguments' values is out of range
RMVL_StsAssert | 断言失败 Assertion failed
RMVL_StsInvFmt | 无效格式 Invalid format
RMVL_BadDynamicType | 动态类型转换错误 Bad dynamic_cast type,

## 函数说明

## ◆ breakOnError()

void rm::breakOnError | ( |  | ) |
| inline

`#include <rmvl/core/util.hpp>`

触发非法内存操作

注解
  当调用该函数时，默认错误处理程序会发出一个硬件异常，这可以使调试更加方便

## ◆ error()

void rm::error | ( | int | _code,
|  | std::string_view | _err,
|  | const char * | _func,
|  | const char * | _file,
|  | int | _line )

`#include <rmvl/core/util.hpp>`

发出错误信号并引发异常

注解
  该函数将错误信息打印到 stderr

参数

  [in] | _code | 错误码
  [in] | _err | 错误描述
  [in] | _func | 函数名，仅在编译器支持获取时可用
  [in] | _file | 发生错误的源文件名
  [in] | _line | 源文件中发生错误的行号

参见
  RMVL_Error, RMVL_Error_, RMVL_Assert

## ◆ format()

std::string rm::format | ( | const char * | fmt,
|  |  | ... )

`#include <rmvl/core/util.hpp>`

返回使用类 printf 表达式格式化的文本字符串。

注解
  该函数的作用类似于 sprintf，但形成并返回一个 STL 字符串。它可用于在 Exception 构造函数中形成错误消息。

参数

  [in] | fmt | 与 printf 兼容的格式化说明符。

类型 | 限定符
--- | ---
const char* | s
char | c
float or double | f,g
int, long, long long | d, ld, lld
unsigned, unsigned long, unsigned long long | u, lu, llu
uint64_t \(\to\) uintmax_t, int64_t \(\to\) intmax_t | ju, jd
size_t | zu

## ◆ getBuildInformation()

const char * rm::getBuildInformation | ( |  | ) |

`#include <rmvl/core/util.hpp>`

返回完整的配置输出

返回
  原始的 CMake 输出，包括版本控制系统修订，编译器版本，编译器标志，启用的模块和第三方库等。

返回值

  配置、构建信息字符串 |

## ◆ operator()()

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>

std::size_t rm::hash_aggregate< Tp, Enable >::operator() | ( | const Tp & | r | ) | const
| inline

`#include <rmvl/core/util.hpp>`

函数调用图:

## ◆ processId()

uint32_t rm::processId | ( |  | ) |

`#include <rmvl/core/util.hpp>`

获取当前进程的 ID

## ◆ throwError()

void rm::throwError | ( | const Exception & | exc | ) |
| inline

`#include <rmvl/core/util.hpp>`

抛出异常