Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Alphabetische Liste | Auflistung der Klassen | Verzeichnisse | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente

Config Klassenreferenz

Klasse zum Einlesen/Schreiben von Windows-Ini-Dateien. Mehr ...

#include <confg.h>

Aufstellung aller Elemente

Öffentliche Typen

enum  Err {
  OK = 0, FILE_NOT_FOUND, SECTION_NOT_FOUND, PAR_NOT_FOUND,
  NO_FURTHER_PAR
}

Öffentliche Methoden

 Config ()
 Config (const string &fileName, Err &err)
 ~Config ()
Err init (const string &fileName)
 Initialisierungsfunktion wird von allen Konstruktoren aufgerufen.
Err getErr () const
string errToStr () const
 Wandelt Error-Code in String um.
Err seekSection (const string &section)
 Sucht von Beginn der Konfigurationsdatei an nach Sektion sectionName.
Err readParameter (const string &par, string &val, const string &section="", bool isStripSpc=true)
 Liest den Parameter parName ein und gibt den Wert in value zurueck.
Err nextParameter (string &par, string &val)
 Holt naechsten Parameter ab der aktuellen Zeile.
Err writeParameter (const string &par, const string &val, const string &section="")
 Weist dem Parameter setPar in der Sektion setSection den Wert setVal zu.
Err flush ()
 Schreibt die Konfigurationsdatei neu auf Platte.
void remove ()

Private Methoden

void splitLine (string line, string &space, string &sectionName, string &parName, string &assignOp, string &value, string &comment)
 Trennt eine Konfigurationszeile in ihre Bestandteile auf.
void readFile ()
 Liest die ganze Konfigurationsdatei in das String-Array mLines ein.
Err setParameter (const string &setPar, const string &setVal, unsigned int &i)
 Beschreibt den Parameter setPar mit Wert setVal.

Private Attribute

char mCs
 Kommentarsymbol.
string mAssigns
 Liste von Zuweisungszeichen.
string mCsAndEol
 String mit Kommentar und EOL-Symbol.
string mFileName
 Name der Konfigurationsdatei.
string mSection
 Name der Sektion.
string mParName
 Name des Parameters.
fstream mFile
 zu oeffnende Konfigurationsdatei
bool mIsFileRead
 Flag, ob Datei schon gelesen.
Err mErr
 Fehlercode.
vector< string > mLines
 gepufferte Datei


Ausführliche Beschreibung

Klasse zum Einlesen/Schreiben von Windows-Ini-Dateien.

Die Klasse Config dient zum Lesen und zerstoerungsfreien Schreiben von Initialisierungsdateien, wie sie frueher unter Windows ueblich waren. Zerstoerungsfrei bedeutet dabei, dass die Formatierung der Datei auch beim Schreiben von Parameteren (z.B. Kommentare am Zeilenende) erhalten bleibt.

Eine Initialisierungsdatei gliedert sich in Sektionen, in denen die Parameter aufgelistet sind; Kommentare sind am Zeilenende erlaubt. Beispiel:

    # configuration file for Almetare's Casio fx-85v
    
    [PROGRAM]
       name         = Casio fx-85v
       version      = V.1.0 beta    
       nvRam        = ||||0|||||||  # non volatile RAM - you should not edit this entry
       displayMode  = moreRealistic # allowed: 'debug', 'simple', 'realistic' or 'moreRealistic'
       xPos         = 50            # x position of the dialog in pixels
       yPos         = 20            # y position of the dialog in pixels
       width        = 230           # width  of the dialog in pixels (0: default)
       height       = 445           # height of the dialog in pixels (0: default)
       showHint     = off           # allowed: 'on' or 'off'
       showToolTips = on            # allowed: 'on' or 'off'
       logMode      = off           # allowed: 'on' or 'off'
       browserPath  = default       # allowed: 'default' or path to browser
    
    [LOGGING]
       onlFile      = log.txt       # name of file for normal logging
       dbgFile      = log.txt       # name of file for debug logging
       errFile      = log.txt       # name of file for error logging
       maxLogLen    = 50            # max. length of files in kByte (if longer: -> *.bak)
       onlChannels  = gnl cns       # allowed: 'ctl' 'mem' 'gnl' 'hgh' 'med' 'low' 'all' 'cns'
       dbgChannels  =               # allowed: 'ctl' 'mem' 'gnl' 'hgh' 'med' 'low' 'all' 'cns'
       errChannels  = all cns       # allowed: 'ctl' 'mem' 'gnl' 'hgh' 'med' 'low' 'all' 'cns'
       fileToLog    =               # name of the exclusively logged file

