From 4636b48955f669a7abf538d51c3cd039f5a13633 Mon Sep 17 00:00:00 2001 From: alexandre burton Date: Sat, 21 Sep 2024 14:29:06 -0400 Subject: [PATCH 1/2] ofParameter: deprecate newReference() in favour of getSharedPtr() --- libs/openFrameworks/types/ofParameter.cpp | 6 ++++- libs/openFrameworks/types/ofParameter.h | 24 +++++++++++++++++++ .../openFrameworks/types/ofParameterGroup.cpp | 6 ++++- 3 files changed, 34 insertions(+), 2 deletions(-) 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 6dcd27435a8..b27b784d07c 100644 --- a/libs/openFrameworks/types/ofParameter.h +++ b/libs/openFrameworks/types/ofParameter.h @@ -72,7 +72,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; @@ -249,7 +252,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); @@ -593,7 +599,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); @@ -1006,6 +1015,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); } @@ -1073,7 +1087,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); @@ -1148,7 +1165,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); @@ -1509,6 +1528,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 d21952771cd..859ed96ec80 100644 --- a/libs/openFrameworks/types/ofParameterGroup.cpp +++ b/libs/openFrameworks/types/ofParameterGroup.cpp @@ -18,7 +18,7 @@ ofParameterGroup::ofParameterGroup() } void ofParameterGroup::add(ofAbstractParameter & parameter){ - shared_ptr param = parameter.newReference(); + auto param = parameter.getSharedPtr(); const std::string name = param->getEscapedName(); if(obj->parametersIndex.find(name) != obj->parametersIndex.end()){ ofLogWarning() << "Adding another parameter with same name '" << param->getName() << "' to group '" << getName() << "'"; @@ -486,6 +486,10 @@ const void* ofParameterGroup::getInternalObject() const{ } shared_ptr ofParameterGroup::newReference() const{ + return getSharedPtr(); +} + +shared_ptr ofParameterGroup::getSharedPtr() const{ return std::make_shared(*this); } From 76a968a6045a58d45a019c3e9fd67dab02509172 Mon Sep 17 00:00:00 2001 From: alexandre burton Date: Thu, 17 Oct 2024 01:12:38 -0400 Subject: [PATCH 2/2] fully-qualified std::shared_ptr --- libs/openFrameworks/types/ofParameterGroup.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/openFrameworks/types/ofParameterGroup.cpp b/libs/openFrameworks/types/ofParameterGroup.cpp index ff78e765043..f3b2c5f84c1 100644 --- a/libs/openFrameworks/types/ofParameterGroup.cpp +++ b/libs/openFrameworks/types/ofParameterGroup.cpp @@ -480,11 +480,11 @@ const void * ofParameterGroup::getInternalObject() const { return obj.get(); } -shared_ptr ofParameterGroup::newReference() const{ +std::shared_ptr ofParameterGroup::newReference() const{ return getSharedPtr(); } -shared_ptr ofParameterGroup::getSharedPtr() const{ +std::shared_ptr ofParameterGroup::getSharedPtr() const{ return std::make_shared(*this); }