1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// csvfiles.h - CSV file parsing
//
//////////////////////////////////////////////////////////////////////////
#ifndef CSVFILES_H
#define CSVFILES_H
// 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 <wx/wx.h>
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
|