From: <dhu...@us...> - 2007-01-09 08:59:59
|
Revision: 133 http://svn.sourceforge.net/qcell/?rev=133&view=rev Author: dhubleizh Date: 2007-01-09 00:59:57 -0800 (Tue, 09 Jan 2007) Log Message: ----------- - "Function" to "LocalFunction" in FQTParserPlugin.cpp and MainWindow.cpp - debugged and tested parsing of FQTParsingPlugin - removed some major bugs in thath plugin - seems to work now Modified Paths: -------------- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-09 08:57:53 UTC (rev 132) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-09 08:59:57 UTC (rev 133) @@ -10,7 +10,7 @@ FQTParserPlugin::FQTParserPlugin() { - supported_parser_types << "Function"; + supported_parser_types << "LocalFunction"; supported_file_types << "FQT"; } @@ -38,6 +38,12 @@ // Basic sanity check lines = QString(content).split('\n'); + // Check if there is pending '\n' to chop + if(lines.last().count() == 0) + { + lines.removeLast(); + } + if(lines.count() < 4) { qDebug(tr("The input file is to short!").toAscii()); @@ -66,19 +72,19 @@ // Number of arguments, possible values number and possible return values number lines[0] = lines[0].trimmed(); - format = QRegExp("^([0-9a-Z] ){2}[0-9a-Z]$"); + format = QRegExp("^((\\d)+ ){2}(\\d)+$"); if(format.exactMatch(lines[0])) { QStringList tmp_split = lines[0].split(' '); - arguments_nr = tmp_split[0].toLong(); - values_nr = tmp_split[1].toLong(); - return_values_nr = tmp_split[2].toLong(); + arguments_nr = tmp_split[0].toInt(); + values_nr = tmp_split[1].toInt(); + return_values_nr = tmp_split[2].toInt(); - if((arguments_nr == 0) || (values_nr == 0) || (return_values_nr == 0)) + if((arguments_nr < 2) || (values_nr < 2) || (return_values_nr < 2)) { - qDebug(tr("In line %1 each value (arguments number, arguments values number and return values number) needs to be more then 0 for the function to be usuable") + qDebug(tr("In line %1 each value (arguments number, arguments values number and return values number) needs to be more then 2 for the function to be usuable") .arg(line_nr) .toAscii() ); @@ -110,16 +116,28 @@ ); } - // Index of arguments gettins summed up + // Index of arguments getting summed up lines[0] = lines[0].trimmed(); - format = QRegExp("^((\\d)+,){1-" + QString::number(arguments_nr-2) + "}(\\d)+$"); + switch (arguments_nr) + { + case 2: + { + format = QRegExp("^(\\d)$"); + break; + } + default: + { + format = QRegExp("^((\\d)+,){1-" + QString::number(arguments_nr-2) + "}(\\d)+$"); + } + } if(format.exactMatch(lines[0])) { int arg_index, arg_nr; - arg_nr = 1; + arg_nr = 0; foreach(QString argument, lines[0].split(',')) { + arg_nr++; arg_index = argument.toLong(); // Sanity check @@ -136,12 +154,10 @@ } arguments.append(arg_index); - - arg_nr++; } // Now we can calculate the maximal sum value max_sum = arg_nr * (values_nr - 1); - free_args_columns = values_nr^arg_nr; + free_args_columns = pow(values_nr, (arguments_nr - arg_nr)); lines.removeFirst(); line_nr++; @@ -159,7 +175,7 @@ // Main function parsing lines[0] = lines[0].trimmed(); - format = QRegExp("^(\\d)+:([0-9a-Z]){" + QString::number(free_args_columns-1) + "}[0-9a-Z]$"); + format = QRegExp("^(\\d)+: [0-9a-Z]{" + QString::number(free_args_columns-1) + "}[0-9a-Z]$"); QStringList tmp; int tmp_sum,value_index; QVector<int> tmp_values; @@ -188,13 +204,28 @@ return QString(); } + // Double adding sanity check + else if(results.contains(tmp_sum)) + { + qDebug(tr("The sum %1 in line %2 already added.") + .arg(tmp_sum) + .arg(line_nr) + .toAscii() + ); + return QString(); + } + // Now parsing the rest of values // First clearing tmp values tmp_values.clear(); - value_index = 1; + value_index = 0; + // Remove space after seperator ':' + tmp[1].remove(0, 1); foreach(QChar value, tmp[1]) { + // Keep track of current parsed value + value_index++; // Sanity check for value if(value.toAscii() >= ('0'+values_nr)) { @@ -210,22 +241,9 @@ // Collecting this lines values tmp_values.append(value.toAscii() - '0'); - // Keep track of current parsed value - value_index++; } - // Double adding sanity check - if(results.contains(tmp_sum)) - { - qDebug(tr("The sum %1 in line %2 already added.") - .arg(tmp_sum) - .arg(line_nr) - .toAscii() - ); - return QString(); - } - // Finally adding the parsed values results[tmp_sum] == QVector<int>(tmp_values); Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-09 08:57:53 UTC (rev 132) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-09 08:59:57 UTC (rev 133) @@ -46,9 +46,9 @@ } } - if(type == "Function") + if(type == "LocalFunction") { - file_types = iParser->fileTypes("Function"); + file_types = iParser->fileTypes("LocalFunction"); foreach(QString extension, file_types) { function_parsers[extension] = iParser; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |