29 #include <tnt/tnt_array1d.h> 84 template <
typename TokenStore = QString>
108 CSVParser(
const QString &str,
const char &delimiter =
',',
109 bool keepEmptyParts =
true) {
110 parse(str, delimiter, keepEmptyParts);
118 return (_elements.dim());
133 return (_elements[nth]);
153 int parse(
const QString &str,
const char &delimiter =
',',
154 bool keepEmptyParts =
true) {
156 str.split(delimiter, keepEmptyParts? QString::KeepEmptyParts : QString::SkipEmptyParts);
158 for(
int i = 0 ; i < tokens.size() ; i++) {
162 return (_elements.dim());
276 CSVReader(
const QString &csvfile,
bool header =
false,
int skip = 0,
278 const bool ignoreComments =
true);
288 return (_lines.size());
302 int nrows(_lines.size() - firstRowIndex());
303 return ((nrows < 0) ? 0 : nrows);
330 _ignoreComments = ignore;
352 if(nskip >= 0) _skip = nskip;
417 _delimiter = delimiter;
465 void read(
const QString &fname);
476 template <
typename T> TNT::Array1D<T>
convert(
const CSVAxis &data)
const;
489 typedef std::vector<QString> CSVList;
495 bool _ignoreComments;
506 int firstRowIndex()
const {
507 return (_skip + ((_header) ? 1 : 0));
510 std::istream &load(std::istream &ifile);
547 template <
typename T>
549 TNT::Array1D<T> out(data.dim());
550 for(
int i = 0 ; i < data.dim() ; i++) {
CSVTable getTable() const
Parse and return all rows and columns in a table array.
Definition: CSVReader.cpp:318
CSV Parser seperates fields (tokens) from a string with a delimeter.
Definition: CSVReader.h:85
CSVColumnSummary getColumnSummary(const CSVTable &table) const
Computes a row summary of the number of distinct columns in table.
Definition: CSVReader.cpp:360
void read(const QString &fname)
Reads the entire contents of a file for subsequent parsing.
Definition: CSVReader.cpp:156
TokenList result() const
Returns the list of tokens.
Definition: CSVReader.h:172
int parse(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Parser method accepting string, delimiter and multiple token handling.
Definition: CSVReader.h:153
void setKeepEmptyParts()
Indicate multiple occurances of delimiters are empty tokens.
Definition: CSVReader.h:437
int size() const
Reports the total number of lines read from the stream.
Definition: CSVReader.h:287
void setSkip(int nskip)
Indicate the number of lines at the top of the source to skip to data.
Definition: CSVReader.h:351
double toDouble(const QString &string)
Global function to convert from a string to a double.
Definition: IString.cpp:164
char getDelimiter() const
Reports the character used to delimit tokens in strings.
Definition: CSVReader.h:425
TNT::Array1D< double > CSVDblVector
Double array def.
Definition: CSVReader.h:267
TokenStore TokenType
Token storage type.
Definition: CSVReader.h:87
virtual ~CSVReader()
Destructor (benign)
Definition: CSVReader.h:281
TNT::Array1D< TokenType > TokenList
List of tokens.
Definition: CSVReader.h:88
int getSkip() const
Reports the number of lines to skip.
Definition: CSVReader.h:363
CSVParser()
Default constructor.
Definition: CSVReader.h:91
int rows() const
Reports the number of rows in the table.
Definition: CSVReader.h:301
int size() const
Returns the number of tokens in the parsed string.
Definition: CSVReader.h:117
CSVAxis getRow(int index) const
Parse and return the requested row by index.
Definition: CSVReader.cpp:204
CSVAxis getColumn(int index) const
Parse and return a column specified by index order.
Definition: CSVReader.cpp:234
Parser::TokenList CSVAxis
Row/Column token list.
Definition: CSVReader.h:263
void setHeader(const bool gotIt=true)
Allows the user to indicate header disposition.
Definition: CSVReader.h:399
Reads strings and parses them into tokens separated by a delimiter character.
Definition: CSVReader.h:255
int columns() const
Determine the number of columns in the input source.
Definition: CSVReader.cpp:113
Collector/container for arbitrary items.
Definition: CollectorMap.h:435
bool isTableValid(const CSVTable &table) const
Indicates if all rows have the same number of columns.
Definition: CSVReader.cpp:388
void setComment(const bool ignore=true)
Allows the user to indicate comment disposition.
Definition: CSVReader.h:329
CSVParser(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Constructor that parses strings according to given parameters.
Definition: CSVReader.h:108
bool haveHeader() const
Returns true if a header is present in the input source.
Definition: CSVReader.h:375
void clear()
Discards all lines read from an input source.
Definition: CSVReader.h:484
friend std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition: CSVReader.cpp:463
void setSkipEmptyParts()
Indicate multiple occurances of delimiters are one token.
Definition: CSVReader.h:451
CSVReader()
Default constructor for CSV reader.
Definition: CSVReader.cpp:51
void setDelimiter(const char &delimiter)
Set the delimiter character that separate tokens in the strings.
Definition: CSVReader.h:416
virtual ~CSVParser()
Destructor.
Definition: CSVReader.h:93
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
CollectorMap< int, int > CSVColumnSummary
Column summary for all rows.
Definition: CSVReader.h:265
TNT::Array1D< CSVAxis > CSVTable
Table of all rows/columns.
Definition: CSVReader.h:264
bool keepEmptyParts() const
Returns true when preserving succesive tokens, false when they are treated as one token...
Definition: CSVReader.h:461
const TokenType & operator()(const int nth) const
Returns the nth token in the parsed string.
Definition: CSVReader.h:132
CSVAxis getHeader() const
Retrieve the header from the input source if it exists.
Definition: CSVReader.cpp:184
TNT::Array1D< T > convert(const CSVAxis &data) const
Converts a row or column of data to the specified type.
Definition: CSVReader.h:548
TNT::Array1D< int > CSVIntVector
Integer array def.
Definition: CSVReader.h:268