From f503e85507dedf63752711bd4583ef3d98307b88 Mon Sep 17 00:00:00 2001 From: peri4 Date: Mon, 24 Apr 2023 19:03:36 +0300 Subject: [PATCH] PIValueTree::childValue method --- libs/main/types/pivaluetree.cpp | 10 ++++++++++ libs/main/types/pivaluetree.h | 1 + 2 files changed, 11 insertions(+) diff --git a/libs/main/types/pivaluetree.cpp b/libs/main/types/pivaluetree.cpp index b88f0914..ade43489 100644 --- a/libs/main/types/pivaluetree.cpp +++ b/libs/main/types/pivaluetree.cpp @@ -119,6 +119,16 @@ void PIValueTree::applyValues(const PIValueTree & root, bool recursive) { } +PIVariant PIValueTree::childValue(const PIString & child_name, const PIVariant & default_value, bool * exists) const { + if (!contains(child_name)) { + if (exists) *exists = false; + return default_value; + } + return child(child_name).value(); + if (exists) *exists = true; +} + + bool PIValueTree::contains(const PIString & name) const { if (_is_null) return true; for (const auto & c: _children) diff --git a/libs/main/types/pivaluetree.h b/libs/main/types/pivaluetree.h index 816ae708..f85aefb5 100644 --- a/libs/main/types/pivaluetree.h +++ b/libs/main/types/pivaluetree.h @@ -92,6 +92,7 @@ public: const PIVector & children() const { return _children; } void clearChildren() { _children.clear(); } + PIVariant childValue(const PIString & child_name, const PIVariant & default_value = PIVariant(), bool * exists = nullptr) const; bool contains(const PIString & name) const; bool contains(const PIStringList & path) const;