|
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.
|