RMVL  2.1.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
RMVL 核心模块
RMVL 核心模块 的协作图:

专题

 数据读写(I/O)
 
 串口通信模块
 基于 GNU C <termios.h> 的串行接口通信
 
 定时、计时模块
 

class  rm::Exception
 该类封装了有关程序中发生的错误的所有或几乎所有必要信息。异常通常是通过 RMVL_Error 和 RMVL_Error_ 宏隐式构造和抛出的 更多...
 
struct  rm::hash_aggregate< Tp, Enable >
 专为聚合类添加的 hash 生成可调用对象 更多...
 
struct  rm::hash_traits< Tp, Enable >
 哈希生成函数类型 traits 更多...
 
struct  rm::hash_traits< Tp, std::enable_if_t<!std::is_aggregate_v< Tp > > >
 非聚合类哈希生成函数类型 traits 更多...
 
struct  rm::hash_traits< Tp, std::enable_if_t< std::is_aggregate_v< Tp > > >
 聚合类哈希生成函数类型 traits 更多...
 

宏定义

#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 条件下或启用静态分析工具的情况下,在运行时检查条件,如果失败则抛出异常
 

枚举

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 ()
 返回完整的配置输出
 
template<typename Tp >
consteval std::size_t rm::reflect::size (auto &&...args)
 获取指定类型的成员个数
 
template<typename Tp , typename Callable >
void rm::reflect::for_each (Tp &&val, Callable &&f)
 遍历聚合类的每一个数据成员
 
template<typename Tp >
bool rm::reflect::equal (const Tp &lhs, const Tp &rhs)
 判断两个聚合类数据是否相同
 

详细描述

宏定义说明

◆ DEBUG_ERROR_

#define DEBUG_ERROR_ ( ...)

#include <rmvl/core/util.hpp>

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

◆ DEBUG_HIGHLIGHT_

#define DEBUG_HIGHLIGHT_ ( ...)

#include <rmvl/core/util.hpp>

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

◆ DEBUG_INFO_

#define DEBUG_INFO_ ( ...)

#include <rmvl/core/util.hpp>

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

◆ DEBUG_PASS_

#define DEBUG_PASS_ ( ...)

#include <rmvl/core/util.hpp>

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

◆ DEBUG_WARNING_

#define DEBUG_WARNING_ ( ...)

#include <rmvl/core/util.hpp>

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

◆ ERROR_

#define ERROR_ ( ...)

◆ 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__)
void error(int _code, std::string_view _err, const char *_func, const char *_file, int _line)
发出错误信号并引发异常
@ RMVL_StsAssert
断言失败 Assertion failed
定义 util.hpp:92
#define RMVL_Func
定义 rmvldef.hpp:30

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

注解
宏 RMVL_Assert (以及 RMVL_DbgAssert) 对指定的表达式求值。如果它是0,宏抛出一个错误。宏 RMVL_Assert 将会在 Debug 和 Release 的配置下检查条件,而 RMVL_DbgAssert 只会在 Debug 的配置下生效。
参见
RMVLErrorCode
示例
samples/tutorial_code/dataio/sample_write_corners.cpp.

◆ RMVL_DbgAssert

#define RMVL_DbgAssert ( expr)

#include <rmvl/core/util.hpp>

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

在 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__)
std::string format(const char *fmt,...)
返回使用类 printf 表达式格式化的文本字符串。

调用错误处理程序

注解
该宏可用于动态构造错误消息,以包含一些动态信息,例如
// 请注意格式化文本消息周围的额外括号
RMVL_Error_(RMVL_StsBadArg, "Bad channel of the input argument: \"input_image\", chn = %d", C);
#define RMVL_Error_(code, fmt,...)
调用错误处理程序
定义 util.hpp:222
@ RMVL_StsBadArg
参数异常 Bad argument
定义 util.hpp:85
参数
[in]code一种 RMVLErrorCode 错误码
[in]fmt格式化字符串
[in]...括号中带有类似 printf 格式的错误信息

◆ WARNING_

#define WARNING_ ( ...)

枚举类型说明

◆ 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>

触发非法内存操作

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

◆ equal()

template<typename Tp >
bool rm::reflect::equal ( const Tp & lhs,
const Tp & rhs )
inline

#include <rmvl/core/util.hpp>

判断两个聚合类数据是否相同

注解
成员个数不要超过 12
模板参数
Tp聚合类类型
参数
[in]lhs左操作数
[in]rhs右操作数
函数调用图:

◆ 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

◆ for_each()

template<typename Tp , typename Callable >
void rm::reflect::for_each ( Tp && val,
Callable && f )
inline

#include <rmvl/core/util.hpp>

遍历聚合类的每一个数据成员

注解
成员个数不要超过 12
模板参数
Tp聚合类类型
Callable可调用对象类型
参数
[in]val聚合类对象
[in]f可调用对象
函数调用图:

◆ format()

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

#include <rmvl/core/util.hpp>

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

注解
该函数的作用类似于 sprintf,但形成并返回一个 STL 字符串。它可用于在 Exception 构造函数中形成错误消息。
参数
[in]fmtprintf 兼容的格式化说明符。
类型 限定符
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 输出,包括版本控制系统修订,编译器版本,编译器标志,启用的模块和第三方库等。
返回值
配置、构建信息字符串

◆ size()

template<typename Tp >
std::size_t rm::reflect::size ( auto &&... args)
consteval

#include <rmvl/core/util.hpp>

获取指定类型的成员个数

注解
成员个数不要超过 12
模板参数
Tp聚合类类型
返回
成员个数
函数调用图:

◆ throwError()

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

#include <rmvl/core/util.hpp>

抛出异常