diff --git a/Client/App/include/reflection/reflection.h b/Client/App/include/reflection/reflection.h index ed61eebf..95763fd4 100644 --- a/Client/App/include/reflection/reflection.h +++ b/Client/App/include/reflection/reflection.h @@ -15,13 +15,6 @@ namespace RBX private: virtual void assignIDREF(Reflection::DescribedBase*, const InstanceHandle&) const = 0; - public: - //IIDREF(const IIDREF&); - IIDREF() - { - } - public: - //IIDREF& operator=(const IIDREF&); }; namespace Reflection diff --git a/Client/App/include/util/Handle.h b/Client/App/include/util/Handle.h index 9c4e0c26..bc45932a 100644 --- a/Client/App/include/util/Handle.h +++ b/Client/App/include/util/Handle.h @@ -17,7 +17,11 @@ namespace RBX { } public: - InstanceHandle& operator=(boost::shared_ptr); // possibly just linkTo + InstanceHandle& operator=(boost::shared_ptr object) + { + linkTo(object); + return *this; + } //InstanceHandle& operator=(const InstanceHandle&); bool empty() const; boost::shared_ptr getTarget() const; @@ -42,7 +46,5 @@ namespace RBX bool operatorEqual(const InstanceHandle& other) const; bool operatorLess(const InstanceHandle& other) const; bool operatorGreater(const InstanceHandle& other) const; - public: - ~InstanceHandle() {} }; } diff --git a/Client/App/include/v8datamodel/GlobalSettings.h b/Client/App/include/v8datamodel/GlobalSettings.h index d16fe014..1152bbfc 100644 --- a/Client/App/include/v8datamodel/GlobalSettings.h +++ b/Client/App/include/v8datamodel/GlobalSettings.h @@ -15,7 +15,10 @@ namespace RBX class Item : public NonFactoryProduct { protected: - virtual bool askAddChild(const Instance*) const; + virtual bool askAddChild(const Instance* instance) const + { + return fastDynamicCast(instance) != NULL; + } public: //Item(const Item&); Item(); @@ -26,7 +29,10 @@ namespace RBX static boost::recursive_mutex mutex; //GlobalSettings(const GlobalSettings&); - GlobalSettings(); + GlobalSettings() + { + setName("Global Settings"); + } void loadState(); void saveState(); void eraseSettingsStore(); diff --git a/Client/App/include/v8tree/Instance.h b/Client/App/include/v8tree/Instance.h index b608b50b..172f3c76 100644 --- a/Client/App/include/v8tree/Instance.h +++ b/Client/App/include/v8tree/Instance.h @@ -347,7 +347,6 @@ namespace RBX protected: XmlElement root; public: - //XmlState(const XmlState&); XmlState(); const XmlElement* getData() const; virtual void addState(XmlElement*, Instance&) = 0; @@ -355,6 +354,5 @@ namespace RBX void addParentProperty(Instance&); void addDelete(Instance&); void addProperty(Reflection::Property&); - ~XmlState(); }; } diff --git a/Client/App/include/v8tree/Verb.h b/Client/App/include/v8tree/Verb.h index 18190da1..e7c73bf9 100644 --- a/Client/App/include/v8tree/Verb.h +++ b/Client/App/include/v8tree/Verb.h @@ -16,10 +16,6 @@ namespace RBX public: virtual void setDirty(bool) = 0; virtual bool isDirty() const = 0; - //IDataState(const IDataState&); - IDataState(); - ~IDataState(); - //IDataState& operator=(const IDataState&); }; class Verb : public Debugable @@ -27,8 +23,7 @@ namespace RBX private: const Name& name; VerbContainer* container; - public: - Verb(const Verb&); + protected: Verb(VerbContainer*, const Name&); Verb(VerbContainer*, std::string); @@ -46,8 +41,8 @@ namespace RBX private: std::map verbs; VerbContainer* parent; + public: - VerbContainer(const VerbContainer&); VerbContainer(VerbContainer* parent); virtual ~VerbContainer(); @@ -58,7 +53,5 @@ namespace RBX private: void addVerb(Verb*); void removeVerb(Verb*); - public: - //VerbContainer& operator=(const VerbContainer&); }; } diff --git a/Client/App/include/v8xml/SerializerV2.h b/Client/App/include/v8xml/SerializerV2.h index 0f396b47..87e9380c 100644 --- a/Client/App/include/v8xml/SerializerV2.h +++ b/Client/App/include/v8xml/SerializerV2.h @@ -14,11 +14,6 @@ namespace RBX virtual void announceIDREF(const XmlNameValuePair* valueIDREF, Reflection::DescribedBase* propertyOwner, const IIDREF* idref) = 0; protected: void assign(const IIDREF*, Reflection::DescribedBase*, const InstanceHandle&); - public: - //IReferenceBinder(const IReferenceBinder&); - IReferenceBinder(); - public: - //IReferenceBinder& operator=(const IReferenceBinder&); }; class MergeBinder : public IReferenceBinder @@ -69,12 +64,6 @@ class ArchiveBinder : public RBX::MergeBinder virtual bool processIDREF(const XmlNameValuePair* valueIDREF, RBX::Reflection::DescribedBase* propertyOwner, const RBX::IIDREF* idref); bool resolveIDREF(IDREFBinding binding); virtual bool resolveRefs(); -public: - //ArchiveBinder(const ArchiveBinder&); - ArchiveBinder(); - ~ArchiveBinder(); -public: - ArchiveBinder& operator=(const ArchiveBinder&); }; class SerializerV2 diff --git a/Client/App/v8datamodel/GlobalSettings.cpp b/Client/App/v8datamodel/GlobalSettings.cpp index 20973cf2..17bf8525 100644 --- a/Client/App/v8datamodel/GlobalSettings.cpp +++ b/Client/App/v8datamodel/GlobalSettings.cpp @@ -2,5 +2,12 @@ namespace RBX { + boost::shared_ptr GlobalSettings::singleton() + { + boost::recursive_mutex::scoped_lock lock(mutex); + static boost::shared_ptr sing = Creatable::create(); + + return sing; + } } diff --git a/Client/App/v8tree/Verb.cpp b/Client/App/v8tree/Verb.cpp index 9b13e616..5d9436fe 100644 --- a/Client/App/v8tree/Verb.cpp +++ b/Client/App/v8tree/Verb.cpp @@ -2,6 +2,19 @@ namespace RBX { + VerbContainer::VerbContainer(VerbContainer* parent) + : parent(parent) + { + } + + VerbContainer::~VerbContainer() + { + while (verbs.begin() != verbs.end()) + { + delete verbs.begin()->second; + } + } + void VerbContainer::setVerbParent(VerbContainer* parent) { this->parent = parent; diff --git a/Client/App/v8xml/SerializerV2.cpp b/Client/App/v8xml/SerializerV2.cpp index a0b7bdf1..38a58774 100644 --- a/Client/App/v8xml/SerializerV2.cpp +++ b/Client/App/v8xml/SerializerV2.cpp @@ -51,6 +51,22 @@ namespace RBX else return false; } + + bool MergeBinder::resolveRefs() + { + for (std::vector::iterator iter = deferredIDREFItems.begin(); iter != deferredIDREFItems.end(); iter++) + { + const IIDREF*& idref = iter->idref; + Reflection::DescribedBase*& propertyOwner = iter->propertyOwner; + InstanceHandle& value = iter->value; + + idref->assignIDREF(propertyOwner, value); + } + + deferredIDREFItems.clear(); + + return true; + } } bool ArchiveBinder::resolveRefs() @@ -84,6 +100,22 @@ bool ArchiveBinder::resolveIDREF(IDREFBinding binding) } } +bool ArchiveBinder::processID(const XmlNameValuePair* valueID, RBX::Instance* source) +{ + if (!MergeBinder::processID(valueID, source)) + { + std::string s; + bool success = valueID->getValue(s); + + RBXASSERT(success); + RBXASSERT(idMap.find(s) == idMap.end()); + + idMap[s] = shared_from(source); + } + + return true; +} + bool ArchiveBinder::processIDREF(const XmlNameValuePair* valueIDREF, RBX::Reflection::DescribedBase* propertyOwner, const RBX::IIDREF* idref) { if(!MergeBinder::processIDREF(valueIDREF, propertyOwner, idref))