Added initial cut of white and black lists

This commit is contained in:
Robert Osfield
2013-09-20 10:44:24 +00:00
parent 6bc413530e
commit 8f3ee7c649
2 changed files with 25 additions and 6 deletions

View File

@@ -163,7 +163,14 @@ int main(int argc, char** argv)
osgDB::PropertyInterface pi;
#if 1
pi.getWhiteList()["osgPresentation::Presentation"]["filename"]=osgDB::BaseSerializer::RW_STRING;
pi.getBlackList()["osgPresentation::Presentation"]["Children"];
pi.getBlackList()["osgPresentation::Presentation"]["UserDataContainer"];
pi.getBlackList()["osgPresentation::Presentation"]["UserData"];
pi.getBlackList()["osgPresentation::Presentation"]["CullCallback"];
pi.getBlackList()["osgPresentation::Presentation"]["ComputeBoundingSphereCallback"];
#if 0
osgDB::ObjectWrapperManager* owm = osgDB::Registry::instance()->getObjectWrapperManager();
if (owm)
{
@@ -309,7 +316,7 @@ int main(int argc, char** argv)
itr != properties.end();
++itr)
{
OSG_NOTICE<<"Property "<<itr->first<<", "<<itr->second<<std::endl;
OSG_NOTICE<<" Property "<<itr->first<<", "<<pi.getTypeName(itr->second)<<std::endl;
}
}
else

View File

@@ -273,8 +273,7 @@ osgDB::BaseSerializer::Type PropertyInterface::getType(const std::string& typeNa
osgDB::ObjectWrapper* PropertyInterface::getObjectWrapper(const osg::Object* object) const
{
std::string compoundClassName = std::string(object->libraryName()) + std::string("::") + std::string(object->className());
return osgDB::Registry::instance()->getObjectWrapperManager()->findWrapper(compoundClassName);
return osgDB::Registry::instance()->getObjectWrapperManager()->findWrapper(object->getCompoundClassName());
}
osgDB::BaseSerializer* PropertyInterface::getSerializer(const osg::Object* object, const std::string& propertyName, osgDB::BaseSerializer::Type& type) const
@@ -394,6 +393,15 @@ bool PropertyInterface::getSupportedProperties(const osg::Object* object, Proper
return false;
}
std::string compoundClassName = object->getCompoundClassName();
ObjectPropertyMap::const_iterator wl_itr = _whiteList.find(compoundClassName);
if (wl_itr != _whiteList.end())
{
properties = wl_itr->second;
}
ObjectPropertyMap::const_iterator bl_itr = _blackList.find(compoundClassName);
if (searchAssociates)
{
const osgDB::StringList& associates = ow->getAssociates();
@@ -410,7 +418,9 @@ bool PropertyInterface::getSupportedProperties(const osg::Object* object, Proper
sitr != associate_serializers.end();
++sitr, ++i)
{
properties[(*sitr)->getName()] = associate_wrapper->getTypeList()[i];
const std::string& propertyName = (*sitr)->getName();
bool notBlackListed = (bl_itr == _blackList.end()) || (bl_itr->second.count(propertyName)==0);
if (notBlackListed) properties[propertyName] = associate_wrapper->getTypeList()[i];
}
}
}
@@ -423,7 +433,9 @@ bool PropertyInterface::getSupportedProperties(const osg::Object* object, Proper
itr != serializers.end();
++itr)
{
properties[(*itr)->getName()] = ow->getTypeList()[i];
const std::string& propertyName = (*itr)->getName();
bool notBlackListed = (bl_itr == _blackList.end()) || (bl_itr->second.count(propertyName)==0);
if (notBlackListed) properties[propertyName] = ow->getTypeList()[i];
}
}