Esempio n. 1
0
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;
}