Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef ASCIILINEPARSER_H
00028 #define ASCIILINEPARSER_H
00029
00030 #include <QtCore>
00031
00032 #include "QGpCoreToolsDLLExport.h"
00033
00034 namespace QGpCoreTools {
00035
00036 class QGPCORETOOLS_EXPORT AsciiLineParser
00037 {
00038 public:
00039 AsciiLineParser(QByteArray * buffer, int nColumns=1);
00040 ~AsciiLineParser();
00041
00042 void readLine();
00043 bool readColumn(int index);
00044 bool readColumns(int count, int *columns);
00045 void countColumns();
00046 void reset();
00047 bool atEnd() const {return _index>=_bufferSize;}
00048
00049 int count() const {return _valueCount;}
00050
00051 inline int toInt(int index=0);
00052 inline double toDouble(int index=0);
00053 inline QString toString(int index=0);
00054
00055 int toInt(int begin, int count);
00056 double toDouble(int begin, int count);
00057 inline QString toString(int begin, int count);
00058 private:
00059 inline bool readValue(int index, bool nextLine, bool& endOfLine);
00060 inline void skipValue(bool& endOfLine);
00061
00062 char * _buffer;
00063 int _bufferSize;
00064 int _index;
00065 int _maximumValueCount;
00066 int _valueCount;
00067 char ** _values;
00068 };
00069
00070 inline int AsciiLineParser::toInt(int index)
00071 {
00072 return atoi(_values[index]);
00073 }
00074
00075 inline double AsciiLineParser::toDouble(int index)
00076 {
00077 return atof(_values[index]);
00078 }
00079
00080 inline QString AsciiLineParser::toString(int index)
00081 {
00082 return QString::fromAscii(_values[index]);
00083 }
00084
00085 inline QString AsciiLineParser::toString(int begin, int count)
00086 {
00087 return QString::fromAscii(_buffer+begin, count);
00088 }
00089
00090 }
00091
00092 #endif // ASCIILINEPARSER_H