diff --git a/libs/openFrameworks/types/ofParameter.cpp b/libs/openFrameworks/types/ofParameter.cpp index bcf2b7167db..e24241e55d5 100644 --- a/libs/openFrameworks/types/ofParameter.cpp +++ b/libs/openFrameworks/types/ofParameter.cpp @@ -170,8 +170,12 @@ void ofParameter::setSerializable(bool serializable) { obj->serializable = serializable; } +std::shared_ptr ofParameter::getSharedPtr() const { + return std::make_shared>(*this); +} + std::shared_ptr ofParameter::newReference() const { - return std::make_shared>(*this); + return getSharedPtr(); } void ofParameter::setParent(ofParameterGroup & parent) { diff --git a/libs/openFrameworks/types/ofParameter.h b/libs/openFrameworks/types/ofParameter.h index 0869cc7b1d1..5e463f5f291 100644 --- a/libs/openFrameworks/types/ofParameter.h +++ b/libs/openFrameworks/types/ofParameter.h @@ -76,7 +76,10 @@ class ofAbstractParameter { virtual bool isSerializable() const = 0; virtual bool isReadOnly() const = 0; + + [[deprecated("use getSharedPtr")]] virtual std::shared_ptr newReference() const = 0; + virtual std::shared_ptr getSharedPtr() const = 0; virtual bool isReferenceTo(const ofAbstractParameter & other) const; @@ -253,7 +256,10 @@ class ofParameterGroup : public ofAbstractParameter { void setSerializable(bool serializable); bool isSerializable() const; bool isReadOnly() const; + + [[deprecated("use getSharedPtr")]] std::shared_ptr newReference() const; + std::shared_ptr getSharedPtr() const; void setParent(ofParameterGroup & parent); @@ -633,7 +639,10 @@ class ofParameter : public ofAbstractParameter { bool isInit() const; void setSerializable(bool serializable); + + [[deprecated("use getSharedPtr")]] std::shared_ptr newReference() const; + std::shared_ptr getSharedPtr() const; void setParent(ofParameterGroup & _parent); @@ -1047,6 +1056,11 @@ void ofParameter::makeReferenceTo(ofParameter & mo template std::shared_ptr ofParameter::newReference() const { + return getSharedPtr(); +} + +template +std::shared_ptr ofParameter::getSharedPtr() const { return std::make_shared>(*this); } @@ -1114,7 +1128,10 @@ class ofParameter : public ofAbstractParameter { void makeReferenceTo(ofParameter & mom); void setSerializable(bool serializable); + + [[deprecated("use getSharedPtr")]] std::shared_ptr newReference() const; + std::shared_ptr getSharedPtr() const; void setParent(ofParameterGroup & _parent); @@ -1189,7 +1206,9 @@ class ofReadOnlyParameter : public ofAbstractParameter { template void removeListener(ListenerClass * listener, ListenerMethod method, int prio = OF_EVENT_ORDER_AFTER_APP); + [[deprecated("use getSharedPtr")]] std::shared_ptr newReference() const; + std::shared_ptr getSharedPtr() const; template std::unique_ptr newListener(Args... args); @@ -1550,6 +1569,11 @@ inline void ofReadOnlyParameter::fromString(const std::st template std::shared_ptr ofReadOnlyParameter::newReference() const { + return getSharedPtr(); +} + +template +std::shared_ptr ofReadOnlyParameter::getSharedPtr() const { return std::make_shared>(*this); } diff --git a/libs/openFrameworks/types/ofParameterGroup.cpp b/libs/openFrameworks/types/ofParameterGroup.cpp index 63e60d341ff..f3b2c5f84c1 100644 --- a/libs/openFrameworks/types/ofParameterGroup.cpp +++ b/libs/openFrameworks/types/ofParameterGroup.cpp @@ -5,6 +5,7 @@ ofParameterGroup::ofParameterGroup() : obj(new Value) { } + void ofParameterGroup::add(ofAbstractParameter & parameter) { auto param = parameter.newReference(); auto escaped_name = param->getEscapedName(); @@ -479,7 +480,11 @@ const void * ofParameterGroup::getInternalObject() const { return obj.get(); } -std::shared_ptr ofParameterGroup::newReference() const { +std::shared_ptr ofParameterGroup::newReference() const{ + return getSharedPtr(); +} + +std::shared_ptr ofParameterGroup::getSharedPtr() const{ return std::make_shared(*this); }