13#include <tnt/tnt_array1d.h> 
   68  template <
typename TokenStore = QString>
 
   92      CSVParser(
const QString &str, 
const char &delimiter = 
',',
 
   93                bool keepEmptyParts = 
true) {
 
   94        parse(str, delimiter, keepEmptyParts);
 
 
  102        return (_elements.dim());
 
 
  117        return (_elements[nth]);
 
 
  137      int parse(
const QString &str, 
const char &delimiter = 
',',
 
  138                bool keepEmptyParts = 
true) {
 
  140            str.split(delimiter, keepEmptyParts? QString::KeepEmptyParts : QString::SkipEmptyParts);
 
  142        for(
int i = 0 ; i < tokens.size() ; i++) {
 
  146        return (_elements.dim());
 
 
 
  242      typedef CSVParser<QString> 
Parser;    
 
  260      CSVReader(
const QString &csvfile, 
bool header = 
false, 
int skip = 0,
 
  262                const bool ignoreComments = 
true);
 
  272        return (_lines.size());
 
 
  286        int nrows(_lines.size() - firstRowIndex());
 
  287        return ((nrows < 0) ? 0 : nrows);
 
 
  314        _ignoreComments = ignore;
 
 
  336        if(nskip >= 0) _skip = nskip;
 
 
  401        _delimiter = delimiter;
 
 
  449      void read(
const QString &fname);
 
  460      template <
typename T> TNT::Array1D<T> 
convert(
const CSVAxis &data) 
const;
 
  473      typedef std::vector<QString> CSVList; 
 
  479      bool          _ignoreComments; 
 
  490      int firstRowIndex()
 const {
 
  491        return (_skip + ((_header) ? 1 : 0));
 
  494      std::istream &load(std::istream &ifile);
 
 
  531  template <
typename T>
 
  533    TNT::Array1D<T> out(data.dim());
 
  534    for(
int i = 0 ; i < data.dim() ; i++) {
 
 
CSV Parser seperates fields (tokens) from a string with a delimeter.
Definition CSVReader.h:69
 
TokenList result() const
Returns the list of tokens.
Definition CSVReader.h:156
 
TokenStore TokenType
Token storage type.
Definition CSVReader.h:71
 
int parse(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Parser method accepting string, delimiter and multiple token handling.
Definition CSVReader.h:137
 
const TokenType & operator()(const int nth) const
Returns the nth token in the parsed string.
Definition CSVReader.h:116
 
CSVParser(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Constructor that parses strings according to given parameters.
Definition CSVReader.h:92
 
virtual ~CSVParser()
Destructor.
Definition CSVReader.h:77
 
CSVParser()
Default constructor
Definition CSVReader.h:75
 
TNT::Array1D< TokenType > TokenList
List of tokens.
Definition CSVReader.h:72
 
int size() const
Returns the number of tokens in the parsed string.
Definition CSVReader.h:101
 
Reads strings and parses them into tokens separated by a delimiter character.
Definition CSVReader.h:239
 
void read(const QString &fname)
Reads the entire contents of a file for subsequent parsing.
Definition CSVReader.cpp:140
 
void setSkip(int nskip)
Indicate the number of lines at the top of the source to skip to data.
Definition CSVReader.h:335
 
TNT::Array1D< double > CSVDblVector
Double array def.
Definition CSVReader.h:251
 
TNT::Array1D< T > convert(const CSVAxis &data) const
Converts a row or column of data to the specified type.
Definition CSVReader.h:532
 
bool isTableValid(const CSVTable &table) const
Indicates if all rows have the same number of columns.
Definition CSVReader.cpp:372
 
void setComment(const bool ignore=true)
Allows the user to indicate comment disposition.
Definition CSVReader.h:313
 
CSVAxis getRow(int index) const
Parse and return the requested row by index.
Definition CSVReader.cpp:188
 
CSVTable getTable() const
Parse and return all rows and columns in a table array.
Definition CSVReader.cpp:302
 
bool haveHeader() const
Returns true if a header is present in the input source.
Definition CSVReader.h:359
 
int rows() const
Reports the number of rows in the table.
Definition CSVReader.h:285
 
CSVColumnSummary getColumnSummary(const CSVTable &table) const
Computes a row summary of the number of distinct columns in table.
Definition CSVReader.cpp:344
 
CollectorMap< int, int > CSVColumnSummary
Column summary for all rows.
Definition CSVReader.h:249
 
CSVReader()
Default constructor for CSV reader.
Definition CSVReader.cpp:35
 
void setSkipEmptyParts()
Indicate multiple occurances of delimiters are one token.
Definition CSVReader.h:435
 
void setKeepEmptyParts()
Indicate multiple occurances of delimiters are empty tokens.
Definition CSVReader.h:421
 
int size() const
Reports the total number of lines read from the stream.
Definition CSVReader.h:271
 
bool keepEmptyParts() const
Returns true when preserving succesive tokens, false when they are treated as one token.
Definition CSVReader.h:445
 
void clear()
Discards all lines read from an input source.
Definition CSVReader.h:468
 
char getDelimiter() const
Reports the character used to delimit tokens in strings.
Definition CSVReader.h:409
 
TNT::Array1D< CSVAxis > CSVTable
Table of all rows/columns.
Definition CSVReader.h:248
 
Parser::TokenList CSVAxis
Row/Column token list.
Definition CSVReader.h:247
 
CSVAxis getColumn(int index) const
Parse and return a column specified by index order.
Definition CSVReader.cpp:218
 
friend std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition CSVReader.cpp:447
 
int columns() const
Determine the number of columns in the input source.
Definition CSVReader.cpp:97
 
virtual ~CSVReader()
Destructor (benign)
Definition CSVReader.h:265
 
int getSkip() const
Reports the number of lines to skip.
Definition CSVReader.h:347
 
void setDelimiter(const char &delimiter)
Set the delimiter character that separate tokens in the strings.
Definition CSVReader.h:400
 
void setHeader(const bool gotIt=true)
Allows the user to indicate header disposition.
Definition CSVReader.h:383
 
CSVAxis getHeader() const
Retrieve the header from the input source if it exists.
Definition CSVReader.cpp:168
 
TNT::Array1D< int > CSVIntVector
Integer array def.
Definition CSVReader.h:252
 
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
 
double toDouble(const QString &string)
Global function to convert from a string to a double.
Definition IString.cpp:149