ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::base::range_n 命名空间参考

struct  bitmark_for_finds
 bitmark提供了一种快速进行四种泛搜索的实现,前提是构建中的pattern中的每一项的usigned表示都在一个字节(表长)内。 若bitmark构建失败,程序应当使用正在进行的泛搜索的朴素实现版本。 更多...
 
struct  bitmark_for_quick_unindex
 bitmark提供了一种快速进行反索引的实现,前提是构建中的pattern中的每一项的usigned表示都在一个字节(表长)内。 若bitmark构建失败,程序应当使用正在进行的反索引的朴素实现版本。 更多...
 
struct  match_pattern
 sunday算法表头,用以实施头起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存 更多...
 
struct  range_t
 用以表示某类型的数值范围,仅可表示闭区间 更多...
 
struct  reverse_match_pattern
 反向Sunday算法表头,用以实施尾起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存 更多...
 

函数

template<class T >
auto size_of_array_like (range_t< T * > &a) noexcept
 
template<class T >
auto size_of_array_like (range_t< const T * > &a) noexcept
 
template<class T >
auto begin_of_array_like (range_t< T * > &a) noexcept
 
template<class T >
auto begin_of_array_like (range_t< const T * > &a) noexcept
 
template<typename T >
constexpr bool in_range (T pattern, const range_t< T >range) noexcept(noexcept((bool((::std::declval< T >())>=(::std::declval< const T >()) &&(::std::declval< T >())<=(::std::declval< const T >())))))
 判断一个值是否在某个范围内
 
template<typename T >
constexpr bool in_range (T *pattern, const range_t< byte * >range) noexcept
 判断一个指针是否在某个byte指针范围内
 
