+ fix inconsistencies in using DynamicProperty class

This commit is contained in:
wmayer
2015-11-17 12:22:07 +01:00
parent 78e9319587
commit c159a8ddc2
3 changed files with 66 additions and 73 deletions

View File

@@ -130,8 +130,14 @@ unsigned int DynamicProperty::getMemSize (void) const
short DynamicProperty::getPropertyType(const Property* prop) const
{
for (std::map<std::string,PropData>::const_iterator it = props.begin(); it != props.end(); ++it) {
if (it->second.property == prop)
return it->second.attr;
if (it->second.property == prop) {
short attr = it->second.attr;
if (it->second.hidden)
attr |= Prop_Hidden;
if (it->second.readonly)
attr |= Prop_ReadOnly;
return attr;
}
}
return this->pc->PropertyContainer::getPropertyType(prop);
}
@@ -139,8 +145,14 @@ short DynamicProperty::getPropertyType(const Property* prop) const
short DynamicProperty::getPropertyType(const char *name) const
{
std::map<std::string,PropData>::const_iterator it = props.find(name);
if (it != props.end())
return it->second.attr;
if (it != props.end()) {
short attr = it->second.attr;
if (it->second.hidden)
attr |= Prop_Hidden;
if (it->second.readonly)
attr |= Prop_ReadOnly;
return attr;
}
return this->pc->PropertyContainer::getPropertyType(name);
}
@@ -178,40 +190,6 @@ const char* DynamicProperty::getPropertyDocumentation(const char *name) const
return this->pc->PropertyContainer::getPropertyDocumentation(name);
}
bool DynamicProperty::isReadOnly(const Property* prop) const
{
for (std::map<std::string,PropData>::const_iterator it = props.begin(); it != props.end(); ++it) {
if (it->second.property == prop)
return it->second.readonly;
}
return this->pc->PropertyContainer::isReadOnly(prop);
}
bool DynamicProperty::isReadOnly(const char *name) const
{
std::map<std::string,PropData>::const_iterator it = props.find(name);
if (it != props.end())
return it->second.readonly;
return this->pc->PropertyContainer::isReadOnly(name);
}
bool DynamicProperty::isHidden(const Property* prop) const
{
for (std::map<std::string,PropData>::const_iterator it = props.begin(); it != props.end(); ++it) {
if (it->second.property == prop)
return it->second.hidden;
}
return this->pc->PropertyContainer::isHidden(prop);
}
bool DynamicProperty::isHidden(const char *name) const
{
std::map<std::string,PropData>::const_iterator it = props.find(name);
if (it != props.end())
return it->second.hidden;
return this->pc->PropertyContainer::isHidden(name);
}
Property* DynamicProperty::addDynamicProperty(const char* type, const char* name, const char* group,
const char* doc, short attr, bool ro, bool hidden)
{