3 #include "ConfigParser.h"
6 const char STARTBRACKET
= '[';
7 const char ENDBRACKET
= ']';
8 const char COMMENT
= '#';
9 const char NEWLINE
= '\n';
11 ConfigParser::ConfigParser () { }
13 ConfigParser::~ConfigParser () { }
16 ConfigParser::ConfigParser (const QString
& fileName
)
23 void ConfigParser::openFile ()
26 QString secStr
, tokStr
;
30 if (!file
.open(QIODevice::ReadOnly
| QIODevice::Text
))
37 QTextStream
in(&file
);
40 while (!line
.isNull())
43 tokStr
= line
.trimmed();
45 if (tokStr
.startsWith(STARTBRACKET
))
47 secStr
= parseSection(tokStr
);
51 else if (tokStr
.startsWith(COMMENT
))
53 else if (tokStr
.isEmpty())
55 else if (secStr
.startsWith("HLE"))
56 parseHleEntry(secStr
,tokStr
);
58 parseEntry(secStr
,tokStr
);
62 bool ConfigParser::getFileExists()
68 //Parse Tokens of line
70 QString
ConfigParser::parseSection (const QString
& lineStrIn
)
74 lineStr
= lineStrIn
.trimmed();
75 lineStr
= lineStr
.remove (STARTBRACKET
);
76 lineStr
= lineStr
.remove (ENDBRACKET
);
78 //qDebug ("" + lineStr.toLatin1());
82 void ConfigParser::parseEntry (const QString
& secName
, const QString
& token
)
84 QString keyname
, value
;
86 keyname
= token
.section('=', 0, 0);
87 keyname
= keyname
.trimmed();
88 keyname
= secName
+ ":" + keyname
;
90 value
= token
.section('=', 1, 1);
91 value
= value
.trimmed();
93 inputData
[keyname
] = value
;
97 void ConfigParser::parseHleEntry (const QString
& secName
, const QString
& token
)
99 QString keyname
, value
;
101 keyname
= token
.section('=', 0, 0);
102 keyname
= keyname
.trimmed();
103 value
= token
.section('=', 1, 1);
104 value
= value
.trimmed();
106 if (keyname
== "name")
107 m_currentElemName
= value
;
109 //HLEGarage:name = door
110 keyname
= secName
+ ":" + m_currentElemName
+ ":" + keyname
;
113 //Stick in a StringList to use elsewhere
114 elementKeyNames
<< keyname
;
116 inputData
[keyname
] = value
;
120 QMap
<QString
, QString
> ConfigParser::getInputData() const
125 double ConfigParser::getValueDouble (const QString
& key
)
129 //If key doesn't exist silently return 0.00
130 if (!inputData
.contains(key
))
133 value
= inputData
[key
];
134 return value
.toDouble();
137 int ConfigParser::getValueInt (const QString
& key
)
141 //If key doesn't exist silently return 0
142 if (!inputData
.contains(key
))
145 value
= inputData
[key
];
146 return value
.toInt();
150 QString
ConfigParser::getValueString (const QString
& key
)
154 //If key doesn't exist silently return 0
155 if (!inputData
.contains(key
))
158 value
= inputData
[key
];
162 bool ConfigParser::getValueBool (const QString
& key
)
166 //If key doesn't exist silently return 0
167 if (!inputData
.contains(key
))
170 value
= inputData
[key
];
171 //return value.toBool();
175 QStringList
ConfigParser::getElementKeyNames() const
177 return elementKeyNames
;
180 QStringList
ConfigParser::findHleEntries ()
182 QMapIterator
<QString
, QString
> i(inputData
);
184 QString item
,lastElement
,currElement
;
190 if (item
.startsWith("HLE"))
194 currElement
= item
.section(':',0,0);
196 if (currElement
== lastElement
)
200 valsOut
<< currElement
;
201 lastElement
= currElement
;