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


Anmelden zum Antworten