From e3511d71b091f93d692e7b8bfa3948fc94b4bf3e Mon Sep 17 00:00:00 2001 From: bolero-MURAKAMI Date: Mon, 23 Jul 2012 20:39:03 +0900 Subject: [PATCH] add weed::parse_range --- README | 6 +++--- sprout/weed/parse.hpp | 27 ++++++++++++++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/README b/README index fc246065..be835ba1 100644 --- a/README +++ b/README @@ -31,11 +31,11 @@ Sprout C++ Library Wiki: http://www.boleros.x0.com/doc/sproutwiki/ -- sprout/bitset.hpp - std::bitset 互換のビットセット - アルゴリズム (Algorithms) --- sprout/algorithm.hpp - STL 互換の非変更アルゴリズムと、変更アルゴリズム +-- sprout/algorithm.hpp - STL 互換のアルゴリズム -- sprout/algorithm/string.hpp - 文字列用アルゴリズム --- sprout/numeric.hpp - STL 互換の非変更数値アルゴリズムと、変更数値アルゴリズム +-- sprout/numeric.hpp - STL 互換の数値シーケンスアルゴリズム -- sprout/range/algorithm.hpp - Rangeベースのアルゴリズム --- sprout/range/numeric.hpp - Rangeベースの数値アルゴリズム +-- sprout/range/numeric.hpp - Rangeベースの数値シーケンスアルゴリズム -- sprout/range/adaptor.hpp - Rangeアダプタ -- sprout/numeric/dft.hpp - 離散フーリエ変換 -- sprout/range/numeric/dft.hpp - Rangeベースの離散フーリエ変換 diff --git a/sprout/weed/parse.hpp b/sprout/weed/parse.hpp index 0bcee024..73b3703d 100644 --- a/sprout/weed/parse.hpp +++ b/sprout/weed/parse.hpp @@ -2,6 +2,8 @@ #define SPROUT_WEED_PARSE_HPP #include +#include +#include #include #include #include @@ -12,20 +14,31 @@ namespace sprout { // parse // template - inline SPROUT_CONSTEXPR typename sprout::weed::parse_context::template eval< + inline SPROUT_CONSTEXPR typename sprout::weed::parse_context< + Iterator + >::template eval< typename sprout::weed::traits::terminal_or_expr_of::type - >::result_type::presult_type parse( - Iterator first, - Iterator last, - Parser const& parser - ) - { + >::result_type::presult_type + parse(Iterator first, Iterator last, Parser const& parser) { return sprout::weed::eval( sprout::weed::make_terminal_or_expr(parser), sprout::weed::parse_context(first, last) ).presult() ; } + + // + // parse_range + // + template + inline SPROUT_CONSTEXPR typename sprout::weed::parse_context< + typename sprout::container_traits::const_iterator + >::template eval< + typename sprout::weed::traits::terminal_or_expr_of::type + >::result_type::presult_type + parse_range(Range const& range, Parser const& parser) { + return sprout::weed::parse(sprout::begin(range), sprout::end(range), parser); + } } // namespace weed } // namespace sprout