Der Sektionsname muss in eckigen Klammern oberhalb der zugehoerigen Parameter stehen. Leerzeichen und Tabs am Zeilenanfang werden ignoriert.

Trennzeichen zwischen Parameternamen und Parametern koennen in der Klassenvariablen mAssigns definiert werden (z.Zt. Tab, Space und "="). Das Kommentarsymbol wird in mCsAndEol definiert (z.Zt. "#"). Die Werte der Parameter sind grundsaetzlich Strings und muessen ggf. vom Code, der die Klasse verwendet, in andere Typen umgewandelt werden.


Dokumentation der Aufzählungstypen

enum Config::Err
 

Aufzählungswerte:
OK 
FILE_NOT_FOUND 
SECTION_NOT_FOUND 
PAR_NOT_FOUND 
NO_FURTHER_PAR 


Beschreibung der Konstruktoren und Destruktoren

Config::Config  )  [inline]
 

Config::Config const string &  fileName,
Err err
[inline]
 

Config::~Config  )  [inline]
 


Dokumentation der Elementfunktionen

string Config::errToStr  )  const
 

Wandelt Error-Code in String um.

Rückgabe:
String mit dem Text des Error-Codes

Config::Err Config::flush  ) 
 

Schreibt die Konfigurationsdatei neu auf Platte.

Rückgabe:
OK, falls Schreiben des Parameters geklappt hat, sonst FILE_NOT_FOUND

Err Config::getErr  )  const [inline]
 

Config::Err Config::init const string &  fileName  ) 
 

Initialisierungsfunktion wird von allen Konstruktoren aufgerufen.

Parameter:
fileName Name der Initialisierungsdatei
Rückgabe:
OK, falls Oeffnen der Datei geklappt hat, sonst FILE_NOT_FOUND

Config::Err Config::nextParameter string &  parName,
string &  value
 

Holt naechsten Parameter ab der aktuellen Zeile.

Rückgabewerte:
parName Parametername der naechsten Zeile
value zugehoeriger Parameterwert
Rückgabe:
OK, falls Lesen des Parameters geklappt hat, sonst NO_FURTHER_PAR

void Config::readFile  )  [private]
 

Liest die ganze Konfigurationsdatei in das String-Array mLines ein.

Config::Err Config::readParameter const string &  par,
string &  val,
const string &  section = "",
bool  isStripSpc = true
 

Liest den Parameter parName ein und gibt den Wert in value zurueck.

Wenn section = "", wird ab der aktuellen Zeile gesucht, sonst wird zunaechst die Section ab Dateianfang gesucht.

Parameter:
par der zu lesende Parameter
section Name der Sektion, in dem der Parameter gesucht wird
Rückgabewerte:
val der Wert des Parameters (grundsaetzlich ein String)
Parameter:
isStripSpc wenn true, werden endstaendige Leerzeichen des Parameters entfernt
Rückgabe:
OK, falls Lesen des Parameters geklappt hat, sonst PAR_NOT_FOUND

void Config::remove  )  [inline]
 

Config::Err Config::seekSection const string &  sectionName  ) 
 

Sucht von Beginn der Konfigurationsdatei an nach Sektion sectionName.

Der Filepointer wird dann an diese Stelle gesetzt.

