mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
fix string literal table implementations
This commit is contained in:
parent
ff3a85cf55
commit
06eaf3f0ec
10 changed files with 220 additions and 503 deletions
|
@ -15,58 +15,12 @@
|
|||
#include <sprout/tuple/tuple.hpp>
|
||||
#include <sprout/iterator/operation.hpp>
|
||||
#include <sprout/algorithm/find.hpp>
|
||||
#include <sprout/detail/literal_def.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace weed {
|
||||
namespace detail {
|
||||
template<typename Elem>
|
||||
struct bdigits;
|
||||
|
||||
template<>
|
||||
struct bdigits<char> {
|
||||
public:
|
||||
SPROUT_STATIC_CONSTEXPR sprout::basic_string<char, 2> table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(sprout::to_string("01"))
|
||||
;
|
||||
};
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::basic_string<char, 2> sprout::weed::detail::bdigits<char>::table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(sprout::to_string("01"))
|
||||
;
|
||||
|
||||
template<>
|
||||
struct bdigits<wchar_t> {
|
||||
public:
|
||||
SPROUT_STATIC_CONSTEXPR sprout::basic_string<wchar_t, 2> table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(sprout::to_string(L"01"))
|
||||
;
|
||||
};
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::basic_string<wchar_t, 2> sprout::weed::detail::bdigits<wchar_t>::table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(sprout::to_string(L"01"))
|
||||
;
|
||||
|
||||
#if SPROUT_USE_UNICODE_LITERALS
|
||||
template<>
|
||||
struct bdigits<char16_t> {
|
||||
public:
|
||||
SPROUT_STATIC_CONSTEXPR sprout::basic_string<char16_t, 2> table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(sprout::to_string(u"01"))
|
||||
;
|
||||
};
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::basic_string<char16_t, 2> sprout::weed::detail::bdigits<char16_t>::table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(sprout::to_string(u"01"))
|
||||
;
|
||||
|
||||
template<>
|
||||
struct bdigits<char32_t> {
|
||||
public:
|
||||
SPROUT_STATIC_CONSTEXPR sprout::basic_string<char32_t, 2> table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(sprout::to_string(U"01"))
|
||||
;
|
||||
};
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::basic_string<char32_t, 2> sprout::weed::detail::bdigits<char32_t>::table
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(sprout::to_string(U"01"))
|
||||
;
|
||||
#endif
|
||||
SPROUT_LITERAL_STRING_DEF(bdigits, "01", 2);
|
||||
|
||||
template<typename Dummy>
|
||||
struct bvalues;
|
||||
|
@ -77,14 +31,14 @@ namespace sprout {
|
|||
template<>
|
||||
struct bvalues<void> {
|
||||
public:
|
||||
typedef sprout::array<std::uint8_t, 2> table_type;
|
||||
typedef sprout::array<std::uint8_t, 2> value_type;
|
||||
public:
|
||||
SPROUT_STATIC_CONSTEXPR table_type table
|
||||
SPROUT_STATIC_CONSTEXPR value_type value
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(SPROUT_WEED_BDIGITS_TABLE_DEF)
|
||||
;
|
||||
};
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::weed::detail::bvalues<void>::table_type
|
||||
sprout::weed::detail::bvalues<void>::table
|
||||
SPROUT_CONSTEXPR_OR_CONST sprout::weed::detail::bvalues<void>::value_type
|
||||
sprout::weed::detail::bvalues<void>::value
|
||||
SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(SPROUT_WEED_BDIGITS_TABLE_DEF)
|
||||
;
|
||||
|
||||
|
@ -94,7 +48,7 @@ namespace sprout {
|
|||
inline SPROUT_CONSTEXPR sprout::tuples::tuple<IntType, bool> bvalue_at(std::size_t i) {
|
||||
return i < 2
|
||||
? sprout::tuples::tuple<IntType, bool>(
|
||||
static_cast<IntType>(sprout::weed::detail::bvalues<void>::table[i]),
|
||||
static_cast<IntType>(sprout::weed::detail::bvalues<void>::value[i]),
|
||||
true
|
||||
)
|
||||
: sprout::tuples::tuple<IntType, bool>(
|
||||
|
@ -107,10 +61,10 @@ namespace sprout {
|
|||
inline SPROUT_CONSTEXPR sprout::tuples::tuple<IntType, bool> from_bdigit(Elem c) {
|
||||
return sprout::weed::detail::bvalue_at<IntType>(
|
||||
sprout::distance(
|
||||
sprout::weed::detail::bdigits<Elem>::table.begin(),
|
||||
sprout::weed::detail::bdigits<Elem>::value.begin(),
|
||||
sprout::find(
|
||||
sprout::weed::detail::bdigits<Elem>::table.begin(),
|
||||
sprout::weed::detail::bdigits<Elem>::table.end(),
|
||||
sprout::weed::detail::bdigits<Elem>::value.begin(),
|
||||
sprout::weed::detail::bdigits<Elem>::value.end(),
|
||||
c
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue