diff --git a/src/data.cpp b/src/data.cpp index 8a389a4..e1de3e4 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -209,6 +209,14 @@ bool Value::isMarked(bool parents, bool children) const return false; } +Value Value::ifMarked(bool parents, bool children) const +{ + Value ret; + if(isMarked(parents, children)) + ret = *this; + return ret; +} + void Value::mark(bool v) { if(!desc) diff --git a/src/pvxs/data.h b/src/pvxs/data.h index b94dcee..0122257 100644 --- a/src/pvxs/data.h +++ b/src/pvxs/data.h @@ -508,6 +508,8 @@ public: //! Test if this field is marked as valid/changed bool isMarked(bool parents=true, bool children=false) const; + //! return *this if isMarked()==true, or a !valid() ref. if false. + Value ifMarked(bool parents=true, bool children=false) const; //! Mark this field as valid/changed void mark(bool v=true); //! Remove mark from this field