docs/html/csvReader_8h_source.html
| | Jetson Inference
DNN Vision Library |
csvReader.h
Go to the documentation of this file.
1 /*
2 * Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 */
22
23 #ifndef __CSV_READER_H_
24 #define __CSV_READER_H_
25
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <errno.h>
29
30 #include <string>
31 #include <vector>
32 #include <iostream>
33
34
40 {
41 public:
42// constructors
43csvData( char* str ) { string = str; }
44csvData( const char* str ) { string = str; }
45csvData( std::string& str ) { string = str; }
46
47// assignment
48template<typename T> csvData( T value ) { set(value); }
49template<typename T> void set( T value ) { string = std::to_string(value); }
50
51// cast to string
52inline operator std::string&() { return string; }
53inline operator const std::string&() const { return string; }
54inline operator const char*() const { return string.c_str(); }
55
56// cast to number
57inline operator int() const { return toInt(); }
58inline operator float() const { return toFloat(); }
59inline operator double() const { return toDouble(); }
60
61// convert to number (return true if valid)
62inline bool toInt( int* value ) const;
63inline bool toFloat( float* value ) const;
64inline bool toDouble( double* value ) const;
65
66// convert to number (valid->false on error)
67inline int toInt( bool* valid=NULL ) const;
68inline float toFloat( bool* valid=NULL ) const;
69inline double toDouble( bool* valid=NULL ) const;
70
71// stream insertion/extraction operators
72inline friend std::istream& operator >>(std::istream& in, csvData& obj);
73inline friend std::ostream& operator <<(std::ostream& out, const csvData& obj);
74
75// split string by delimiters into list of tokens
76inline static std::vector<csvData> Parse( const char* str, const char* delimiters=",;\t " );
77
78// fill list of tokens with string split by delimiters
79inline static bool Parse( std::vector<csvData>& data, const char* str, const char* delimiters=",;\t " );
80
81// data storage
83 };
84
85
91 {
92 public:
93// constructor/destructor
94csvReader( const char* filename, const char* delimiters=",;\t " );
95~csvReader();
96
97// open
98inline static csvReader* Open( const char* filename, const char* delimiters=",;\t " );
99
100// close
101inline void Close();
102
103// is open and not EOF
104inline bool IsOpen() const;
105inline bool IsClosed() const;
106
107// read line, return list of tokens
108inline std::vector<csvData> Read();
109inline std::vector<csvData> Read( const char* delimiters );
110
111// read line, fill list of tokens
112inline bool Read( std::vector<csvData>& data );
113inline bool Read( std::vector<csvData>& data, const char* delimiters );
114
115// set default delimiters
116inline void SetDelimiters( const char* delimiters );
117
118// retrieve default delimiters
119inline const char* GetDelimiters() const;
120
121// retrieve the filename
122inline const char* GetFilename() const;
123
124// maximum line length
125const size_t MaxLineLength=2048;
126
127 private:
128 FILE* mFile;
129
130 std::string mFilename;
131 std::string mDelimiters;
132 };
133
134
135 // internal functions
136 #include "csvReader.hpp"
137
138 #endif
139
bool toInt(int *value) const
Definition: csvReader.hpp:32
csvReader
Definition: csvReader.h:90
bool toFloat(float *value) const
Definition: csvReader.hpp:49
void SetDelimiters(const char *delimiters)
Definition: csvReader.hpp:292
bool IsOpen() const
Definition: csvReader.hpp:229
csvReader(const char *filename, const char *delimiters=",;\t ")
Definition: csvReader.hpp:176
const size_t MaxLineLength
Definition: csvReader.h:125
csvData(std::string &str)
Definition: csvReader.h:45
csvData(const char *str)
Definition: csvReader.h:44
bool toDouble(double *value) const
Definition: csvReader.hpp:66
bool IsClosed() const
Definition: csvReader.hpp:235
void set(T value)
Definition: csvReader.h:49
void Close()
Definition: csvReader.hpp:219
csvData(T value)
Definition: csvReader.h:48
const char * GetDelimiters() const
Definition: csvReader.hpp:298
~csvReader()
Definition: csvReader.hpp:195
csvData(char *str)
Definition: csvReader.h:43
const char * GetFilename() const
Definition: csvReader.hpp:304
static csvReader * Open(const char *filename, const char *delimiters=",;\t ")
Definition: csvReader.hpp:202
friend std::ostream & operator<<(std::ostream &out, const csvData &obj)
Definition: csvReader.hpp:126
static std::vector< csvData > Parse(const char *str, const char *delimiters=",;\t ")
Definition: csvReader.hpp:133
friend std::istream & operator>>(std::istream &in, csvData &obj)
Definition: csvReader.hpp:119
std::string string
Definition: csvReader.h:82
std::vector< csvData > Read()
Definition: csvReader.hpp:241
csvData
Definition: csvReader.h:39