mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
add csv-parser example
This commit is contained in:
parent
5bdb045730
commit
0f210dee5f
4 changed files with 190 additions and 34 deletions
|
@ -249,7 +249,7 @@ namespace sprout {
|
|||
return sprout::ascii::detail::get_value(c) & sprout::ascii::detail::lower ? c - (0x61 - 0x41) : c; \
|
||||
} \
|
||||
inline SPROUT_CONSTEXPR bool \
|
||||
SPROUT_PP_CAT(is, SPROUT_PP_CAT(PREFIX, classified))(sprout::ctypes::mask_t m, CHAR_TYPE c) { \
|
||||
SPROUT_PP_CAT(is, SPROUT_PP_CAT(PREFIX, classified))(sprout::ctypes::mask m, CHAR_TYPE c) { \
|
||||
return (m | sprout::ctypes::alnum && (sprout::ascii::detail::get_value(c) & (sprout::ascii::detail::alpha | sprout::ascii::detail::digit))) \
|
||||
|| (m | sprout::ctypes::alpha && (sprout::ascii::detail::get_value(c) & sprout::ascii::detail::alpha)) \
|
||||
|| (m | sprout::ctypes::blank && (sprout::ascii::detail::get_value(c) & sprout::ascii::detail::blank)) \
|
||||
|
|
|
@ -384,9 +384,9 @@ namespace sprout {
|
|||
typedef T argument_type;
|
||||
typedef bool result_type;
|
||||
private:
|
||||
sprout::ctypes::mask_t m_;
|
||||
sprout::ctypes::mask m_;
|
||||
public:
|
||||
explicit SPROUT_CONSTEXPR is_classified(sprout::ctypes::mask_t m)
|
||||
explicit SPROUT_CONSTEXPR is_classified(sprout::ctypes::mask m)
|
||||
: m_(m)
|
||||
{}
|
||||
SPROUT_CONSTEXPR bool
|
||||
|
@ -399,9 +399,9 @@ namespace sprout {
|
|||
public:
|
||||
typedef bool result_type;
|
||||
private:
|
||||
sprout::ctypes::mask_t m_;
|
||||
sprout::ctypes::mask m_;
|
||||
public:
|
||||
explicit SPROUT_CONSTEXPR is_classified(sprout::ctypes::mask_t m)
|
||||
explicit SPROUT_CONSTEXPR is_classified(sprout::ctypes::mask m)
|
||||
: m_(m)
|
||||
{}
|
||||
template<typename T>
|
||||
|
|
|
@ -10,40 +10,59 @@
|
|||
|
||||
#include <locale>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/detail/predef.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace ctypes {
|
||||
//
|
||||
// mask_t
|
||||
// mask
|
||||
//
|
||||
typedef std::ctype_base::mask mask_t;
|
||||
|
||||
//
|
||||
// space
|
||||
// print
|
||||
// cntrl
|
||||
// upper
|
||||
// lower
|
||||
// alpha
|
||||
// digit
|
||||
// punct
|
||||
// xdigit
|
||||
// blank
|
||||
// alnum
|
||||
// graph
|
||||
//
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t space = std::ctype_base::space;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t print = std::ctype_base::print;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t cntrl = std::ctype_base::cntrl;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t upper = std::ctype_base::upper;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t lower = std::ctype_base::lower;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t alpha = std::ctype_base::alpha;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t digit = std::ctype_base::digit;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t punct = std::ctype_base::punct;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t xdigit = std::ctype_base::xdigit;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t blank = /*std::ctype_base::blank*/1 << 9;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t alnum = std::ctype_base::alnum;
|
||||
SPROUT_STATIC_CONSTEXPR sprout::ctypes::mask_t graph = std::ctype_base::graph;
|
||||
enum mask {
|
||||
space = std::ctype_base::space,
|
||||
print = std::ctype_base::print,
|
||||
cntrl = std::ctype_base::cntrl,
|
||||
upper = std::ctype_base::upper,
|
||||
lower = std::ctype_base::lower,
|
||||
alpha = std::ctype_base::alpha,
|
||||
digit = std::ctype_base::digit,
|
||||
punct = std::ctype_base::punct,
|
||||
xdigit = std::ctype_base::xdigit,
|
||||
#if SPROUT_GCC_EARLIER(5, 0, 0)
|
||||
blank = 0x0001,
|
||||
#else // #if SPROUT_GCC_EARLIER(5, 0, 0)
|
||||
blank = std::ctype_base::blank,
|
||||
#endif // #if SPROUT_GCC_EARLIER(5, 0, 0)
|
||||
alnum = std::ctype_base::alnum,
|
||||
graph = std::ctype_base::graph
|
||||
};
|
||||
inline SPROUT_CONSTEXPR sprout::ctypes::mask
|
||||
operator&(sprout::ctypes::mask x, sprout::ctypes::mask y) {
|
||||
return sprout::ctypes::mask(static_cast<int>(x) & static_cast<int>(y));
|
||||
}
|
||||
inline SPROUT_CONSTEXPR sprout::ctypes::mask
|
||||
operator|(sprout::ctypes::mask x, sprout::ctypes::mask y) {
|
||||
return sprout::ctypes::mask(static_cast<int>(x) | static_cast<int>(y));
|
||||
}
|
||||
inline SPROUT_CONSTEXPR sprout::ctypes::mask
|
||||
operator^(sprout::ctypes::mask x, sprout::ctypes::mask y) {
|
||||
return sprout::ctypes::mask(static_cast<int>(x) ^ static_cast<int>(y));
|
||||
}
|
||||
inline SPROUT_CONSTEXPR sprout::ctypes::mask
|
||||
operator~(sprout::ctypes::mask x) {
|
||||
return sprout::ctypes::mask(~static_cast<int>(x));
|
||||
}
|
||||
inline SPROUT_CXX14_CONSTEXPR sprout::ctypes::mask&
|
||||
operator&=(sprout::ctypes::mask& x, sprout::ctypes::mask y) {
|
||||
return x = x & y;
|
||||
}
|
||||
inline SPROUT_CXX14_CONSTEXPR sprout::ctypes::mask&
|
||||
operator|=(sprout::ctypes::mask& x, sprout::ctypes::mask y) {
|
||||
return x = x | y;
|
||||
}
|
||||
inline SPROUT_CXX14_CONSTEXPR sprout::ctypes::mask&
|
||||
operator^=(sprout::ctypes::mask& x, sprout::ctypes::mask y) {
|
||||
return x = x ^ y;
|
||||
}
|
||||
} // namespace ctypes
|
||||
} // namespace sprout
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue