Ignore:
Timestamp:
01/06/2007 12:18:45 AM (13 years ago)
Author:
art
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/src/Property.cpp

    r1 r18  
    1616#include "Property.h" 
    1717#include "Exception.h" 
     18#include "Log.h" 
    1819 
    1920namespace nrEngine { 
    2021 
    2122        //---------------------------------------------------------------------------------- 
    22         Property::Property() :mUserData(NULL), mHasNoValue(true) 
     23        Property::Property() :mUserData(NULL) 
    2324        { 
    2425 
     
    2627 
    2728        //---------------------------------------------------------------------------------- 
    28         Property::Property(const std::string& name) : mName(name), mUserData(NULL), mHasNoValue(true) 
     29        Property::Property(const std::string& name) : mName(name), mFullName(name), mUserData(NULL) 
    2930        { 
    3031 
     
    3233 
    3334        //---------------------------------------------------------------------------------- 
    34         Property::Property (const std::string& name, const boost::any& value) : mName(name), mValue(value), mUserData(NULL), mHasNoValue(false) 
     35        Property::Property (const std::string& name, const boost::any& value) : mName(name), mFullName(name), mValue(value), mUserData(NULL) 
    3536        { 
    3637 
     
    3839 
    3940        //---------------------------------------------------------------------------------- 
    40         Property::Property(const Property& p):mName(p.getName()), mValue(p.getValue()), mUserData(p.mUserData), mHasNoValue(p.mHasNoValue) 
     41        Property::Property(const Property& p):mName(p.getName()), mFullName(p.getFullName()), mValue(p.getValue()), mUserData(p.mUserData) 
    4142        { 
    4243 
     
    5354        bool Property::operator==(const Property& p) 
    5455        { 
    55                 return (p.getName() == mName && p.getValue().type() == mValue.type()); 
     56                return (p.getFullName() == mFullName && p.getValue().type() == mValue.type()); 
    5657        } 
    5758 
    5859         
    5960        //---------------------------------------------------------------------------------- 
    60         PropertyList& PropertyList::operator << (const Property& p) 
     61        PropertyList& PropertyList::operator, (const Property& p) 
    6162        { 
    6263                push_back(p); 
     
    6566 
    6667        //---------------------------------------------------------------------------------- 
    67         PropertyList& PropertyList::operator >> ( Property& p) 
     68        PropertyList& PropertyList::operator, ( Property& p) 
    6869        { 
    6970                p = front(); 
     
    8384 
    8485        //---------------------------------------------------------------------------------- 
     86        /*const Property& PropertyList::operator[](const std::string& name) 
     87        { 
     88                // search for the key 
     89                for (const_iterator it = begin(); it != end(); it++) if (it->getName() == name) return *it; 
     90 
     91                // we could not find it, so create it and return reference 
     92                push_back(Property(name)); 
     93                for (const_iterator it = begin(); it != end(); it++) if (it->getName() == name) return *it; 
     94                 
     95                // ok it should be there, so exception 
     96                NR_EXCEPT(UNKNOWN_ERROR, "This is a BUG! Contact Author!", "PropertyList::operator[]"); 
     97        }*/ 
     98         
     99        //---------------------------------------------------------------------------------- 
    85100        Property& PropertyList::operator[](const std::string& name) 
    86101        { 
     
    89104 
    90105                // 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[]"); 
     106                Property p(name); 
     107                push_back(p); 
     108 
     109                // some debug info 
     110                NR_Log(Log::LOG_ENGINE, Log::LL_DEBUG, "Property: Initialize new property '%s'", name.c_str()); 
     111 
     112                return back(); 
     113        } 
     114 
     115        //---------------------------------------------------------------------------------- 
     116        const Property& PropertyList::operator[](const std::string& name) const 
     117        { 
     118                // search for the key 
     119                for (const_iterator it = begin(); it != end(); it++) if (it->getName() == name) return *it; 
     120 
     121                // we could not find it, so error, because we can not add new elements to const 
     122                NR_EXCEPT(UNKNOWN_ERROR, "const PropertyList can not add new elements", "PropertyList::operator[]"); 
    96123        } 
    97124 
Note: See TracChangeset for help on using the changeset viewer.