#include "pipropertystorage.h" bool PIPropertyStorage::isPropertyExists(const PIString & _name) const { for (uint i = 0; i < props.size(); ++i) if (props[i].name == _name) return true; return false; } void PIPropertyStorage::addProperty(const PIPropertyStorage::Property & p) { for (uint i = 0; i < props.size(); ++i) if (props[i].name == p.name) { props[i] = p; return; } props << p; } void PIPropertyStorage::removeProperty(const PIString & _name) { for (uint i = 0; i < props.size(); ++i) if (props[i].name == _name) { props.remove(i); return; } } void PIPropertyStorage::removePropertiesByFlag(int flag) { for (int i = 0; i < props.size_s(); ++i) if ((props[i].flags & flag) == flag) { props.remove(i); --i; } } void PIPropertyStorage::updateProperties(const PIVector & properties_, int flag_ignore) { PIMap values; piForeachC(Property & p, props) if (((p.flags & flag_ignore) != flag_ignore) || (flag_ignore == 0)) values[p.name] = p.value; props = properties_; for (uint i = 0; i < props.size(); ++i) { Property & p(props[i]); if (values.contains(p.name)) { PIVariant pv = values[p.name]; if (pv.type() == p.value.type()) p.value = pv; } } } PIPropertyStorage::Property PIPropertyStorage::propertyByName(const PIString & name) const { piForeachC(Property & p, props) if (p.name == name) return p; return Property(); } PIVariant PIPropertyStorage::propertyValueByName(const PIString & name) const { piForeachC(Property & p, props) if (p.name == name) return p.value; return PIVariant(); } void PIPropertyStorage::setPropertyValue(const PIString & name, const PIVariant & value) { for (uint i = 0; i < props.size(); ++i) if (props[i].name == name) { props[i].value = value; return; } } void PIPropertyStorage::setPropertyComment(const PIString & name, const PIString & comment) { for (uint i = 0; i < props.size(); ++i) if (props[i].name == name) { props[i].comment = comment; return; } } void PIPropertyStorage::setPropertyFlags(const PIString & name, int flags) { for (uint i = 0; i < props.size(); ++i) if (props[i].name == name) { props[i].flags = flags; return; } } PIPropertyStorage::Property & PIPropertyStorage::operator[](const PIString & name) { piForeach (Property & p, props) if (p.name == name) return p; addProperty(name, ""); return props.back(); } const PIPropertyStorage::Property PIPropertyStorage::operator[](const PIString & name) const { piForeachC (Property & p, props) if (p.name == name) return p; return Property(); }