Almetare  1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
Config Klassenreferenz

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

#include <confg.h>

Öffentliche Typen

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

Öffentliche Methoden

 Config (const string &fileName, Err &err)
 
Err init (const string &fileName)
 Initialisierungsfunktion wird von allen Konstruktoren aufgerufen. Mehr ...
 
Err getErr () const
 
string errToStr () const
 Wandelt Error-Code in String um. Mehr ...
 
Err seekSection (const string &section)
 Sucht von Beginn der Konfigurationsdatei an nach Sektion sectionName. Mehr ...
 
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. Mehr ...
 
Err nextParameter (string &par, string &val)
 Holt naechsten Parameter ab der aktuellen Zeile. Mehr ...
 
Err writeParameter (const string &par, const string &val, const string &section="")
 Weist dem Parameter setPar in der Sektion setSection den Wert setVal zu. Mehr ...
 
Err flush ()
 Schreibt die Konfigurationsdatei neu auf Platte. Mehr ...
 
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. Mehr ...
 
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. Mehr ...
 

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 Elementfunktionen

◆ errToStr()

string Config::errToStr ( ) const

Wandelt Error-Code in String um.

Rückgabe
String mit dem Text des Error-Codes

◆ flush()

Config::Err Config::flush ( )

Schreibt die Konfigurationsdatei neu auf Platte.

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

◆ init()

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

Initialisierungsfunktion wird von allen Konstruktoren aufgerufen.

Parameter
fileNameName der Initialisierungsdatei
Rückgabe
OK, falls Oeffnen der Datei geklappt hat, sonst FILE_NOT_FOUND

◆ nextParameter()

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

Holt naechsten Parameter ab der aktuellen Zeile.

Rückgabewerte
parNameParametername der naechsten Zeile
valuezugehoeriger Parameterwert
Rückgabe
OK, falls Lesen des Parameters geklappt hat, sonst NO_FURTHER_PAR

◆ readParameter()

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
parder zu lesende Parameter
sectionName der Sektion, in dem der Parameter gesucht wird
Rückgabewerte
valder Wert des Parameters (grundsaetzlich ein String)
Parameter
isStripSpcwenn true, werden endstaendige Leerzeichen des Parameters entfernt
Rückgabe
OK, falls Lesen des Parameters geklappt hat, sonst PAR_NOT_FOUND

◆ seekSection()

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
sectionNameName der zu suchenden Sektion
Rückgabe
OK, falls Sektion gefunden, sonst SECTION_NOT_FOUND

◆ setParameter()

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
setParzu schreibender Parameter
setValzu schreibender Wert
Rückgabewerte
iNummer der Zeile, in der der Parameter steht
Rückgabe
OK, falls Schreiben des Parameters geklappt hat, sonst PAR_NOT_FOUND

◆ splitLine()

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
linezu trennende Zeile
Rückgabewerte
spacealle Zeichen vor dem Parameter
sectionNameSektionsname (falls die Zeile einen solchen enthaelt), ohne die eckigen Klammern
parNameParametername, von seinem ersten bis zum letzten Buchstaben
assignOpZuweisungsoperator, alle Zeichen zwischen dem letzten Buchstaben des Parameters und dem ersten Buchstaben des Wertes
valueWert des Parameters, Zeichen ab dem ersten Nicht-Space-Zeichen nach dem Zuweisungsoperator bis zum Zeilenende bzw. Kommentarzeichen
commentKommentar, 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

◆ writeParameter()

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
setParName des zu schreibenden Parameters
setValWert des zu schreibenden Parameters
setSectionSektion, in der der zu schreibende Parameter steht
Rückgabe
OK, falls Schreiben des Parameters geklappt hat, sonst SECTION_NOT_FOUND

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: