SO3Engine
SO3UserObjectBindings.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OpenSpace3D
4For the latest info, see http://www.openspace3d.com
5
6Copyright (c) 2012 I-maginer
7
8This program is free software; you can redistribute it and/or modify it under
9the terms of the GNU Lesser General Public License as published by the Free Software
10Foundation; either version 2 of the License, or (at your option) any later
11version.
12
13This program is distributed in the hope that it will be useful, but WITHOUT
14ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public License along with
18this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20http://www.gnu.org/copyleft/lesser.txt
21
22-----------------------------------------------------------------------------
23*/
24
25#ifndef __SO3_USER_OBJECTS_BINDING_H__
26#define __SO3_USER_OBJECTS_BINDING_H__
27
28#include "SO3Any.h"
29
30namespace SO3
31{
32
38class _SO3_Export SUserObjectBindings
39{
40public:
41protected:
42 typedef std::unordered_map<std::string, SAny> UserObjectsMap;
43 typedef UserObjectsMap::iterator UserObjectsMapIterator;
44 typedef UserObjectsMap::const_iterator UserObjectsMapConstIterator;
45
50 {
51 public:
54 protected:
55 private:
56
57 public:
61 Attributes() : mpUserObjectsMap(NULL)
62 {
63 }
64
69 {
70 if (mpUserObjectsMap != NULL)
71 SO3_SAFE_DELETE(mpUserObjectsMap);
72 }
73 protected:
74 private:
75 };
76private:
77 static SAny msEmptyAny;
78 mutable Attributes* mAttributes;
79
80public:
85
89 virtual ~SUserObjectBindings();
90
99 void SetUserAny(const SAny& anything);
100
104 const SAny& GetUserAny() const;
105
115 void SetUserAny(const std::string& key, const SAny& anything);
116
123 const SAny& GetUserAny(const std::string& key) const;
124
129 void EraseUserAny(const std::string& key);
130
134 void Clear() const;
135
136 /*
137 Returns empty user any object.
138 */
139 static const SAny& GetEmptyUserAny()
140 {
141 return msEmptyAny;
142 }
143protected:
144private:
145};
146
147}
148
149#endif
SAny mKeylessAny
Will hold key less associated user object for fast access.
UserObjectsMap * mpUserObjectsMap
Will hold a map between user keys to user objects.
std::unordered_map< std::string, SAny > UserObjectsMap
UserObjectsMap::const_iterator UserObjectsMapConstIterator
static const SAny & GetEmptyUserAny()
UserObjectsMap::iterator UserObjectsMapIterator