Pass strings by ref (save copy)
diff --git a/include/rive/artboard.hpp b/include/rive/artboard.hpp index 3dcf69c..2306890 100644 --- a/include/rive/artboard.hpp +++ b/include/rive/artboard.hpp
@@ -122,7 +122,7 @@ bool isTranslucent(const LinearAnimation*) const; bool isTranslucent(const LinearAnimationInstance*) const; - template <typename T = Component> T* find(std::string name) { + template <typename T = Component> T* find(const std::string& name) { for (auto object : m_Objects) { if (object != nullptr && object->is<T>() && object->as<T>()->name() == name) { return reinterpret_cast<T*>(object); @@ -138,11 +138,11 @@ std::string stateMachineNameAt(size_t index) const; LinearAnimation* firstAnimation() const; - LinearAnimation* animation(std::string name) const; + LinearAnimation* animation(const std::string& name) const; LinearAnimation* animation(size_t index) const; StateMachine* firstStateMachine() const; - StateMachine* stateMachine(std::string name) const; + StateMachine* stateMachine(const std::string& name) const; StateMachine* stateMachine(size_t index) const; /// Make an instance of this artboard, must be explictly deleted when no @@ -173,10 +173,10 @@ ArtboardInstance() {} std::unique_ptr<LinearAnimationInstance> animationAt(size_t index); - std::unique_ptr<LinearAnimationInstance> animationNamed(std::string name); + std::unique_ptr<LinearAnimationInstance> animationNamed(const std::string& name); std::unique_ptr<StateMachineInstance> stateMachineAt(size_t index); - std::unique_ptr<StateMachineInstance> stateMachineNamed(std::string name); + std::unique_ptr<StateMachineInstance> stateMachineNamed(const std::string& name); }; } // namespace rive
diff --git a/src/artboard.cpp b/src/artboard.cpp index 91437b0..85302b9 100644 --- a/src/artboard.cpp +++ b/src/artboard.cpp
@@ -478,7 +478,7 @@ return m_Animations.front(); } -LinearAnimation* Artboard::animation(std::string name) const { +LinearAnimation* Artboard::animation(const std::string& name) const { for (auto animation : m_Animations) { if (animation->name() == name) { return animation; @@ -501,7 +501,7 @@ return m_StateMachines.front(); } -StateMachine* Artboard::stateMachine(std::string name) const { +StateMachine* Artboard::stateMachine(const std::string& name) const { for (auto machine : m_StateMachines) { if (machine->name() == name) { return machine; @@ -600,7 +600,7 @@ return la ? std::make_unique<LinearAnimationInstance>(la, this) : nullptr; } -std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationNamed(std::string name) { +std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationNamed(const std::string& name) { auto la = this->animation(name); return la ? std::make_unique<LinearAnimationInstance>(la, this) : nullptr; } @@ -610,7 +610,7 @@ return sm ? std::make_unique<StateMachineInstance>(sm, this) : nullptr; } -std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineNamed(std::string name) { +std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineNamed(const std::string& name) { auto sm = this->stateMachine(name); return sm ? std::make_unique<StateMachineInstance>(sm, this) : nullptr; }