DCMTK
Version 3.6.1 20170228
OFFIS DICOM Toolkit
|
class for reading and evaluating configuration files. More...
Public Member Functions | |
OFConfigFile (FILE *infile, unsigned int maxLevel=OFConfigFile_MaxLevel, char commentChar=OFConfigFile_CommentChar, OFBool orderedMode=OFFalse) | |
constructor. More... | |
virtual | ~OFConfigFile () |
destructor | |
void | loadFile (FILE *infile) |
load configuration file More... | |
const char * | get_keyword (unsigned int level) |
gets the name of the keyword at the specified level in the cursor path. More... | |
const char * | get_value () |
gets the value for the current entry (level 0 keyword). More... | |
OFBool | get_bool_value (OFBool defaultvalue) |
gets the value for the current entry and interprets it as a boolean value. More... | |
OFBool | section_valid (unsigned int level) const |
checks if the cursor points to a valid entry in the config data tree up to the the specified level. More... | |
void | set_section (unsigned int level, const char *key) |
sets cursor to the entry with keyword "key" at the given level. More... | |
void | first_section (unsigned int level) |
sets cursor to the first entry at the given level (without changing the cursor position at higher levels). More... | |
void | next_section (unsigned int level) |
sets cursor to the next entry at the given level (without changing the cursor position at higher levels). More... | |
void | save_cursor () |
puts the current cursor position on a cursor stack. | |
void | restore_cursor () |
restores a previously stored cursor position from the cursor stack. | |
void | select_section (const char *key1, const char *key2=NULL, const char *key3=NULL) |
sets the cursor to a different section. More... | |
const char * | get_entry (const char *key0) |
sets the cursor to the given level 0 keyword and returns the string value assigned to this keyword. More... | |
void | print (STD_NAMESPACE ostream &out) |
print the content of the configuration to an output stream More... | |
Private Member Functions | |
char | read_char (FILE *infile) |
reads the next character from the input file, maintains the current line number and filters out comments. More... | |
char | read_keywordchar (FILE *infile) |
reads the next non-whitespace character from the input file and returns as uppercase character. More... | |
void | read_entry (FILE *infile) |
reads a complete entry from the config file. More... | |
void | store_char (char c) |
writes a character to the string buffer maintained in "buffer". More... | |
OFConfigFile (const OFConfigFile &) | |
private undefined copy constructor | |
OFConfigFile & | operator= (const OFConfigFile &) |
private undefined assignment operator | |
Private Attributes | |
OFStack< OFConfigFileCursor > | stack_ |
stack of cursor positions that can be saved and restored | |
OFConfigFileCursor | cursor_ |
current cursor position | |
OFConfigFileNode * | anchor_ |
anchor to data tree | |
int | isnewline_ |
flag indicating whether newline during file read | |
int | crfound_ |
flag indicating whether CR was read during file read | |
char * | buffer_ |
buffer during file read | |
size_t | bufptr_ |
index into buffer during file read | |
long | bufsize_ |
buffer size during file read | |
unsigned int | maxLevel_ |
depth of tree, i.e. number of entries in array_ | |
char | commentChar_ |
character starting comment lines | |
OFBool | orderedMode_ |
mode flag for reading configuration file. More... | |
class for reading and evaluating configuration files.
An object of this class reads upon construction a text config file and offers methods allowing to browse the configuration data
OFConfigFile::OFConfigFile | ( | FILE * | infile, |
unsigned int | maxLevel = OFConfigFile_MaxLevel , |
||
char | commentChar = OFConfigFile_CommentChar , |
||
OFBool | orderedMode = OFFalse |
||
) |
constructor.
infile | file from which the configuration data is to be read. |
maxLevel | depth of the tree maintained in this config file, default 2 |
commentChar | character to start comment lines, default '#' |
orderedMode | mode flag for processing configuration files. See documentation of member variable orderedMode_ |
|
inline |
sets cursor to the first entry at the given level (without changing the cursor position at higher levels).
Cursor must be valid at the level higher than the one specified. If no section is found the cursor becomes invalid at the specified level. The cursor always becomes invalid at all levels lower than specified.
level | cursor level |
gets the value for the current entry and interprets it as a boolean value.
The keywords "yes", "no", "on", "off", "1", "0", "true" and false" are recognised in upper, lower and mixed case. If the value is different from any recognised keyword, the specified default is returned Cursor must point to a valid entry (i.e. be valid at level 0)
defaultvalue | default to be returned if no keyword is recognised of if the cursor is invalid. |
const char* OFConfigFile::get_entry | ( | const char * | key0 | ) |
sets the cursor to the given level 0 keyword and returns the string value assigned to this keyword.
key0 | level 0 keyword |
const char* OFConfigFile::get_keyword | ( | unsigned int | level | ) |
gets the name of the keyword at the specified level in the cursor path.
Cursor must be valid at the specified level.
level | cursor level |
const char* OFConfigFile::get_value | ( | ) |
gets the value for the current entry (level 0 keyword).
Cursor must point to a valid entry (i.e. be valid at level 0)
void OFConfigFile::loadFile | ( | FILE * | infile | ) |
load configuration file
infile | configuration file, must already be open for reading. |
|
inline |
sets cursor to the next entry at the given level (without changing the cursor position at higher levels).
Cursor must be valid at the level specified. If no section is found the cursor becomes invalid at the specified level. The cursor always becomes invalid at all levels lower than specified.
level | cursor level |
void OFConfigFile::print | ( | STD_NAMESPACE ostream & | out | ) |
print the content of the configuration to an output stream
out | output stream to print to |
|
private |
reads the next character from the input file, maintains the current line number and filters out comments.
infile | the file to be read |
|
private |
reads a complete entry from the config file.
An entry can either be a section heading or an entry of the form key=value. The entry is inserted into the config data tree managed by this object.
infile | the file to be read |
|
private |
reads the next non-whitespace character from the input file and returns as uppercase character.
infile | the file to be read |
|
inline |
checks if the cursor points to a valid entry in the config data tree up to the the specified level.
level | tree level (0 for leaf) |
void OFConfigFile::select_section | ( | const char * | key1, |
const char * | key2 = NULL , |
||
const char * | key3 = NULL |
||
) |
sets the cursor to a different section.
This "shortcut" method allows to specify multiple section levels at the same time. The cursor becomes invalid when the section is not found or if parameters for more level then present in the tree are specified.
key1 | level 1 section key, i.e. [KEY] |
key2 | level 2 section key, i.e. [[KEY]]. If omitted, section 2 remains unchanged. |
key2 | level 3 section key, i.e. [[[KEY]]]. If omitted, section 3 remains unchanged. |
|
inline |
sets cursor to the entry with keyword "key" at the given level.
Cursor must be valid at the level higher than the one specified. If the keyword exists more than once, the first occurance is found. If the keyword does not exist, the cursor becomes invalid at the specified level. The cursor always becomes invalid at all levels lower than specified.
level | cursor level |
key | key value |
|
private |
writes a character to the string buffer maintained in "buffer".
Automatically resizes buffer if necessary.
c | character to be stored |
|
private |
mode flag for reading configuration file.
If false, new entries to the tree containing the configuration file are just appended and not sorted. This allows multiple entries with the same keyword to be present, only the first of which will be found by search-by-keyword methods such as set_section, select_section or get_entry. In ordered mode, the tree is maintained in sorted order and a new entry will replace an older entry with identical keyword. This permits multiple configuration files to "overlay" each other but is somewhat slower when reading the configuration file.