1
0
Fork 0
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:
bolero-MURAKAMI 2016-03-27 17:47:46 +09:00
parent 5bdb045730
commit 0f210dee5f
4 changed files with 190 additions and 34 deletions

View file

@ -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)) \

View file

@ -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>

View file

@ -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