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