#ifndef CSVFILES_H #define CSVFILES_H ////////////////////////////////////////////////////////////////////////// // // pgAdmin III - PostgreSQL Tools // RCS-ID: $Id: $ // Copyright (C) 2002 - 2009, The pgAdmin Development Team // This software is released under the BSD Licence // // csvfiles.h - CSV file parsing // ////////////////////////////////////////////////////////////////////////// // PostgreSQL and GPDB now support CSV format logs. // So, we need a way to parse the CSV files into lines, and lines into tokens (fields). #include class CSVTokenizer : public wxObject { public: CSVTokenizer(const wxString& str): m_string(str), m_pos(0) { } bool HasMoreTokens() const; // Get the next token (CSV field). Will return empty string if !HasMoreTokens() wxString GetNextToken(); protected: const wxString m_string; // the string we tokenize into fields size_t m_pos; // the current position in m_string }; class CSVLineTokenizer : public wxObject { public: CSVLineTokenizer(const wxString& str): m_string(str), m_pos(0) { } bool HasMoreLines() const; // Get the next line. Will return empty string if !HasMoreLines(). // partial is set "true" if the last line returned was not a complete // line (no newline char at end). wxString GetNextLine(bool & partial); protected: const wxString m_string; // the string we tokenize into lines size_t m_pos; // the current position in m_string }; #endif