Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/util/ini_parser.h @ 5937

Last change on this file since 5937 was 5936, checked in by bensch, 19 years ago

orxonox/trunk: some fixes, but still some strange seg-faults in the IniParser/GuiExec-combination :(

File size: 2.5 KB
Line 
1/*!
2 * @file ini_parser.h
3 * A small ini file parser
4 *
5 * Can be used to find a defined [Section] in an ini file and get the VarName = Value entries
6 */
7
8#ifndef _INI_PARSER_H
9#define _INI_PARSER_H
10
11#define PARSELINELENGHT     512       //!< how many chars to read at once
12#ifndef NULL
13 #define NULL 0x0                     //!< NULL
14#endif
15
16#include <list>
17
18//! ini-file parser
19/**
20 * This class can be used to load an initializer file and parse it's contents for variablename=value pairs.
21 */
22class IniParser
23{
24  private:
25    ////////////////////////////////////
26    //! a struct for Entries in the Parser's File's Sections
27    struct IniEntry
28    {
29      char*              name;     //!< name of a given Entry
30      char*              value;    //!< value of a given Entry
31    };
32    //! a struct for Sections in the Parser's file
33    struct IniSection
34    {
35      char*               name;    //!< name of a given section
36      std::list<IniEntry> entries; //!< a list of entries for this section
37    };
38    ////////////////////////////////////
39
40  public:
41    IniParser (const char* filename = NULL);
42    ~IniParser ();
43
44    bool readFile(const char* fileName);
45    bool writeFile(const char* fileName) const;
46
47    bool addSection(const char* sectionName);
48    bool getSection(const char* sectionName);
49
50    /** @returns true if the file is opened, false otherwise*/
51    bool isOpen() const { return (this->fileName != NULL)? true : false; };
52
53    void firstSection();
54    const char* nextSection();
55
56    /** @returns the fileName we have opened. */
57    const char* getFileName() const { return this->fileName; };
58
59    bool addVar(const char* entryName, const char* value, const char* sectionName = NULL);
60    const char* getVar(const char* entryName, const char* sectionName, const char* defaultValue = "") const;
61
62    void firstVar();
63    bool nextVar();
64
65    const char* getCurrentSection() const;
66    const char* getCurrentName() const;
67    const char* getCurrentValue() const;
68
69    void debug() const;
70
71
72  private:
73    void deleteSections();
74    void setFileName(const char* fileName);
75
76  private:
77    char*                            fileName;        //!< The name of the File that was parsed.
78    std::list<IniSection>            sections;        //!< a list of all stored Sections of the Parser
79    std::list<IniSection>::iterator  currentSection;  //!< the current selected Section
80    std::list<IniEntry>::iterator    currentEntry;    //!< the current selected entry (in currentSection)
81};
82
83#endif /* _INI_PARSER_H */
Note: See TracBrowser for help on using the repository browser.