Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk: implemented a new kind of ini-parser
this parser first reads the file, and then one can search through without accessing the file anymore

File size: 1.6 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
13#include "base_object.h"
14
15// FORWARD DEFINITION //
16template<class T> class tList;
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 : public BaseObject
23{
24  private:
25    ////////////////////////////////////
26    struct IniEntry
27    {
28      char*              name;
29      char*              value;
30    };
31
32    struct IniSection
33    {
34      char*               name;
35      tList<IniEntry>*    entries;
36    };
37    ////////////////////////////////////
38
39  public:
40    IniParser (const char* filename = NULL);
41    ~IniParser ();
42
43    bool openFile(const char* name);
44
45    bool getSection( const char* sectionName);
46    const char* nextSection();
47
48    bool isOpen() const { return (sections != NULL)?true:false; };
49
50    const char* getVar(const char* entryName, const char* sectionName, const char* defaultValue = "") const;
51    bool nextVar();
52
53    const char* getCurrentName() const { return (currentEntry!=NULL)?currentEntry->name:NULL; };
54    const char* getCurrentValue() const { return (currentEntry!=NULL)?currentEntry->value:NULL; };
55
56    void debug() const;
57
58  private:
59    void deleteSections();
60
61  private:
62    tList<IniSection>*    sections;
63    IniSection*           currentSection;
64    IniEntry*             currentEntry;
65};
66
67#endif /* _INI_PARSER_H */
Note: See TracBrowser for help on using the repository browser.