DataObject* MainWindow::parseCSVFile(QString dataFileName) { DataObject *dobj = new DataObject(); // Open the file QFile dataFile(dataFileName); if (!dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) return NULL; // Create text stream QTextStream dataStream(&dataFile); QString line; QStringList lineValues; long long elemid = 0; // Get metadata from first line line = dataStream.readLine(); dobj->meta = line.split(','); dobj->numDimensions = dobj->meta.size(); // Get data while(!dataStream.atEnd()) { line = dataStream.readLine(); lineValues = line.split(','); if(lineValues.size() != dobj->numDimensions) { cerr << "ERROR: element dimensions do not match metadata!" << endl; cerr << "At element " << elemid << endl; return NULL; } for(int i=0; i<lineValues.size(); i++) { dobj->vals.push_back(lineValues[i].toDouble()); } elemid++; } // Close and return dataFile.close(); dobj->init(); return dobj; }