21 #ifndef CSVDATALOADER_H_
22 #define CSVDATALOADER_H_
24 #include <tulip/tulipconf.h>
25 #include <tulip/CSVContentHandler.h>
43 class TLP_QT_SCOPE CSVParser {
45 virtual ~CSVParser() {}
47 virtual char decimalMark()
const {
56 bool firstLineOnly =
false) = 0;
72 class TLP_QT_SCOPE CSVSimpleParser :
public CSVParser {
83 CSVSimpleParser(
const std::string &fileName,
const QString &separator =
";",
84 bool mergesep =
false,
char textDelimiter =
'"',
char delimiterMark =
'.',
85 bool considerAsString =
false,
86 const std::string &fileEncoding = std::string(
"UTF-8"),
87 unsigned int firstLine = 0,
unsigned int lastLine = UINT_MAX);
89 ~CSVSimpleParser()
override;
91 inline std::string fileName()
const {
94 inline void setFileName(
const std::string &fileName) {
98 inline char textDelimiter()
const {
99 return _textDelimiter;
102 char decimalMark()
const override {
106 inline void setTextDelimiter(
char delimiter) {
107 _textDelimiter = delimiter;
110 inline std::string fileEncoding()
const {
111 return _fileEncoding;
114 inline void setFileEncoding(
const std::string &fileEncoding) {
115 _fileEncoding = fileEncoding;
119 bool firstLineOnly =
false)
override;
122 virtual std::string treatToken(
const std::string &token,
int row,
int column);
125 void tokenize(
const std::string &str, std::vector<CSVToken> &tokens,
const QString &delimiters,
126 const bool mergedelim,
char _textDelimiter,
unsigned int numberOfCol);
127 std::string convertStringEncoding(
const std::string &toConvert, QTextCodec *encoder);
133 bool multiplatformgetline(std::istream &is, std::string &str);
135 bool checkForContiguousTdlm(std::istream &is, std::string &str,
char sep,
bool tdlm);
136 std::string removeQuotesIfAny(std::string &s);
137 std::string _fileName;
141 std::string _fileEncoding;
142 unsigned int _firstLine;
143 unsigned int _lastLine;
144 bool _mergesep, _considerAsString;
150 class TLP_QT_SCOPE CSVInvertMatrixParser :
public tlp::CSVParser,
public tlp::CSVContentHandler {
152 CSVInvertMatrixParser(CSVParser *parser);
153 ~CSVInvertMatrixParser()
override;
155 char decimalMark()
const override {
156 return parser->decimalMark();
160 bool firstLineOnly =
false)
override;
162 bool begin()
override;
163 bool line(
unsigned int row,
const std::vector<CSVToken> &lineTokens)
override;
164 bool end(
unsigned int rowNumber,
unsigned int columnNumber)
override;
168 CSVContentHandler *handler;
169 std::vector<std::vector<CSVToken>> columns;
170 unsigned int maxLineSize;
PluginProcess subclasses are meant to notify about the progress state of some process (typically a pl...