// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file tools.license for terms. #ifndef tools_wroot_member_writer #define tools_wroot_member_writer #include "../store/iobj_const_visitor" #include "buffer" namespace tools { namespace wroot { class member_writer : public virtual iobj_const_visitor { public: virtual bool begin(const istorable&,const std::string&,local_func) {return true;} virtual bool end(const istorable&){return true;} virtual bool visit(const std::string&,bool a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,char a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,short a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,int a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,unsigned int a_v) {return m_buf.write(a_v);} virtual bool visit(const std::string&,int64){ m_buf.out() << "tools::wroot::member_writer::visit(int64) :" << " dummy." << std::endl; return false; //FIXME } virtual bool visit(const std::string&,uint64){ m_buf.out() << "tools::wroot::member_writer::visit(uint64) :" << " dummy." << std::endl; return false; //FIXME } virtual bool visit(const std::string&,float a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,double a_v){return m_buf.write(a_v);} virtual bool visit(const std::string&,const std::string& a_v) {return m_buf.write(a_v);} //virtual bool visit(const std::string&,const char* a_v){ // return m_buf.write(std::string(a_v)); //} virtual bool visit(const std::string&,const std::vector& a_v){ size_t number = a_v.size(); std::vector data(number); for(size_t index=0;index(data); } virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} virtual bool visit(const std::string&,const std::vector& /*a_v*/){ //FIXME return ::Rio::writeArray(fBuffer,a_v); m_buf.out() << "tools::wroot::member_writer::visit(vector) :" << " dummy." << std::endl; return false; } virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} //virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write_array(a_v);} virtual bool visit(const std::string&,const std::vector& a_v) {return m_buf.write(a_v);} virtual bool visit(const std::string&,const std::vector< std::vector >& a_v){ return m_buf.write_array2(a_v); } virtual bool visit(const std::string&,const istorable& a_v){ // WARNING : can't be called in a object.visit() // over a a_v being a "super" of "object" . if(!a_v.visit(*this)) return false; return true; } public: member_writer(buffer& a_buf):m_buf(a_buf){} virtual ~member_writer(){} private: member_writer(const member_writer& a_from) :iobj_const_visitor(a_from) ,m_buf(a_from.m_buf) {} member_writer& operator=(const member_writer&){return *this;} protected: buffer& m_buf; }; }} #endif