////////////////////////////////////////////////////////////////////
template <typename T>
- 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 <typename InputIterator, typename _Param>
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;
template <typename OutputStream, typename _Document>
void generate(OutputStream& os, const _Document& doc) const
{
- os.write(data, length);
+ os.write(get_data(), get_length());
/*
const T* p = data;