Crazy Eddies GUI System  0.6.2
CEGUIPropertySet.h
1 /***********************************************************************
2  filename: CEGUIPropertySet.h
3  created: 21/2/2004
4  author: Paul D Turner
5 
6  purpose: Defines interface for the PropertySet class
7 *************************************************************************/
8 /***************************************************************************
9  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files (the
13  * "Software"), to deal in the Software without restriction, including
14  * without limitation the rights to use, copy, modify, merge, publish,
15  * distribute, sublicense, and/or sell copies of the Software, and to
16  * permit persons to whom the Software is furnished to do so, subject to
17  * the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  * OTHER DEALINGS IN THE SOFTWARE.
29  ***************************************************************************/
30 #ifndef _CEGUIPropertySet_h_
31 #define _CEGUIPropertySet_h_
32 
33 #include "CEGUIBase.h"
34 #include "CEGUIString.h"
35 #include "CEGUIIteratorBase.h"
36 #include "CEGUIProperty.h"
37 #include <map>
38 
39 
40 #if defined(_MSC_VER)
41 # pragma warning(push)
42 # pragma warning(disable : 4251)
43 #endif
44 
45 // Start of CEGUI namespace section
46 namespace CEGUI
47 {
52 class CEGUIEXPORT PropertySet : public PropertyReceiver
53 {
54 public:
59  PropertySet(void) {}
60 
61 
66  virtual ~PropertySet(void) {}
67 
68 
82  void addProperty(Property* property);
83 
84 
95  void removeProperty(const String& name);
96 
97 
105  void clearProperties(void);
106 
107 
118  bool isPropertyPresent(const String& name) const;
119 
120 
133  const String& getPropertyHelp(const String& name) const;
134 
135 
148  String getProperty(const String& name) const;
149 
150 
167  void setProperty(const String& name, const String& value);
168 
169 
181  bool isPropertyDefault(const String& name) const;
182 
183 
194  String getPropertyDefault(const String& name) const;
195 
196 private:
197  typedef std::map<String, Property*, String::FastLessCompare> PropertyRegistry;
198  PropertyRegistry d_properties;
199 
200 
201 public:
202  /*************************************************************************
203  Iterator stuff
204  *************************************************************************/
205  typedef ConstBaseIterator<PropertyRegistry> Iterator;
206 
212  Iterator getIterator(void) const;
213 };
214 
215 } // End of CEGUI namespace section
216 
217 #if defined(_MSC_VER)
218 # pragma warning(pop)
219 #endif
220 
221 #endif // end of guard _CEGUIPropertySet_h_