git-svn-id: svn://db.shs.com.ru/pip@854 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:

View File

@@ -30,7 +30,7 @@
/** /**
* @brief Key-value storage, based on PIVector with PIPropertyStorage::Property elements. Each element in vector * @brief Key-value storage, based on PIVector with PIPropertyStorage::Property elements. Each element in vector
* contains unique name and you can identify property by name with propertyValueByName(), propertyByName(). * contains unique name and you can identify property by name with propertyValueByName(), propertyByName().
* You can add property using addProperty(). * You can add property using addProperty(const Property&), addProperty(const PIString&, const PIVariant&, const PIString&, int).
*/ */
class PIPropertyStorage { class PIPropertyStorage {
public: public:
@@ -42,14 +42,23 @@ public:
struct Property { struct Property {
Property(const PIString & n = PIString(), const PIString & c = PIString(), const PIVariant & v = PIVariant(), int f = 0): Property(const PIString & n = PIString(), const PIString & c = PIString(), const PIVariant & v = PIVariant(), int f = 0):
name(n), comment(c), value(v), flags(f) {} name(n), comment(c), value(v), flags(f) {}
bool toBool() const {return value.toBool();} bool toBool() const {return value.toBool();}
int toInt() const {return value.toInt();} int toInt() const {return value.toInt();}
float toFloat() const {return value.toFloat();} float toFloat() const {return value.toFloat();}
double toDouble() const {return value.toDouble();} double toDouble() const {return value.toDouble();}
PIString toString() const {return value.toString();} PIString toString() const {return value.toString();}
/*! Uniqueue id of property */
PIString name; PIString name;
/*! Optional description of property */
PIString comment; PIString comment;
/*! Custom value of property */
PIVariant value; PIVariant value;
/*! Abstract flags which may be used for user needs */
int flags; int flags;
}; };
@@ -81,7 +90,18 @@ public:
const PIPropertyStorage & propertyStorage() const {return *this;} const PIPropertyStorage & propertyStorage() const {return *this;}
bool isPropertyExists(const PIString & _name) const; bool isPropertyExists(const PIString & _name) const;
void clearProperties() {props.clear();} void clearProperties() {props.clear();}
/**
* @brief Add property if name isn't present in storage, otherwrise update existing property with same name.
*
* @param p to copy in storage
*/
void addProperty(const Property & p); void addProperty(const Property & p);
/**
* @brief First of all construct Property with method params. After then add property if name isn't present
* in storage, otherwrise update existing property with same name.
*/
void addProperty(const PIString & _name, const PIVariant & _def_value, const PIString & _comment = PIString(), int _flags = 0) {addProperty(Property(_name, _comment, _def_value, _flags));} void addProperty(const PIString & _name, const PIVariant & _def_value, const PIString & _comment = PIString(), int _flags = 0) {addProperty(Property(_name, _comment, _def_value, _flags));}
void removeProperty(const PIString & _name); void removeProperty(const PIString & _name);
void removePropertiesByFlag(int flag); void removePropertiesByFlag(int flag);