source: nrEngine/src/Property.cpp @ 1

Revision 1, 3.5 KB checked in by art, 13 years ago (diff)
Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13//----------------------------------------------------------------------------------
14// Includes
15//----------------------------------------------------------------------------------
16#include "Property.h"
17#include "Exception.h"
18
19namespace nrEngine {
20
21        //----------------------------------------------------------------------------------
22        Property::Property() :mUserData(NULL), mHasNoValue(true)
23        {
24
25        }
26
27        //----------------------------------------------------------------------------------
28        Property::Property(const std::string& name) : mName(name), mUserData(NULL), mHasNoValue(true)
29        {
30
31        }
32
33        //----------------------------------------------------------------------------------
34        Property::Property (const std::string& name, const boost::any& value) : mName(name), mValue(value), mUserData(NULL), mHasNoValue(false)
35        {
36
37        }
38
39        //----------------------------------------------------------------------------------
40        Property::Property(const Property& p):mName(p.getName()), mValue(p.getValue()), mUserData(p.mUserData), mHasNoValue(p.mHasNoValue)
41        {
42
43        }
44
45        //----------------------------------------------------------------------------------
46        Property& Property::operator=(const boost::any& val)
47        {
48                mValue = val;
49                return *this;
50        }
51
52        //----------------------------------------------------------------------------------
53        bool Property::operator==(const Property& p)
54        {
55                return (p.getName() == mName && p.getValue().type() == mValue.type());
56        }
57
58       
59        //----------------------------------------------------------------------------------
60        PropertyList& PropertyList::operator << (const Property& p)
61        {
62                push_back(p);
63                return *this;
64        }
65
66        //----------------------------------------------------------------------------------
67        PropertyList& PropertyList::operator >> ( Property& p)
68        {
69                p = front();
70                pop_front();
71                return *this;
72        }
73
74        //----------------------------------------------------------------------------------
75        bool PropertyList::exists(const std::string& name) const
76        {
77                // search for the key
78                const_iterator it = begin();
79                for (; it != end(); it++)
80                        if (it->getName() == name) return true;
81                return false;
82        }
83
84        //----------------------------------------------------------------------------------
85        Property& PropertyList::operator[](const std::string& name)
86        {
87                // search for the key
88                for (iterator it = begin(); it != end(); it++) if (it->getName() == name) return *it;
89
90                // we could not find it, so create it and return reference
91                push_back(Property(name));
92                for (iterator it = begin(); it != end(); it++) if (it->getName() == name) return *it;
93               
94                // ok it should be there, so exception
95                NR_EXCEPT(UNKNOWN_ERROR, "This is a BUG! Contact Author!", "PropertyList::operator[]");
96        }
97
98};
99
Note: See TracBrowser for help on using the repository browser.