mirror of https://github.com/orefkov/simstr.git
Fix converations.
This commit is contained in:
parent
6905c9bb76
commit
fa55aa5f46
|
|
@ -690,7 +690,8 @@ public:
|
|||
* @en @brief Convert to std::string_view.
|
||||
* @return std::string_view.
|
||||
*/
|
||||
std::string_view to_sv() const noexcept {
|
||||
template<typename=int> requires is_one_of_std_char_v<K>
|
||||
std::basic_string_view<K> to_sv() const noexcept {
|
||||
return {_str(), _len()};
|
||||
}
|
||||
/*!
|
||||
|
|
@ -699,7 +700,8 @@ public:
|
|||
* @en @brief Convert to std::string.
|
||||
* @return std::string.
|
||||
*/
|
||||
std::string to_string() const noexcept {
|
||||
template<typename=int> requires is_one_of_std_char_v<K>
|
||||
std::basic_string<K> to_string() const noexcept {
|
||||
return {_str(), _len()};
|
||||
}
|
||||
/*!
|
||||
|
|
@ -5682,22 +5684,32 @@ consteval simple_str_nt<K> select_str(simple_str_nt<u8s> s8, simple_str_nt<uws>
|
|||
|
||||
#define uni_string(K, p) select_str<K>(p, L##p, u##p, U##p)
|
||||
|
||||
template<typename K> requires (is_one_of_std_char_v<K>)
|
||||
template<typename K>
|
||||
struct expr_real {
|
||||
using symb_type = K;
|
||||
mutable K buf[40];
|
||||
mutable std::conditional_t<is_one_of_std_char_v<K>, K, u8s> buf[40];
|
||||
mutable size_t l;
|
||||
double v;
|
||||
expr_real(double d) : v(d) {}
|
||||
expr_real(float d) : v(d) {}
|
||||
|
||||
size_t length() const noexcept {
|
||||
printf_selector::snprintf(buf, 40, uni_string(K, "%.16g").str, v);
|
||||
l = (size_t)ch_traits<K>::length(buf);
|
||||
if constexpr (is_one_of_std_char_v<K>) {
|
||||
printf_selector::snprintf(buf, 40, uni_string(K, "%.16g").str, v);
|
||||
l = (size_t)ch_traits<K>::length(buf);
|
||||
} else {
|
||||
l = std::snprintf(buf, sizeof(buf), "%.16g", v);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
K* place(K* ptr) const noexcept {
|
||||
ch_traits<K>::copy(ptr, buf, l);
|
||||
if constexpr (is_one_of_std_char_v<K>) {
|
||||
ch_traits<K>::copy(ptr, buf, l);
|
||||
} else {
|
||||
for (size_t i = 0; i < l; i++) {
|
||||
ptr[i] = buf[i];
|
||||
}
|
||||
}
|
||||
return ptr + l;
|
||||
}
|
||||
};
|
||||
|
|
@ -5714,7 +5726,7 @@ struct expr_real {
|
|||
* @details The number is converted to a string representation via sprintf("%.16g").
|
||||
*/
|
||||
template<StrExpr A, typename R>
|
||||
requires(is_one_of_std_char_v<typename A::symb_type> && (std::is_same_v<R, double> || std::is_same_v<R, float>))
|
||||
requires(std::is_same_v<R, double> || std::is_same_v<R, float>)
|
||||
inline constexpr auto operator+(const A& a, R s) {
|
||||
return strexprjoin_c<A, expr_real<typename A::symb_type>>{a, s};
|
||||
}
|
||||
|
|
@ -6818,15 +6830,6 @@ public:
|
|||
return erase(toStoreType(key));
|
||||
}
|
||||
|
||||
bool lookup(const K* txt, T& val) const {
|
||||
auto it = find(e_s(txt));
|
||||
if (it != hash_t::end()) {
|
||||
val = it->second;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool lookup(simple_str<K> txt, T& val) const {
|
||||
auto it = find(txt);
|
||||
if (it != hash_t::end()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue