19 #ifndef PQXX_H_TABLEREADER
20 #define PQXX_H_TABLEREADER
21 #include "pqxx/compiler-public.hxx"
22 #include "pqxx/compiler-internal-pre.hxx"
23 #include "pqxx/result"
24 #include "pqxx/tablestream"
35 const PGSTD::string &Name,
36 const PGSTD::string &Null=PGSTD::string());
37 template<
typename ITER>
39 const PGSTD::string &Name,
43 const PGSTD::string &Name,
46 const PGSTD::string &Null);
48 template<
typename TUPLE>
tablereader &operator>>(TUPLE &);
49 operator bool()
const throw () {
return !m_Done; }
51 bool get_raw_line(PGSTD::string &Line);
52 template<
typename TUPLE>
53 void tokenize(PGSTD::string, TUPLE &)
const;
54 virtual void complete();
57 const PGSTD::string &RName,
58 const PGSTD::string &Columns=PGSTD::string());
59 void PQXX_PRIVATE reader_close();
60 PGSTD::string extract_field(
const PGSTD::string &,
61 PGSTD::string::size_type &)
const;
64 template<
typename ITER>
inline
66 const PGSTD::string &Name,
69 namedclass(Name,
"tablereader"),
73 setup(T, Name,
columnlist(begincolumns, endcolumns));
75 template<
typename ITER>
inline
77 const PGSTD::string &Name,
80 const PGSTD::string &Null) :
81 namedclass(Name,
"tablereader"),
85 setup(T, Name,
columnlist(begincolumns, endcolumns));
87 template<
typename TUPLE>
90 PGSTD::back_insert_iterator<TUPLE> ins = PGSTD::back_inserter(T);
91 PGSTD::string::size_type here=0;
92 while (here < Line.size()) *ins++ = extract_field(Line, here);
94 template<
typename TUPLE>
98 if (get_raw_line(Line)) tokenize(Line, T);
102 #include "pqxx/compiler-internal-post.hxx"