#ifndef INCLUDE_NASTPARAMETERCONTEXTAGGEDFILE_H #define INCLUDE_NASTPARAMETERCONTEXTAGGEDFILE_H //----------------------------------------------------------------------------- // NastParameterContextTaggedFile.h //----------------------------------------------------------------------------- // // Copyright (C) 1998 Technische Universitaet Muenchen, Germany // written by Bernhard Brueck // // This file is part of Nast++ // //----------------------------------------------------------------------------- // CNastParameterContextTaggedFile ermoeglicht das Einlesen von Parametern // aus einem stream. // Jeder Parameter besteht aus mehreren Teilen. Der Name setzt sich aus // den Bezeichungen fuer Bereiche, getrennt durch Punkte zusammen. // ... = // Integerwerte und Fliesskommawerte werden direkt angegeben. Bei strings // wird die Zeichenkette in Hochkomma eingeschlossen. In strings sind // alle Zeichen bis auf Hochkomma erlaubt. Es ist kein Escapezeichen vorgesehen. // Mit einem Semikolon ausserhalb eines Strings wird ein Kommentar eingeleitet. // Alles in der Zeile nach dem Semikolon wird ignoriert. // // Beispiel fuer ein Tagged File: // // Geometrie.size_x = 1.0 ; Groesse der Geometrie in x-Richtung // Geometrie.size_y = 1.3 ; Groesse der Geometrie in y-Richtung // Geometrie.delta_x = 1.0 ; Zellgroesse in x-Richtung // Geometrie.delta_y = 1.3 ; Zellgroesse in y-Richtung // // Output.Filename = "DrivenCavity.out" // Output.Kommentar = "Einfacher Fall mit Driven Cavity" // // Solver.SOR.itermax = 100 // Solver.SOR.eps = 0.001 // // // Eine Besonderheit stellt die Funktion Sektion dar. Mit ihr ist es möglich // den Bereich einzuschraenken. Sie liefert als Ergebnis wieder eine // CNastParameterContextTaggedFile Objekt und kann desshalb beliebig ver- // schachtelt werden. // z.B. fuer obiges Beispiel liefert section("Solver") // // SOR.itermax = 100 // SOR.eps = 0.001 // // oder eps laesst sich auch direkt einlesen: // // contextParameter.section("Solver").section("SOR").getParameter( eps, "eps"); // //----------------------------------------------------------------------------- // Aenderungen: // // // #include "NastConfig.h" #include "NastParameterContext.h" #include "NastArray.h" class istream; class CNastParameterContextTaggedFile : public CNastParameterContext { public: //------------------------------------------------------------------------- // Konstruktor + Destruktor //------------------------------------------------------------------------- CNastParameterContextTaggedFile( istream &inputStream ); CNastParameterContextTaggedFile( const CNastParameterContextTaggedFile & other); virtual ~CNastParameterContextTaggedFile(); // Destruktor //------------------------------------------------------------------------- // Memberfunktionen //------------------------------------------------------------------------- virtual bool getParameter( int ¶meter, const char *szName, CNastParameterContext::Req req = CNastParameterContext::required ) const; virtual bool getParameter( double ¶meter, const char *szName, CNastParameterContext::Req req = CNastParameterContext::required ) const; virtual bool getParameter( char *parameter, const char *szName, CNastParameterContext::Req req = CNastParameterContext::required ) const; virtual CNastParameterContext* section( const char *szSection ) const; //------------------------------------------------------------------------- // Debug //------------------------------------------------------------------------- // debugInfo gibt Information ueber den Zustand des Objekts aus // assertValid testet das Objekt auf Integritaet // virtual void debugDump( CNastDumpContext &dmpContext ) const; virtual void assertValid() const; private: //------------------------------------------------------------------------- // Hilfsfunktionen //------------------------------------------------------------------------- CNastParameterContextTaggedFile(); // nur fuer internen Gebrauch const char* searchValue( const char *szName) const; //------------------------------------------------------------------------- // Membervariablen //------------------------------------------------------------------------- CNastArray m_arrTags; // Array mit den Bereichs und Variablennamen CNastArray m_arrValues; // Array mit den Werten // Zuweisung nicht impl. const CNastParameterContextTaggedFile& operator=( const CNastParameterContextTaggedFile &o ); }; #endif // INCLUDE_NASTPARAMETERCONTEXTAGGEDFILE_H