template<typename T >
constexpr T * in_range (const remove_cvref< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_size_t (const remove_cvref< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * in_range_but_reverse (const remove_cvref< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_but_reverse_size_t (const remove_cvref< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * in_range (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据串,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据串,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * in_range_but_reverse (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据串,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_but_reverse_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据串,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * find_first_of_bitmark (const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
 find_first_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * base_find_first_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 find_first_of的朴素实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * find_first_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t find_first_of_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * find_last_of_bitmark (const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
 find_last_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * base_find_last_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 find_last_of的朴素实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * find_last_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t find_last_of_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * find_first_not_of_bitmark (const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
 find_first_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * base_find_first_not_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 find_first_not_of的朴素实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * find_first_not_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t find_first_not_of_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * find_last_not_of_bitmark (const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
 find_last_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * base_find_last_not_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 find_last_not_of的朴素实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr T * find_last_not_of (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t find_last_not_of_size_t (const array_like_view_t< T > &pattern, array_like_view_t< T > range)
 若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr T * in_range (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr size_t in_range_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * in_range_but_reverse (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr size_t in_range_but_reverse_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * find_first_of (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr size_t find_first_of_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * find_last_of (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr size_t find_last_of_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * find_first_not_of (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr size_t find_first_not_of_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * find_last_not_of (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr T * find_last_not_of_size_t (const constexpr_str_t< remove_cvref< T > > &pattern, array_like_view_t< T > range)
 
template<typename T >
constexpr const T * in_range (const remove_cvref< T > &pattern, const constexpr_str_t< T > &range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_size_t (const remove_cvref< T > &pattern, const constexpr_str_t< T > &range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 
template<typename T >
constexpr const T * in_range_but_reverse (const remove_cvref< T > &pattern, const constexpr_str_t< T > &range)
 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
 
template<typename T >
constexpr size_t in_range_but_reverse_size_t (const remove_cvref< T > &pattern, const constexpr_str_t< T > &range)
 若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
 

函数说明

◆ base_find_first_not_of()

template<typename T >
constexpr T * elc::defs::base::range_n::base_find_first_not_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

find_first_not_of的朴素实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11468 行定义.

11468 {
11469 for(auto&i : range){
11470 if(!in_range(i,pattern))
11471 return addressof(i);
11472 }
11473 return nullptr;
11474 }
constexpr bool in_range(T pattern, const range_t< T >range) noexcept(noexcept((bool((::std::declval< T >())>=(::std::declval< const T >()) &&(::std::declval< T >())<=(::std::declval< const T >())))))
判断一个值是否在某个范围内
函数调用图:
这是这个函数的调用关系图:

◆ base_find_first_of()

template<typename T >
constexpr T * elc::defs::base::range_n::base_find_first_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

find_first_of的朴素实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11389 行定义.

11389 {
11390 for(auto&i : range){
11391 if(in_range(i,pattern))
11392 return addressof(i);
11393 }
11394 return nullptr;
11395 }
函数调用图:
这是这个函数的调用关系图:

◆ base_find_last_not_of()

template<typename T >
constexpr T * elc::defs::base::range_n::base_find_last_not_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

find_last_not_of的朴素实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11508 行定义.

11508 {
11509 for(auto&i : range|::std::views::reverse){
11510 if(!in_range(i,pattern))
11511 return addressof(i);
11512 }
11513 return nullptr;
11514 }
函数调用图:
这是这个函数的调用关系图:

◆ base_find_last_of()

template<typename T >
constexpr T * elc::defs::base::range_n::base_find_last_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

find_last_of的朴素实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11428 行定义.

11428 {
11429 for(auto&i : range|::std::views::reverse){
11430 if(in_range(i,pattern))
11431 return addressof(i);
11432 }
11433 return nullptr;
11434 }
函数调用图:
这是这个函数的调用关系图:

◆ begin_of_array_like() [1/2]

template<class T >
auto elc::defs::base::range_n::begin_of_array_like ( range_t< const T * > &  a)
inlinenoexcept

在文件 all_defs.cpp11177 行定义.

11177{return a.begin();}
constexpr auto begin() noexcept

◆ begin_of_array_like() [2/2]

template<class T >
auto elc::defs::base::range_n::begin_of_array_like ( range_t< T * > &  a)
inlinenoexcept

在文件 all_defs.cpp11175 行定义.

11175{return a.begin();}

◆ find_first_not_of() [1/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_not_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11478 行定义.

11478 {
11479 if constexpr(basic_integer_type<T>){
11481 if(mark.mark(pattern))
11482 return find_first_not_of_bitmark(mark,range);
11483 }
11484 return base_find_first_not_of(pattern,range);
11485 }
constexpr T * find_first_not_of_bitmark(const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
find_first_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
bitmark提供了一种快速进行四种泛搜索的实现,前提是构建中的pattern中的每一项的usigned表示都在一个字节(表长)内。 若bitmark构建失败,程序应当使用正在进行的泛搜索的朴素实现版本...
constexpr bool mark(const array_like_view_t< T > &pattern) noexcept
函数调用图:
这是这个函数的调用关系图:

◆ find_first_not_of() [2/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_not_of ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12300 行定义.

12300 {
12301 if(pattern.is_bitmark_workable)
12302 return find_first_not_of_bitmark(pattern.bitmark_for_finds,range);
12303 else
12304 return find_first_not_of((const constexpr_str_view_t<T>&)pattern,range);
12305 }
constexpr T * find_first_not_of(const array_like_view_t< T > &pattern, array_like_view_t< T > range)
若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
range_n::bitmark_for_finds< const char_T > bitmark_for_finds
constexpr_str_t的退化类型,表明这是常量字符串,但没有可用的额外信息
函数调用图:

◆ find_first_not_of_bitmark()

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_not_of_bitmark ( const bitmark_for_finds< T > &  mark,
array_like_view_t< T >  range 
)
constexpr

find_first_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11458 行定义.

11458 {
11459 for(auto& i: range){
11460 if(!mark[i])
11461 return addressof(i);
11462 }
11463 return nullptr;
11464 }
函数调用图:
这是这个函数的调用关系图:

◆ find_first_not_of_size_t() [1/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_first_not_of_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11488 行定义.

11488 {
11489 auto result = find_first_not_of(pattern,range);
11490 if(result)
11491 return result - range.begin();
11492 else
11493 return npos;
11494 }
constexpr auto npos
函数调用图:
这是这个函数的调用关系图:

◆ find_first_not_of_size_t() [2/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_first_not_of_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11896 行定义.

11896 {
11897 auto result = find_first_not_of(pattern, range);
11898 if(result)
11899 return result - range.data();
11900 else
11901 return npos;
11902 }
constexpr const_iterator data() const noexcept
函数调用图:

◆ find_first_of() [1/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11399 行定义.

11399 {
11400 if constexpr(basic_integer_type<T>){
11402 if(mark.mark(pattern))
11403 return find_first_of_bitmark(mark,range);
11404 }
11405 return base_find_first_of(pattern,range);
11406 }
constexpr T * find_first_of_bitmark(const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
find_first_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:
这是这个函数的调用关系图:

◆ find_first_of() [2/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_of ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12282 行定义.

12282 {
12283 if(pattern.is_bitmark_workable)
12284 return find_first_of_bitmark(pattern.bitmark_for_finds,range);
12285 else
12286 return find_first_of((const constexpr_str_view_t<T>&)pattern,range);
12287 }
constexpr T * find_first_of(const array_like_view_t< T > &pattern, array_like_view_t< T > range)
若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:

◆ find_first_of_bitmark()

template<typename T >
constexpr T * elc::defs::base::range_n::find_first_of_bitmark ( const bitmark_for_finds< T > &  mark,
array_like_view_t< T >  range 
)
constexpr

find_first_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11379 行定义.

11379 {
11380 for(auto&i : range){
11381 if(mark[i])
11382 return addressof(i);
11383 }
11384 return nullptr;
11385 }
函数调用图:
这是这个函数的调用关系图:

◆ find_first_of_size_t() [1/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_first_of_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11409 行定义.

11409 {
11410 auto result = find_first_of(pattern,range);
11411 if(result)
11412 return result - range.begin();
11413 else
11414 return npos;
11415 }
函数调用图:
这是这个函数的调用关系图:

◆ find_first_of_size_t() [2/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_first_of_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11874 行定义.

11874 {
11875 auto result = find_first_of(pattern, range);
11876 if(result)
11877 return result - range.data();
11878 else
11879 return npos;
11880 }
函数调用图:

◆ find_last_not_of() [1/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_not_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11571 行定义.

11571 {
11572 if constexpr(basic_integer_type<T>){
11574 if(mark.mark(pattern))
11575 return find_last_not_of_bitmark(mark,range);
11576 }
11577 return base_find_last_not_of(pattern,range);
11578 }
constexpr T * find_last_not_of_bitmark(const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
find_last_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:
这是这个函数的调用关系图:

◆ find_last_not_of() [2/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_not_of ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12309 行定义.

12309 {
12310 if(pattern.is_bitmark_workable)
12311 return find_last_not_of_bitmark(pattern.bitmark_for_finds,range);
12312 else
12313 return find_last_not_of((const constexpr_str_view_t<T>&)pattern,range);
12314 }
constexpr T * find_last_not_of(const array_like_view_t< T > &pattern, array_like_view_t< T > range)
若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:

◆ find_last_not_of_bitmark()

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_not_of_bitmark ( const bitmark_for_finds< T > &  mark,
array_like_view_t< T >  range 
)
constexpr

find_last_not_of的bitmark实现 若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11498 行定义.

11498 {
11499 for(auto& i: range|::std::views::reverse){
11500 if(!mark[i])
11501 return addressof(i);
11502 }
11503 return nullptr;
11504 }
函数调用图:
这是这个函数的调用关系图:

◆ find_last_not_of_size_t() [1/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_last_not_of_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11581 行定义.

11581 {
11582 auto result = find_last_not_of(pattern,range);
11583 if(result)
11584 return result - range.begin();
11585 else
11586 return npos;
11587 }
函数调用图:
这是这个函数的调用关系图:

◆ find_last_not_of_size_t() [2/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_not_of_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11907 行定义.

11907 {
11908 auto result = find_last_not_of(pattern,range);
11909 if(result)
11910 return result - range.begin();
11911 else
11912 return npos;
11913 }
函数调用图:

◆ find_last_of() [1/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_of ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11438 行定义.

11438 {
11439 if constexpr(basic_integer_type<T>){
11441 if(mark.mark(pattern))
11442 return find_last_of_bitmark(mark,range);
11443 }
11444 return base_find_last_of(pattern,range);
11445 }
constexpr T * find_last_of_bitmark(const bitmark_for_finds< T > &mark, array_like_view_t< T > range)
find_last_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:
这是这个函数的调用关系图:

◆ find_last_of() [2/2]

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_of ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12291 行定义.

12291 {
12292 if(pattern.is_bitmark_workable)
12293 return find_last_of_bitmark(pattern.bitmark_for_finds,range);
12294 else
12295 return find_last_of((const constexpr_str_view_t<T>&)pattern,range);
12296 }
constexpr T * find_last_of(const array_like_view_t< T > &pattern, array_like_view_t< T > range)
若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:

◆ find_last_of_bitmark()

template<typename T >
constexpr T * elc::defs::base::range_n::find_last_of_bitmark ( const bitmark_for_finds< T > &  mark,
array_like_view_t< T >  range 
)
constexpr

find_last_of的bitmark实现 若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11419 行定义.

11419 {
11420 for(auto& i: range|::std::views::reverse){
11421 if(mark[i])
11422 return addressof(i);
11423 }
11424 }
函数调用图:
这是这个函数的调用关系图:

◆ find_last_of_size_t() [1/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_last_of_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11448 行定义.

11448 {
11449 auto result = find_last_of(pattern,range);
11450 if(result)
11451 return result - range.begin();
11452 else
11453 return npos;
11454 }
函数调用图:
这是这个函数的调用关系图:

◆ find_last_of_size_t() [2/2]

template<typename T >
constexpr size_t elc::defs::base::range_n::find_last_of_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11885 行定义.

11885 {
11886 auto result = find_last_of(pattern, range);
11887 if(result)
11888 return result - range.data();
11889 else
11890 return npos;
11891 }
函数调用图:

◆ in_range() [1/6]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据串,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11315 行定义.

11315 {
11316 match_pattern tmp=pattern;
11317 return tmp.match(range);
11318 }
sunday算法表头,用以实施头起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存
constexpr T * match(const array_like_view_t< T > &range) const noexcept
函数调用图:

◆ in_range() [2/6]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12272 行定义.

12272 {
12273 return pattern.match_pattern.match(range);
12274 }
range_n::match_pattern< const char_T > match_pattern
函数调用图:

◆ in_range() [3/6]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range ( const remove_cvref< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11278 行定义.

11278 {
11279 for(auto&i : range){
11280 if(i==pattern)
11281 return addressof(i);
11282 }
11283 return nullptr;
11284 }
函数调用图:

◆ in_range() [4/6]

template<typename T >
constexpr const T * elc::defs::base::range_n::in_range ( const remove_cvref< T > &  pattern,
const constexpr_str_t< T > &  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp12320 行定义.

12320 {
12322 auto result = range.bitmark_for_unindex[pattern];
12323 return result==npos?nullptr:range.begin()+result;
12324 }
12325 else
12326 return in_range(pattern,(const constexpr_str_view_t<T>&)range);
12327 }
range_n::bitmark_for_quick_unindex< const char_T > bitmark_for_unindex
函数调用图:

◆ in_range() [5/6]

template<typename T >
constexpr bool elc::defs::base::range_n::in_range ( T *  pattern,
const range_t< byte * >  range 
)
constexprnoexcept

判断一个指针是否在某个byte指针范围内

在文件 all_defs.cpp11188 行定义.

11188 {
11189 return cast_to_data(pattern)>=range.begin() && cast_to_data(pattern)<range.end();
11190 }
constexpr byte * cast_to_data(T *p) noexcept
constexpr auto end() noexcept
函数调用图:

◆ in_range() [6/6]

template<typename T >
constexpr bool elc::defs::base::range_n::in_range ( pattern,
const range_t< T >  range 
)
constexprnoexcept

判断一个值是否在某个范围内

在文件 all_defs.cpp11182 行定义.

11182 {//算术类型或指针
11183 return bool(pattern>=range.begin() && pattern<range.end());
11184 }
函数调用图:
这是这个函数的调用关系图:

◆ in_range_but_reverse() [1/4]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range_but_reverse ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据串,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11332 行定义.

11332 {
11333 reverse_match_pattern tmp = pattern;
11334 return tmp.match(range);
11335 }
反向Sunday算法表头,用以实施尾起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存
constexpr T * match(const array_like_view_t< T > &range) const noexcept
函数调用图:

◆ in_range_but_reverse() [2/4]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range_but_reverse ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp12276 行定义.

12276 {
12277 return pattern.reverse_match_pattern.match(range);
12278 }
range_n::reverse_match_pattern< const char_T > reverse_match_pattern
函数调用图:

◆ in_range_but_reverse() [3/4]

template<typename T >
constexpr T * elc::defs::base::range_n::in_range_but_reverse ( const remove_cvref< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp11296 行定义.

11296 {
11297 for(auto&i : range|::std::views::reverse){
11298 if(i==pattern)
11299 return addressof(i);
11300 }
11301 return nullptr;
11302 }
函数调用图:
这是这个函数的调用关系图:

◆ in_range_but_reverse() [4/4]

template<typename T >
constexpr const T * elc::defs::base::range_n::in_range_but_reverse ( const remove_cvref< T > &  pattern,
const constexpr_str_t< T > &  range 
)
constexpr

若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr

在文件 all_defs.cpp12338 行定义.

12338 {
12340 auto result = range.bitmark_for_unindex[pattern];
12341 return result==npos?nullptr:range.begin()+result;
12342 }
12343 else
12344 return in_range_but_reverse(pattern,(const constexpr_str_view_t<T>&)range);
12345 }
函数调用图:

◆ in_range_but_reverse_size_t() [1/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_but_reverse_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据串,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11338 行定义.

11338 {
11339 auto result = in_range_but_reverse(pattern,range);
11340 if(result)
11341 return result - range.begin();
11342 else
11343 return npos;
11344 }
constexpr T * in_range_but_reverse(const remove_cvref< T > &pattern, array_like_view_t< T > range)
若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
函数调用图:

◆ in_range_but_reverse_size_t() [2/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_but_reverse_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11863 行定义.

11863 {
11864 auto result = in_range_but_reverse(pattern, range);
11865 if(result)
11866 return result - range.data();
11867 else
11868 return npos;
11869 }
函数调用图:

◆ in_range_but_reverse_size_t() [3/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_but_reverse_size_t ( const remove_cvref< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11305 行定义.

11305 {
11306 auto result = in_range_but_reverse(pattern,range);
11307 if(result)
11308 return result - range.begin();
11309 else
11310 return npos;
11311 }
函数调用图:
这是这个函数的调用关系图:

◆ in_range_but_reverse_size_t() [4/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_but_reverse_size_t ( const remove_cvref< T > &  pattern,
const constexpr_str_t< T > &  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp12348 行定义.

12348 {
12350 return range.bitmark_for_unindex[pattern];
12351 else
12352 return in_range_but_reverse_size_t(pattern,(const constexpr_str_view_t<T>&)range);
12353 }
constexpr size_t in_range_but_reverse_size_t(const remove_cvref< T > &pattern, array_like_view_t< T > range)
若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
函数调用图:

◆ in_range_size_t() [1/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_size_t ( const array_like_view_t< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据串,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11321 行定义.

11321 {
11322 auto result = in_range(pattern,range);
11323 if(result)
11324 return result - range.begin();
11325 else
11326 return npos;
11327 }
函数调用图:

◆ in_range_size_t() [2/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_size_t ( const constexpr_str_t< remove_cvref< T > > &  pattern,
array_like_view_t< T >  range 
)
constexpr

在文件 all_defs.cpp11852 行定义.

11852 {
11853 auto result = in_range(pattern, range);
11854 if(result)
11855 return result - range.data();
11856 else
11857 return npos;
11858 }
函数调用图:

◆ in_range_size_t() [3/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_size_t ( const remove_cvref< T > &  pattern,
array_like_view_t< T >  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp11287 行定义.

11287 {
11288 auto result = in_range(pattern,range);
11289 if(result)
11290 return result - range.begin();
11291 else
11292 return npos;
11293 }
函数调用图:
这是这个函数的调用关系图:

◆ in_range_size_t() [4/4]

template<typename T >
constexpr size_t elc::defs::base::range_n::in_range_size_t ( const remove_cvref< T > &  pattern,
const constexpr_str_t< T > &  range 
)
constexpr

若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos

在文件 all_defs.cpp12330 行定义.

12330 {
12332 return range.bitmark_for_unindex[pattern];
12333 else
12334 return in_range_size_t(pattern,(const constexpr_str_view_t<T>&)range);
12335 }
constexpr size_t in_range_size_t(const remove_cvref< T > &pattern, array_like_view_t< T > range)
若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
函数调用图:

◆ size_of_array_like() [1/2]

template<class T >
auto elc::defs::base::range_n::size_of_array_like ( range_t< const T * > &  a)
inlinenoexcept

在文件 all_defs.cpp11172 行定义.

11172{return a.size();}
constexpr size_t size() noexcept

◆ size_of_array_like() [2/2]

template<class T >
auto elc::defs::base::range_n::size_of_array_like ( range_t< T * > &  a)
inlinenoexcept

在文件 all_defs.cpp11170 行定义.

11170{return a.size();}