diff --git a/src/core/pipropertystorage.cpp b/src/core/pipropertystorage.cpp index 765a8ee1..351e4f8f 100644 --- a/src/core/pipropertystorage.cpp +++ b/src/core/pipropertystorage.cpp @@ -95,3 +95,20 @@ void PIPropertyStorage::setPropertyFlags(const PIString & name, int 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(); +} diff --git a/src/core/pipropertystorage.h b/src/core/pipropertystorage.h index 37f0b76d..03b07951 100644 --- a/src/core/pipropertystorage.h +++ b/src/core/pipropertystorage.h @@ -60,6 +60,8 @@ public: PIPropertyStorage & operator <<(const PIPropertyStorage & p) {props << p.props; return *this;} Property & operator[](int i) {return props[i];} const Property & operator[](int i) const {return props[i];} + Property & operator[](const PIString & name); + const Property operator[](const PIString & name) const; static Property parsePropertyLine(PIString l);