Parameter:
sectionName Name der zu suchenden Sektion
Rückgabe:
OK, falls Sektion gefunden, sonst SECTION_NOT_FOUND

Config::Err Config::setParameter const string &  setPar,
const string &  setVal,
unsigned int &  i
[private]
 

Beschreibt den Parameter setPar mit Wert setVal.

Es wird davon ausgegangen, dass i bereits eine Zeile in der passenden Sektion ist und dann zeilenweise nach dem Parameter gesucht.

Parameter:
setPar zu schreibender Parameter
setVal zu schreibender Wert
Rückgabewerte:
i Nummer der Zeile, in der der Parameter steht
Rückgabe:
OK, falls Schreiben des Parameters geklappt hat, sonst PAR_NOT_FOUND

void Config::splitLine string  line,
string &  space,
string &  sectionName,
string &  parName,
string &  assignOp,
string &  value,
string &  comment
[private]
 

Trennt eine Konfigurationszeile in ihre Bestandteile auf.

Parameter:
line zu trennende Zeile
Rückgabewerte:
space alle Zeichen vor dem Parameter
sectionName Sektionsname (falls die Zeile einen solchen enthaelt), ohne die eckigen Klammern
parName Parametername, von seinem ersten bis zum letzten Buchstaben
assignOp Zuweisungsoperator, alle Zeichen zwischen dem letzten Buchstaben des Parameters und dem ersten Buchstaben des Wertes
value Wert des Parameters, Zeichen ab dem ersten Nicht-Space-Zeichen nach dem Zuweisungsoperator bis zum Zeilenende bzw. Kommentarzeichen
comment Kommentar, alle Zeichen ab dem Kommentarsymbol bis zum Ende der Zeile
Hier ein Beispiel (die "^" zeigen jeweils auf das erste und letzte Zeichen des Bestandteils):
          Parameter   =    Wert       # Kommentar
    ^    ^^       ^^      ^^         ^^  
    space  parName assignOp   value      comment
   
    oder
   
          [sektion]  Kommentar
    ^    ^ ^     ^ ^
    space  section comment

Config::Err Config::writeParameter const string &  setPar,
const string &  setVal,
const string &  setSection = ""
 

Weist dem Parameter setPar in der Sektion setSection den Wert setVal zu.

Sonst wird an der Datei nichts veraendert, Kommentare etc. bleiben erhalten. Ausnahme: Wenn der Platz zwischen Parametername und Kommentar nicht reicht, wird der Kommentar nach rechts verschoben.

Beim ersten Aufruf wird die ganze Datei in mLines[] eingelesen, weitere Aufrufe arbeiten dann auf diesem Puffer. Er wird im Destruktor oder mit flush() dann wieder geschrieben.

Wenn setSection = "", wird ab der aktuellen Zeilenposition direkt nach dem Parameter gesucht.

Parameter:
setPar Name des zu schreibenden Parameters
setVal Wert des zu schreibenden Parameters
setSection Sektion, in der der zu schreibende Parameter steht
Rückgabe:
OK, falls Schreiben des Parameters geklappt hat, sonst SECTION_NOT_FOUND


Dokumentation der Datenelemente

string Config::mAssigns [private]
 

Liste von Zuweisungszeichen.

char Config::mCs [private]
 

Kommentarsymbol.

string Config::mCsAndEol [private]
 

String mit Kommentar und EOL-Symbol.

Err Config::mErr [private]
 

Fehlercode.

fstream Config::mFile [private]
 

zu oeffnende Konfigurationsdatei

string Config::mFileName [private]
 

Name der Konfigurationsdatei.

bool Config::mIsFileRead [private]
 

Flag, ob Datei schon gelesen.

vector<string> Config::mLines [private]
 

gepufferte Datei

string Config::mParName [private]
 

Name des Parameters.

string Config::mSection [private]
 

Name der Sektion.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon Oct 10 19:54:31 2005 für Almetare von  doxygen 1.4.1