ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::detail Namespace Reference

详细实现命名空间。 More...

Typedefs

template<typename T>
using remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>
 移除cv限定符和引用的类型特征。

Functions

constexpr std::string_view ext_type (std::string_view asign, std::size_t aprefix, std::size_t asize, std::size_t aend=g_tn_npos) noexcept
 提取类型名称的辅助函数。
constexpr std::size_t find_tend (std::string_view asign, std::size_t abeg, std::string_view asuf) noexcept
 查找类型名称结束位置的辅助函数。
constexpr std::size_t find_tend (std::string_view asign, std::size_t abeg, char asuf) noexcept
 查找类型名称结束位置的辅助函数(单字符版本)。
constexpr std::size_t find_tend (std::string_view asign, std::size_t abeg, char asuf1, char asuf2) noexcept
 查找类型名称结束位置的辅助函数(双字符版本)。
template<typename T>
constexpr std::string_view comp_type () noexcept
 获取编译期类型名称。
template<typename T>
std::string_view to_sv (const T &avalue)
 将任意类型转换为字符串视图。
char first_non_space (std::string_view avalue)
 查找字符串中第一个非空白字符。
bool is_url_safe (unsigned char achar)
 判断字符是否为URL安全字符。
int hex_value (char achar)
 获取十六进制字符的数值。
bool keep_pct (unsigned char ahex)
 判断百分号编码字符是否需要保留。
bool parse_ip4 (std::string_view aip, std::array< int, 4 > &aoct)
 解析IPv4地址字符串。

Variables

constexpr std::string_view g_hex_tab = "0123456789ABCDEF"
 十六进制字符表
constexpr std::size_t g_tn_npos = std::string_view::npos
 无效位置常量
template<typename T>
constexpr bool is_char_ptr_v
 判断类型是否为字符指针。
template<typename T>
constexpr bool is_char_arr_v
 判断类型是否为字符数组。
template<typename T>
constexpr bool is_str_v
 判断类型是否为字符串类型。

Detailed Description

详细实现命名空间。

包含工具库的内部实现细节,不建议直接使用。

Typedef Documentation

◆ remove_cvref_t

template<typename T>
using ngl::detail::remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>

移除cv限定符和引用的类型特征。

Template Parameters
T要处理的类型

Function Documentation

◆ comp_type()

template<typename T>
std::string_view ngl::detail::comp_type ( )
constexprnoexcept

获取编译期类型名称。

利用编译器特定的宏获取类型的编译期名称。

Template Parameters
T要获取名称的类型
Returns
类型的编译期名称字符串视图

◆ ext_type()

std::string_view ngl::detail::ext_type ( std::string_view asign,
std::size_t aprefix,
std::size_t asize,
std::size_t aend = g_tn_npos )
constexprnoexcept

提取类型名称的辅助函数。

从编译器生成的函数签名中提取类型名称。

Parameters
asign编译器函数签名字符串
aprefix前缀位置
asize前缀大小
aend结束位置,默认为npos
Returns
提取的类型名称字符串视图

◆ find_tend() [1/3]

std::size_t ngl::detail::find_tend ( std::string_view asign,
std::size_t abeg,
char asuf )
constexprnoexcept

查找类型名称结束位置的辅助函数(单字符版本)。

Parameters
asign编译器函数签名字符串
abeg开始搜索位置
asuf后缀字符
Returns
找到的位置,未找到返回npos

◆ find_tend() [2/3]

std::size_t ngl::detail::find_tend ( std::string_view asign,
std::size_t abeg,
char asuf1,
char asuf2 )
constexprnoexcept

查找类型名称结束位置的辅助函数(双字符版本)。

Parameters
asign编译器函数签名字符串
abeg开始搜索位置
asuf1第一个后缀字符
asuf2第二个后缀字符
Returns
找到的位置,未找到返回npos

◆ find_tend() [3/3]

std::size_t ngl::detail::find_tend ( std::string_view asign,
std::size_t abeg,
std::string_view asuf )
constexprnoexcept

查找类型名称结束位置的辅助函数。

Parameters
asign编译器函数签名字符串
abeg开始搜索位置
asuf后缀字符串
Returns
找到的位置,未找到返回npos

◆ first_non_space()

char ngl::detail::first_non_space ( std::string_view avalue)
inline

查找字符串中第一个非空白字符。

Parameters
avalue要搜索的字符串
Returns
第一个非空白字符,如果全是空白返回'\0'

◆ hex_value()

int ngl::detail::hex_value ( char achar)
inline

获取十六进制字符的数值。

Parameters
achar十六进制字符
Returns
数值,无效字符返回-1

◆ is_url_safe()

bool ngl::detail::is_url_safe ( unsigned char achar)
inline

判断字符是否为URL安全字符。

Parameters
achar要检查的字符
Returns
是URL安全字符返回true,否则返回false

◆ keep_pct()

bool ngl::detail::keep_pct ( unsigned char ahex)
inline

判断百分号编码字符是否需要保留。

Parameters
ahex十六进制字符
Returns
需要保留返回true,否则返回false

◆ parse_ip4()

bool ngl::detail::parse_ip4 ( std::string_view aip,
std::array< int, 4 > & aoct )
inline

解析IPv4地址字符串。

Parameters
aipIPv4地址字符串
aoct输出参数,存储四个八位字节
Returns
解析成功返回true,否则返回false

◆ to_sv()

template<typename T>
std::string_view ngl::detail::to_sv ( const T & avalue)

将任意类型转换为字符串视图。

Template Parameters
T要转换的类型
Parameters
avalue要转换的值
Returns
字符串视图

Variable Documentation

◆ is_char_arr_v

template<typename T>
bool ngl::detail::is_char_arr_v
inlineconstexpr
Initial value:
=
std::is_array_v<remove_cvref_t<T>> &&
std::is_same_v<std::remove_cv_t<std::remove_extent_t<remove_cvref_t<T>>>, char>

判断类型是否为字符数组。

Template Parameters
T要检查的类型

◆ is_char_ptr_v

template<typename T>
bool ngl::detail::is_char_ptr_v
inlineconstexpr
Initial value:
=
std::is_pointer_v<remove_cvref_t<T>> &&
std::is_same_v<std::remove_cv_t<std::remove_pointer_t<remove_cvref_t<T>>>, char>

判断类型是否为字符指针。

Template Parameters
T要检查的类型

◆ is_str_v

template<typename T>
bool ngl::detail::is_str_v
inlineconstexpr
Initial value:
=
std::is_same_v<remove_cvref_t<T>, std::string> ||
std::is_same_v<remove_cvref_t<T>, std::string_view> ||

判断类型是否为字符串类型。

Template Parameters
T要检查的类型