From: myun2 Date: Fri, 22 Jun 2012 02:41:59 +0000 (+0900) Subject: lexical2/variable.hpp: variable_ptr を variable_dlen としてみた。実装的には、こうかな…? X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=bbe9cbb8d2574ef69905bf395c7a92ed206295b0;p=roast%2Froast.git lexical2/variable.hpp: variable_ptr を variable_dlen としてみた。実装的には、こうかな…? --- diff --git a/roast/include/roast/lexical2/variable.hpp b/roast/include/roast/lexical2/variable.hpp index abe8fd8d..b1dbf194 100644 --- a/roast/include/roast/lexical2/variable.hpp +++ b/roast/include/roast/lexical2/variable.hpp @@ -50,23 +50,24 @@ namespace roast //////////////////////////////////////////////////////////////////// template - class variable_ptr + class variable_dlen { - private: - const unsigned int length; - const T* data; - public: - variable_ptr(const T* ptr, unsigned int size=0) : data(ptr), length(size){} + protected: + // !! Require Implement There Methods in Sub Class !!! + virtual T* get_data() =0{} + virtual const T* get_data() const =0{} + virtual unsigned int get_length() const =0{} + virtual bool push_data(const T& data) =0{} + public: ///////////////// template bool parse(InputIterator& it, const _Param& param) const { - const T* p = data; for(unsigned int i=length; i!=0; i--, p++, it++) { - if ( *it != data ) + if ( push_data(*it) == false ) return false; } return true; @@ -77,7 +78,7 @@ namespace roast template void generate(OutputStream& os, const _Document& doc) const { - os.write(data, length); + os.write(get_data(), get_length()); /* const T* p = data;