From: myun2 Date: Mon, 11 Jun 2012 17:52:02 +0000 (+0900) Subject: lexical2/to_string.hpp 実装 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4431bae1a6498a3fc1b7dd61e1f8ca75caf8ce69;p=roast%2Froast.git lexical2/to_string.hpp 実装 --- diff --git a/roast/include/roast/lexical2/lexical.hpp b/roast/include/roast/lexical2/lexical.hpp index 0d0cf1af..c6ad6614 100644 --- a/roast/include/roast/lexical2/lexical.hpp +++ b/roast/include/roast/lexical2/lexical.hpp @@ -15,6 +15,7 @@ // Utilities #include "roast/lexical2/lexical2_util.hpp" +#include "roast/lexical2/to_string.hpp" diff --git a/roast/include/roast/lexical2/to_string.hpp b/roast/include/roast/lexical2/to_string.hpp index fb9c14c0..a93526d5 100644 --- a/roast/include/roast/lexical2/to_string.hpp +++ b/roast/include/roast/lexical2/to_string.hpp @@ -4,11 +4,10 @@ #ifndef __SFJP_ROAST__lexical2__to_string_HPP__ #define __SFJP_ROAST__lexical2__to_string_HPP__ -//#include // str_generate() -#include "roast/lexical/iterator_util.hpp" +#include "roast/lexical2/lexical2_util.hpp" +#include #include "roast/stream/string_stream.hpp" #include "roast/stream/console_stream.hpp" -//#include namespace roast { @@ -16,105 +15,40 @@ namespace roast { ////////////////////////////////////////////////////////////////////////////////// - template - bool str_analyze(const _It& it, _Param& param) + template + ::std::string& to_string(const Lexer &lexer, ::std::string& buffer, Param& param = EmptyType()) { - using namespace ::roast::lexical::rule; - typedef work_iterator > _StrRule; - return analyze<_StrRule>(it, param); - } - - template - bool str_parse(const _It& it, _Param& param){ return str_analyze<_Rule>(it, param); } - - ////////////////////////////////////////////////////////////////////////////////// - - template - ::std::string str_generate() - { - ::std::string s; - ::roast::string_output_stream ss(s); - rule::false_ret_to_exception<_Rule> r; - r.generate(ss, null_document); - return s; - } - template - ::std::string to_string(){ - return str_generate<_Rule, _Document>(); - } + ::roast::string_output_stream sos(buffer); - /// - template - ::std::string str_generate(_Document& doc) - { - ::std::string s; - ::roast::string_output_stream ss(s); - rule::false_ret_to_exception<_Rule> r; - r.generate(ss,doc); - return s; - } - template - ::std::string to_string(_Document& doc){ - return str_generate<_Rule>(doc); + //if ( r.generate(sos,doc) == false ) + lexer.generate(sos, param); + return buffer; } - ////////// - template - ::std::string to_string(_Rule& r, _Document& doc){ - ::std::string s; - ::roast::string_output_stream ss(s); - //if ( r.generate(ss,doc) == false ) - r.generate(ss,doc); - return s; - } - - template - ::std::string to_string(_Rule& r){ - return to_string(r, null_document); - } - - template - ::std::string to_string2(_Rule& r) + template + ::std::string to_string(const Lexer &lexer, Param& param = EmptyType()) { - - ::std::string s; - ::roast::string_output_stream ss(s); - //generate(ss,r); - - //if ( r.generate(ss,doc) == false ) - r.generate(ss,r); - return s; + ::std::string str; + return to_string(lexer, str, param); } ////////////////////////////////////////////////////////////////////////////////// - template - void print(_Rule& r, _Document& doc){ - //r.generate(::std::cout, doc); - r.generate(::roast::stream::cout, doc); - } - - template - void print(_Rule& r){ - //r.generate(::std::cout, doc); - r.generate(::roast::stream::cout, null_document); + template + void print(const Lexer &lexer, Param& param = EmptyType()) + { + lexer.generate(::roast::stream::cout, param); } - - template - void println(_Rule& r){ - //r.generate(::std::cout, doc); - r.generate(::roast::stream::cout, null_document); + + template + void println(const Lexer &lexer, Param& param = EmptyType()) + { + lexer.generate(::roast::stream::cout, param); ::roast::stream::cout << '\n'; } ////////////////////////////////////////////////////////////////////////////////// } - - template - ::std::string lex_to_string(_Rule& r) - { - return lexical::to_string2(r); - } } #endif//__SFJP_ROAST__lexical2__to_string_HPP__