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"