parsedaten an aufrufer uebergeben
-
hola leute
eine rein theoretische frage:
angenommen ich habe einen praser fuer ini dateien geschrieben.
was waere da die eleganteste moeglichkeit die daten an den aufrufer zu eubergeben ?
per callback, einer rein virtuellen klasse oder nur den tokentype zurueckgeben und den aufrufer die richtige funktion zum holen der daten veranlassen ?faellt jemanden sonst noch eine moeglichkeit ein ?
Meep Meep
PS: es geht nicht nur um ini parser. grundsaetlich um parser fuer dateistrukturen
-
Zeig mal ein Beispiel, ich versteh nicht ganz, was du mit deinen Ansätzen meinst.
ini_daten ini; if (!parse_ini(ini)) // füllt ini return 0; // Fehlerfall: Syntaxfehler wurden schon auf stderr ausgegeben // ini ist gefüllt
-
mittels token selbst abrufen:
std::fstream datei(...); ini_parser inip(datei); std::string str1, str2; while(!datei.eof()) { ini_parser::token token = inip.next_token(); switch(token) { case SECTOR : inip.get_sector(str1); break; case PROPERTY : inip.get_property(str1, str2); break; // key und value case default : inip.skip_line(); break; // ist eine bemerkung, brauchen wir nicht } }bei den callbacks uebergibt man inip 3 callback funktionen, die jenachdem welches token auftritt aufgerufen wird.
bei reinvirtueller klasse muss man davon ableiten und inip uebergeben.
[/code]
-
Ich würde in der Klasse eine map<token, value> füllen, und einen Zugriff darauf ermöglichen.
-
Belli schrieb:
Ich würde in der Klasse eine map<token, value> füllen, und einen Zugriff darauf ermöglichen.
value alleine bringt leider nicht viel. properties haben key und value.
aber ehrlichgesagt will ich nicht von vornherein in ne struktur einlesen.
-
Dann halt eine map< token, map <key, value> >;