summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--csv/csv.cpp156
1 files changed, 78 insertions, 78 deletions
diff --git a/csv/csv.cpp b/csv/csv.cpp
index c1971256..3d509a91 100644
--- a/csv/csv.cpp
+++ b/csv/csv.cpp
@@ -16,95 +16,95 @@
CSV::CSV(QIODevice * device)
{
- m_device = device;
- m_codec = QTextCodec::codecForLocale();
- m_pos = 0;
- m_rx = QRegExp("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)\\n");
+ m_device = device;
+ m_codec = QTextCodec::codecForLocale();
+ m_pos = 0;
+ m_rx = QRegExp("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)\\n");
}
-CSV::CSV(QString &string){
- m_device = NULL;
- m_codec = QTextCodec::codecForLocale();
- m_string = string;
- m_pos = 0;
- m_rx = QRegExp("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)\\n");
+CSV::CSV(QString &string){
+ m_device = NULL;
+ m_codec = QTextCodec::codecForLocale();
+ m_string = string;
+ m_pos = 0;
+ m_rx = QRegExp("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)\\n");
}
void CSV::setCodec(const char* codecName){
- m_codec = QTextCodec::codecForName(codecName);
+ m_codec = QTextCodec::codecForName(codecName);
}
QString CSV::readLine(){
- QString line;
+ QString line;
+
+ if(m_string.isNull()){
+ if(m_device && m_device->isReadable()){
+ QTextDecoder dec(m_codec);
+ m_string = dec.toUnicode(m_device->readAll());
+ }else{
+ return QString();
+ }
+ }
+ if((m_pos = m_rx.indexIn(m_string,m_pos)) != -1) {
+ line = m_rx.cap(1);
+ m_pos += m_rx.matchedLength();
+ }
+ return line;
- if(m_string.isNull()){
- if(m_device && m_device->isReadable()){
- QTextDecoder dec(m_codec);
- m_string = dec.toUnicode(m_device->readAll());
- }else{
- return QString();
- }
- }
- if((m_pos = m_rx.indexIn(m_string,m_pos)) != -1) {
- line = m_rx.cap(1);
- m_pos += m_rx.matchedLength();
- }
- return line;
-
}
QStringList CSV::parseLine(){
- return parseLine(readLine());
+ return parseLine(readLine());
}
QStringList CSV::parseLine(QString line){
- QStringList list;
- int pos2 = 0;
- QRegExp rx2("(?:\"([^\"]*)\";?)|(?:([^;]*);?)");
- if(line.size()<1){
- list << "";
- }else while (line.size()>pos2 && (pos2 = rx2.indexIn(line, pos2)) != -1) {
- QString col;
- if(rx2.cap(1).size()>0)
- col = rx2.cap(1);
- else if(rx2.cap(2).size()>0)
- col = rx2.cap(2);
-
- list << col;
+ QStringList list;
+ int pos2 = 0;
+ QRegExp rx2("(?:\"([^\"]*)\";?)|(?:([^;]*);?)");
+ if(line.size()<1){
+ list << "";
+ }else while (line.size()>pos2 && (pos2 = rx2.indexIn(line, pos2)) != -1) {
+ QString col;
+ if(rx2.cap(1).size()>0)
+ col = rx2.cap(1);
+ else if(rx2.cap(2).size()>0)
+ col = rx2.cap(2);
+
+ list << col;
- if(col.size())
- pos2 += rx2.matchedLength();
- else
- pos2++;
- }
- return list;
+ if(col.size())
+ pos2 += rx2.matchedLength();
+ else
+ pos2++;
+ }
+ return list;
}
bool CSV::getGameData( const int id, unsigned char* table, QString& gamename)
{
QString gameID = QString::number(id);
-
+
/* zero table first, in case unknown game is connecting */
for (int i = 0; i < 8; i++)
table[i] = 0;
QStringList gameLine;
- qDebug() << "getGameData, ID = " << gameID;
+ qDebug() << "getGameData, ID = " << gameID;
- QFile file(QCoreApplication::applicationDirPath() + "/settings/facetracknoir supported games.csv");
- if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
+ QFile file(QCoreApplication::applicationDirPath() + "/settings/facetracknoir supported games.csv");
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
return false;
- }
- CSV csv(&file);
+ }
+ CSV csv(&file);
while (gameLine = csv.parseLine(), gameLine.count() > 2) {
- //qDebug() << "Column 0: " << gameLine.at(0); // No.
- //qDebug() << "Column 1: " << gameLine.at(1); // Game Name
- //qDebug() << "Column 2: " << gameLine.at(2); // Game Protocol
- //qDebug() << "Column 3: " << gameLine.at(3); // Supported since version
- //qDebug() << "Column 4: " << gameLine.at(4); // Verified
- //qDebug() << "Column 5: " << gameLine.at(5); // By
- //qDebug() << "Column 6: " << gameLine.at(6); // International ID
- //qDebug() << "Column 7: " << gameLine.at(7); // FaceTrackNoIR ID
-
- if (gameLine.count() > 6) {
- if (gameLine.at(6).compare( gameID, Qt::CaseInsensitive ) == 0) {
+ //qDebug() << "Column 0: " << gameLine.at(0); // No.
+ //qDebug() << "Column 1: " << gameLine.at(1); // Game Name
+ //qDebug() << "Column 2: " << gameLine.at(2); // Game Protocol
+ //qDebug() << "Column 3: " << gameLine.at(3); // Supported since version
+ //qDebug() << "Column 4: " << gameLine.at(4); // Verified
+ //qDebug() << "Column 5: " << gameLine.at(5); // By
+ //qDebug() << "Column 6: " << gameLine.at(6); // International ID
+ //qDebug() << "Column 7: " << gameLine.at(7); // FaceTrackNoIR ID
+
+ if (gameLine.count() > 6) {
+ if (gameLine.at(6).compare( gameID, Qt::CaseInsensitive ) == 0) {
QByteArray id = gameLine.at(7).toLatin1();
unsigned int tmp[8];
unsigned int fuzz[3];
@@ -115,18 +115,18 @@ bool CSV::getGameData( const int id, unsigned char* table, QString& gamename)
ret = false;
}
else if (sscanf(id.constData(),
- "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
- fuzz + 2,
- fuzz + 0,
- tmp + 3,
- tmp + 2,
- tmp + 1,
- tmp + 0,
- tmp + 7,
- tmp + 6,
- tmp + 5,
- tmp + 4,
- fuzz + 1) != 11)
+ "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
+ fuzz + 2,
+ fuzz + 0,
+ tmp + 3,
+ tmp + 2,
+ tmp + 1,
+ tmp + 0,
+ tmp + 7,
+ tmp + 6,
+ tmp + 5,
+ tmp + 4,
+ fuzz + 1) != 11)
{
qDebug() << "scanf failed" << fuzz[0] << fuzz[1] << fuzz[2];
ret = false;
@@ -141,9 +141,9 @@ bool CSV::getGameData( const int id, unsigned char* table, QString& gamename)
gamename = gameLine.at(1);
file.close();
return ret;
- }
- }
- }
+ }
+ }
+ }
qDebug() << "Unknown game connected" << gameID;
file.close();