Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
steve02081504 committed Oct 6, 2023
1 parent ecfddc0 commit 48ec116
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 18 deletions.
3 changes: 3 additions & 0 deletions parts/header_file/files/elc/_files/base_defs/array_like.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ namespace array_like_n{
if(pos>size())pos=size();
return this_t{_begin+pos,size()-pos};
}
[[nodiscard]]constexpr operator array_like_view_t<const T>()const noexcept{
return array_like_view_t<const T>{_begin,_size};
}
};
template<typename T>
struct array_end_by_zero_t:array_like_view_t<T>{
Expand Down
12 changes: 6 additions & 6 deletions parts/header_file/files/elc/_files/base_defs/constexpr_str.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,17 @@ using constexpr_str_n::operator ""_constexpr_str;
//重载range操作
namespace range_n{
template<typename T>
[[nodiscard]]constexpr T* in_range(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* in_range(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
return pattern.match_pattern.match(range);
}
template<typename T>
[[nodiscard]]constexpr T* in_range_but_reverse(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* in_range_but_reverse(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
return pattern.reverse_match_pattern.match(range);
}
//find_first_of
//若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
template<typename T>
[[nodiscard]]constexpr T* find_first_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* find_first_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
if(pattern.is_bitmark_workable)
return find_first_of_bitmark(pattern.bitmark_for_finds,range);
else
Expand All @@ -142,7 +142,7 @@ namespace range_n{
//find_last_of
//若成功找到匹配的数据项,返回其开头,若未找到,返回nullptr
template<typename T>
[[nodiscard]]constexpr T* find_last_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* find_last_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
if(pattern.is_bitmark_workable)
return find_last_of_bitmark(pattern.bitmark_for_finds,range);
else
Expand All @@ -151,7 +151,7 @@ namespace range_n{
//find_first_not_of
//若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
template<typename T>
[[nodiscard]]constexpr T* find_first_not_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* find_first_not_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
if(pattern.is_bitmark_workable)
return find_first_not_of_bitmark(pattern.bitmark_for_finds,range);
else
Expand All @@ -160,7 +160,7 @@ namespace range_n{
//find_last_not_of
//若成功找到不匹配的数据项,返回其开头,若未找到,返回nullptr
template<typename T>
[[nodiscard]]constexpr T* find_last_not_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* find_last_not_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
if(pattern.is_bitmark_workable)
return find_last_not_of_bitmark(pattern.bitmark_for_finds,range);
else
Expand Down
24 changes: 12 additions & 12 deletions parts/header_file/files/elc/_files/base_defs/string_view.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,65 +38,65 @@ using constexpr_str_n::constexpr_str_t;
//仅是声明以及size_t包装
namespace range_n{
template<typename T>
[[nodiscard]]constexpr T* in_range(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* in_range(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr size_t in_range_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr size_t in_range_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = in_range(pattern, range);
if(result)
return result - range.data();
else
return npos;
}
template<typename T>
[[nodiscard]]constexpr T* in_range_but_reverse(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* in_range_but_reverse(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr size_t in_range_but_reverse_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr size_t in_range_but_reverse_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = in_range_but_reverse(pattern, range);
if(result)
return result - range.data();
else
return npos;
}
template<typename T>
[[nodiscard]]constexpr T* find_first_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* find_first_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr size_t find_first_of_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr size_t find_first_of_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = find_first_of(pattern, range);
if(result)
return result - range.data();
else
return npos;
}
template<typename T>
[[nodiscard]]constexpr T* find_last_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* find_last_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr size_t find_last_of_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr size_t find_last_of_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = find_last_of(pattern, range);
if(result)
return result - range.data();
else
return npos;
}
template<typename T>
[[nodiscard]]constexpr T* find_first_not_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* find_first_not_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr size_t find_first_not_of_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr size_t find_first_not_of_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = find_first_not_of(pattern, range);
if(result)
return result - range.data();
else
return npos;
}
template<typename T>
[[nodiscard]]constexpr T* find_last_not_of(const constexpr_str_t<T>&pattern,array_like_view_t<T> range);
[[nodiscard]]constexpr T* find_last_not_of(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range);
//若成功找到不匹配的数据项,返回其距离开头的步数,若未找到,返回npos
template<typename T>
[[nodiscard]]constexpr T* find_last_not_of_size_t(const constexpr_str_t<T>&pattern,array_like_view_t<T> range){
[[nodiscard]]constexpr T* find_last_not_of_size_t(const constexpr_str_t<remove_cvref<T>>&pattern,array_like_view_t<T> range){
auto result = find_last_not_of(pattern,range);
if(result)
return result - range.begin();
Expand Down

0 comments on commit 48ec116

Please sign in to comment.