Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/shared_lib/src/lib/util/preferences.h @ 7913

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

orxonox/trunk: merged the preferences back to the trunk
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/preferences . -r7233:HEAD
no conflicts… nice work

File size: 2.1 KB
Line 
1/*!
2 * @file proto_singleton.h
3 * @brief Definition of the ... singleton Class
4*/
5
6#ifndef _PREFERENCES_H
7#define _PREFERENCES_H
8
9#include "base_object.h"
10#include "multi_type.h"
11#include "lib/parser/ini_parser/ini_parser.h"
12
13// FORWARD DECLARATION
14
15class IniFilePrefsReader;
16
17typedef struct {
18  std::string name;
19  MultiType value;
20  bool modified;
21} prefItem;
22
23typedef struct {
24  std::string sectionName;
25  std::list<prefItem> items;
26} prefSection ;
27
28
29//! A default singleton class.
30class Preferences : public BaseObject {
31
32 public:
33   virtual ~Preferences(void);
34  /** @returns a Pointer to the only object of this Class */
35   inline static Preferences* getInstance(void) { if (!singletonRef) singletonRef = new Preferences();  return singletonRef; };
36
37   //check if this entry exists
38   bool sectionExists(const std::string& section );
39   bool exists(const std::string& section, const std::string& name);
40
41   void setString(const std::string& section, const std::string& name, const std::string& value, bool dontSetModified = false);
42   void setInt(const std::string& section, const std::string& name, int value, bool dontSetModified = false);
43   void setFloat(const std::string& section, const std::string& name, float value, bool dontSetModified = false);
44   void setMultiType(const std::string& section, const std::string& name, const MultiType& value, bool dontSetModified = false);
45
46   const std::string getString(const std::string& section, const std::string& name, const std::string& defaultValue);
47   int getInt(const std::string& section, const std::string& name, int defaultValue);
48   float getFloat(const std::string& section, const std::string& name, float defaultValue);
49   MultiType getMultiType(const std::string& section, const std::string& name, const MultiType& defaultValue);
50
51   void setUserIni(const std::string& fileName);
52
53   bool save();
54
55   void debug();
56   
57   std::list<std::string> listKeys( const std::string section );
58
59
60 private:
61   Preferences(void);
62   static Preferences* singletonRef;
63
64   std::list<prefSection> data;
65
66   std::list<IniFilePrefsReader*> iniFilePrefsReaders;
67
68   std::string fileName;
69
70};
71
72#endif /* _PREFERENCES_H */
Note: See TracBrowser for help on using the repository browser.