From f38dc2fe3ad7cbda7c48f72bc34c912ea682b562 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 2 Feb 2014 17:39:21 +0000 Subject: [PATCH] Added a DynamicObject::cloneAllProperties() method. --- .../juce_core/containers/juce_DynamicObject.cpp | 14 ++++++++------ modules/juce_core/containers/juce_DynamicObject.h | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/juce_core/containers/juce_DynamicObject.cpp b/modules/juce_core/containers/juce_DynamicObject.cpp index 4dc7e3584f..439a26372f 100644 --- a/modules/juce_core/containers/juce_DynamicObject.cpp +++ b/modules/juce_core/containers/juce_DynamicObject.cpp @@ -83,12 +83,9 @@ void DynamicObject::clear() properties.clear(); } -DynamicObject::Ptr DynamicObject::clone() +void DynamicObject::cloneAllProperties() { - DynamicObject* newCopy = new DynamicObject(); - newCopy->properties = properties; - - for (LinkedListPointer* i = &(newCopy->properties.values);;) + for (LinkedListPointer* i = &(properties.values);;) { if (NamedValueSet::NamedValue* const v = i->get()) { @@ -98,8 +95,13 @@ DynamicObject::Ptr DynamicObject::clone() else break; } +} - return newCopy; +DynamicObject::Ptr DynamicObject::clone() +{ + Ptr d (new DynamicObject (*this)); + d->cloneAllProperties(); + return d; } void DynamicObject::writeAsJSON (OutputStream& out, const int indentLevel, const bool allOnOneLine) diff --git a/modules/juce_core/containers/juce_DynamicObject.h b/modules/juce_core/containers/juce_DynamicObject.h index b10c21292a..b2ba93a305 100644 --- a/modules/juce_core/containers/juce_DynamicObject.h +++ b/modules/juce_core/containers/juce_DynamicObject.h @@ -103,6 +103,9 @@ public: /** Returns the NamedValueSet that holds the object's properties. */ NamedValueSet& getProperties() noexcept { return properties; } + /** Calls var::clone() on all the properties that this object contains. */ + void cloneAllProperties(); + //============================================================================== /** Returns a clone of this object. The default implementation of this method just returns a new DynamicObject