20 typedef std::vector< tom::String> token_vector;
21 typedef token_vector::const_iterator const_iterator;
22 typedef token_vector::iterator iterator;
24 typedef boost::tokenizer< boost::escaped_list_separator<char> > escaped_list_tokenizer;
25 typedef boost::tokenizer< boost::char_separator<char> > char_tokenizer;
26 typedef boost::tokenizer< boost::offset_separator > offset_tokenizer;
28 csv_stream_parser( std::istream & ,
char delim =
',',
char escape =
'\\',
char quote =
'\"');
32 void init(
char delim);
33 void init(
const std::vector<int> &offsets);
39 eof()
const {
return m_stream.eof(); }
42 good()
const {
return m_stream.good(); }
44 virtual const_iterator
45 begin()
const {
return m_tokens.begin(); }
48 begin() {
return m_tokens.begin(); }
50 virtual const_iterator
51 end()
const {
return m_tokens.end(); }
54 end() {
return m_tokens.end(); }
57 size() {
return m_tokens.size(); }
66 token_vector m_tokens;
67 std::istream &m_stream;
68 boost::escaped_list_separator<char> m_escapedListSeparator;
69 boost::offset_separator m_OffsetSeparator;
78 trimToken( std::string &s );
81 reset() { m_tokens.clear(); m_line.clear(); }
89 whitespace() : m_stop(
false) {}
90 bool operator()(
const char & val )
92 if ( m_stop )
return false;
93 if ( std::isspace( val ) != 0 )
101 void reset() { m_stop =
false; }
107 initialized()
const {
return m_Initialized; }