params.c
des Projektes Transfermatrixsimulation.Die in dieser Datei implementierten Funktionen dienen dazu, Parameter aus einer Parameterdatei zu lesen und Parameterdateien zu schreiben. Da jeder Parameter über seinen Namen identifiziert wird, können jederzeit neue Parameter zu einer Parameterdatei hinzugefügt werden, ohne daß alte Programmversionen Probleme mit der Parameterdatei bekommen. Andererseits werden fehlende Parameter in alten Parameterdateien durch Defaultwerte ersetzt, so daß eine neue Programmversion auch alte Parameterdateien sinnvoll verarbeiten kann.
Eine Parameterdatei besteht aus Sektionen, die durch ihren in eckigen Klammern eingeschlossenen Namen gekennzeichnet sind. Darauf folgen die zu dieser Sektion gehörenden Einträge im Format
Name=WertDa Namen, nach denen kein Programm fragt, ignoriert werden, können beliebige Kommentare in die Datei eingefügt werden, solange sie nicht mit einem als Feldnamen verwendeten Wort anfangen. Als Konvention sollten Kommentare jedoch durch ein
#
am Anfang der Zeile gekennzeichnet sein.
Der Quelltext steht in der Datei
/usr/people/deneb/rbund/c/params/params.c
. Zum Deklarieren
der Funktionen im aufrufenden Programm gibt es die Header-Datei
/usr/people/deneb/rbund/c/include/params.h
.
Die Benutzung funktioniert wie folgt: Man ließt einen Parameter durch einen Aufruf wie
SystSize=GetPrivateProfileInt("Run2","Systemgroesse",20,argv[1])ein. Dabei wird angenommen, daß das erste Kommandozeilenargument beim Programmaufruf der Name der Parameterdatei ist. Existiert in der Parameterdatei ein Eintrag
[Run2] Systemgroesse=100so wird
SystSize
den Wert 100 bekommen. Existiert kein
Eintrag des Namens
Systemgroesse
unter der Rubrik [Run2]
, so
wird der angegebene Defaultwert (hier 20) an SystSize
zugewiesen.
Im folgenden ist der gesamte Quelltext der Routinen dokumentiert:
stdio.h, fcntl.h, string.h, unistd.h, errno.h, sys/stat.h, params.h
GetPrivateProfileInt
, Auslesen eines ganzzahligen Parameterwertes
GetPrivateProfileFloat
, Auslesen eines Fließkomma-Parameterwertes
GetPrivateProfileString
, Auslesen einer Parameterzeichenkette
WritePrivateProfileInt
, Schreiben eines ganzzahligen Parameterwertes
WritePrivateProfileFloat
, Schreiben eines Fließkomma-Parameterwertes
WritePrivateProfileString
, Schreiben eines Zeichenketten-Parameters
PositionFile
, Auffinden eines Eintrages in einer Parameterdatei
GetLine
, Einlesen einer Zeile aus einer Datei