PIValueTree
This commit is contained in:
@@ -29,6 +29,16 @@
|
||||
//! \~russian
|
||||
//!
|
||||
|
||||
const char PIValueTree::attributeArrayType [] = "arrayType" ;
|
||||
const char PIValueTree::attributeArrayMinCount[] = "arrayMinCount";
|
||||
const char PIValueTree::attributeArrayMaxCount[] = "arrayMaxCount";
|
||||
|
||||
const char PIValueTree::attributeMinimum [] = "minimum" ;
|
||||
const char PIValueTree::attributeMaximum [] = "maximum" ;
|
||||
const char PIValueTree::attributeSingleStep [] = "singleStep" ;
|
||||
const char PIValueTree::attributeDecimals [] = "decimals" ;
|
||||
const char PIValueTree::attributePrefix [] = "prefix" ;
|
||||
const char PIValueTree::attributeSuffix [] = "suffix" ;
|
||||
|
||||
|
||||
PIValueTree::PIValueTree() {
|
||||
@@ -40,9 +50,10 @@ PIValueTree::PIValueTree(const PIVariant & v) {
|
||||
}
|
||||
|
||||
|
||||
PIValueTree::PIValueTree(const PIString & n, const PIVariant & v) {
|
||||
PIValueTree::PIValueTree(const PIString & n, const PIVariant & v, const PIVariantMap & a) {
|
||||
setName(n);
|
||||
setValue(v);
|
||||
_attributes = a;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +75,28 @@ void PIValueTree::setValue(const PIVariant & v) {
|
||||
}
|
||||
|
||||
|
||||
void PIValueTree::setAttribute(const PIString & n, const PIVariant & a) {
|
||||
if (_is_null) return;
|
||||
_attributes[n] = a;
|
||||
}
|
||||
|
||||
|
||||
void PIValueTree::mergeAttributes(const PIVariantMap & a) {
|
||||
if (_is_null) return;
|
||||
auto it = a.makeIterator();
|
||||
while (it.next()) {
|
||||
if (!_attributes.contains(it.key()))
|
||||
_attributes.insert(it.key(), it.value());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PIValueTree::setStandardFlag(FlagStandard flag, bool on) {
|
||||
if (on) _flags[Standard] |= flag;
|
||||
else _flags[Standard] &= ~flag;
|
||||
}
|
||||
|
||||
|
||||
bool PIValueTree::contains(const PIString & name) const {
|
||||
if (_is_null) return true;
|
||||
for (const auto & c: _children)
|
||||
|
||||
@@ -35,7 +35,7 @@ class PIP_EXPORT PIValueTree {
|
||||
public:
|
||||
PIValueTree();
|
||||
PIValueTree(const PIVariant & v);
|
||||
PIValueTree(const PIString & n, const PIVariant & v);
|
||||
PIValueTree(const PIString & n, const PIVariant & v, const PIVariantMap & a = PIVariantMap());
|
||||
|
||||
enum FlagsRole {
|
||||
Standard,
|
||||
@@ -51,20 +51,22 @@ public:
|
||||
ArrayResize = 0x1002,
|
||||
};
|
||||
|
||||
static constexpr char attributeArrayType [] = "arrayType" ;
|
||||
static constexpr char attributeArrayMinCount[] = "arrayMinCount";
|
||||
static constexpr char attributeArrayMaxCount[] = "arrayMaxCount";
|
||||
static const char attributeArrayType [];
|
||||
static const char attributeArrayMinCount[];
|
||||
static const char attributeArrayMaxCount[];
|
||||
|
||||
static constexpr char attributeMinimum [] = "minimum" ;
|
||||
static constexpr char attributeMaximum [] = "maximum" ;
|
||||
static constexpr char attributeSingleStep [] = "singleStep" ;
|
||||
static constexpr char attributeDecimals [] = "decimals" ;
|
||||
static constexpr char attributePrefix [] = "prefix" ;
|
||||
static constexpr char attributeSuffix [] = "suffix" ;
|
||||
static const char attributeMinimum [];
|
||||
static const char attributeMaximum [];
|
||||
static const char attributeSingleStep [];
|
||||
static const char attributeDecimals [];
|
||||
static const char attributePrefix [];
|
||||
static const char attributeSuffix [];
|
||||
//static constexpr char attribute[] = "";
|
||||
|
||||
bool isNull() const {return _is_null;}
|
||||
bool isValid() const {return _value.isValid();}
|
||||
bool isArray() const {return _attributes.contains(attributeArrayType);}
|
||||
bool hasChildren() const {return _children.isNotEmpty();}
|
||||
|
||||
const PIString & name() const {return _name;}
|
||||
void setName(const PIString & n);
|
||||
@@ -77,9 +79,13 @@ public:
|
||||
|
||||
const PIVariantMap & attributes() const {return _attributes;}
|
||||
PIVariantMap & attributes() {return _attributes;}
|
||||
void setAttribute(const PIString & n, const PIVariant & a);
|
||||
void mergeAttributes(const PIVariantMap & a);
|
||||
|
||||
PIFlags<FlagStandard> flagsStandard() {return _flags[Standard];}
|
||||
uint flags(FlagsRole role) {return _flags[role];}
|
||||
void setStandardFlag(FlagStandard flag, bool on = true);
|
||||
void setFlags(FlagsRole role, uint value) {_flags[role] = value;}
|
||||
|
||||
const PIVector<PIValueTree> & children() const {return _children;}
|
||||
|
||||
|
||||
@@ -235,6 +235,11 @@ PIVariant::Type PIVariant::typeFromID(uint type_id) {
|
||||
}
|
||||
|
||||
|
||||
uint PIVariant::typeIDFromName(const PIString & tname) {
|
||||
return tname.hash();
|
||||
}
|
||||
|
||||
|
||||
uint PIVariant::typeIDFromType(Type type) {
|
||||
switch (type) {
|
||||
case (PIVariant::pivBool ): return typeID<bool >();
|
||||
|
||||
@@ -739,7 +739,7 @@ public:
|
||||
|
||||
//! \~english Returns type from its name.
|
||||
//! \~russian Возвращает тип из его названия.
|
||||
static uint typeIDFromName(const PIString & tname) {return tname.hash();}
|
||||
static uint typeIDFromName(const PIString & tname);
|
||||
|
||||
//! \~english Returns type ID from standard type.
|
||||
//! \~russian Возвращает ID типа от стандатного типа.
|
||||
|
||||
Reference in New Issue
Block a user