20 #include "classdesc.h" 32 dump_t(): std::ostream(std::cout.rdbuf()) {}
33 dump_t(std::ostream& o): std::ostream(o.rdbuf()) {}
37 template <
class T>
void dump(
dump_t& o,
const string& d,
const T& a);
40 template <
class T>
void dump(std::ostream& o,
const string& d,
const T& a)
43 inline int format(std::ostream& o,
const string& d)
45 const char* tail=d.c_str();
47 for (
const char* c=tail; *c!=
'\0'; c++)
60 void dump_basic(
dump_t& o,
const string& d, T& a)
68 dumpp(
dump_t& o,
const string& d, B& a) {dump_basic(o,d,a);}
70 inline void dumpp(
dump_t& o,
const string& d,
const char *& a) {dump_basic(o,d,a);}
72 void dumpp(
dump_t& o,
const string& d, std::basic_string<W>& a)
76 template <
class A,
class B>
79 {o <<
"["<< a.first<<
"]="<<a.second;}
81 template <
class A,
class B>
85 o <<
"["<< a.first<<
"]=";
89 template <
class A,
class B>
93 dump(o,
string(
"[.")+d+
"]=",a.first);
99 typename std::iterator_traits<I>::value_type>,
101 dump_container(
dump_t& o,
const string& d, I begin,
104 int tab = format(o,d);
105 for (; begin!=end; begin++)
106 o << std::setw(tab) <<
"" << *begin;
112 typename std::iterator_traits<I>::value_type> >,
114 dump_container(
dump_t& o,
const string& d, I begin,
117 int tab = format(o,d);
119 for (
size_t i=0; begin!=end; i++,begin++)
121 o<<std::setw(tab+2)<<
"{"<<std::endl;
122 std::ostringstream
idx;
124 dump(o,d+
"["+idx.str().c_str()+
"]",*begin);
125 o<<std::setw(tab+2)<<
"}"<<std::endl;
132 {dump_container(o,d,a.begin(),a.end());}
135 template <
class C,
class M>
141 {dump_basic(o,d,arg);}
146 int dims,
size_t ncopies, ...)
149 va_start(ap,ncopies);
150 for (
int i=1; i<dims; i++) ncopies*=va_arg(ap,
int);
152 if (ncopies) dump_container(o,d,&arg, &arg+ncopies);
160 template <
class T,
class U>
168 void dump(
dump_t& o,
const string& d, shared_ptr<T>& a)
173 dump(o,d,
string(
"null"));
184 using classdesc::dumpp;
190 void dump_onbase(dump_t& x,
const string& d,T& a)
193 using classdesc::dump_onbase;
Definition: classdesc.h:326
Definition: classdesc.h:623
Definition: dump_base.h:180
Definition: classdesc.h:626
void dump(dump_t &o, const string &d, const T &a)
forward declare generic dump operation
Definition: dump_epilogue.h:55
Definition: classdesc.h:588
Definition: dump_base.h:29
std::string idx(const std::string &prefix, size_t i)
utility for generating index keys (for use with arrays)
Definition: xml_common.h:14
Contains definitions related to classdesc functionality.
Definition: arrays.h:2514
controlled template specialisation: stolen from boost::enable_if.
Definition: classdesc.h:249
Definition: classdesc.h:266
Contains access_* structs, and nothing else. These structs are used to gain access to private members...
Definition: accessor.h:55
Definition: classdesc.h:704