From Alberto Farre, changed the cache hint option in read*() calls from being

a bool to a enum osgDB::Registru::CacheHintOptions to be used a bit mask flag.

From Robert Osfied, added osgDB::Registry::ReadFileCallback and
osgDB::Registry::WriteFileCallback to allow customizition of read and write
calls.
This commit is contained in:
Robert Osfield
2004-04-10 16:11:56 +00:00
parent ae7ceae631
commit 2a6e155d03
5 changed files with 208 additions and 49 deletions

View File

@@ -137,7 +137,7 @@ Registry::Registry()
_createNodeFromImage = false;
_openingLibrary = false;
_useObjectCacheHint = false;
_useObjectCacheHint = CACHE_NONE;
initFilePathLists();
@@ -1244,9 +1244,11 @@ ReaderWriter::ReadResult Registry::readObject(const std::string& fileName)
return results.front();
}
ReaderWriter::ReadResult Registry::readObject(const std::string& file,bool useObjectCache)
ReaderWriter::ReadResult Registry::readObjectImplementation(const std::string& constFile,CacheHintOptions useObjectCache)
{
if (useObjectCache)
std::string file(constFile);
if (useObjectCache & CACHE_OBJECTS)
{
// search for entry in the object cache.
ObjectCache::iterator oitr=_objectCache.find(file);
@@ -1288,7 +1290,7 @@ ReaderWriter::ReadResult Registry::readObject(const std::string& file,bool useOb
}
}
ReaderWriter::WriteResult Registry::writeObject(const Object& obj,const std::string& fileName)
ReaderWriter::WriteResult Registry::writeObjectImplementation(const Object& obj,const std::string& fileName)
{
// record the errors reported by readerwriters.
typedef std::vector<ReaderWriter::WriteResult> Results;
@@ -1390,10 +1392,9 @@ ReaderWriter::ReadResult Registry::readImage(const std::string& fileName)
}
ReaderWriter::ReadResult Registry::readImage(const std::string& file,bool useObjectCache)
ReaderWriter::ReadResult Registry::readImageImplementation(const std::string& file,CacheHintOptions useObjectCache)
{
if (useObjectCache)
if (useObjectCache & CACHE_IMAGES)
{
// search for entry in the object cache.
ObjectCache::iterator oitr=_objectCache.find(file);
@@ -1439,7 +1440,7 @@ ReaderWriter::ReadResult Registry::readImage(const std::string& file,bool useObj
ReaderWriter::WriteResult Registry::writeImage(const Image& image,const std::string& fileName)
ReaderWriter::WriteResult Registry::writeImageImplementation(const Image& image,const std::string& fileName)
{
// record the errors reported by readerwriters.
typedef std::vector<ReaderWriter::WriteResult> Results;
@@ -1541,9 +1542,9 @@ ReaderWriter::ReadResult Registry::readHeightField(const std::string& fileName)
}
ReaderWriter::ReadResult Registry::readHeightField(const std::string& file,bool useObjectCache)
ReaderWriter::ReadResult Registry::readHeightFieldImplementation(const std::string& file,CacheHintOptions useObjectCache)
{
if (useObjectCache)
if (useObjectCache & CACHE_HEIGHTFIELDS)
{
// search for entry in the object cache.
ObjectCache::iterator oitr=_objectCache.find(file);
@@ -1589,7 +1590,7 @@ ReaderWriter::ReadResult Registry::readHeightField(const std::string& file,bool
ReaderWriter::WriteResult Registry::writeHeightField(const HeightField& HeightField,const std::string& fileName)
ReaderWriter::WriteResult Registry::writeHeightFieldImplementation(const HeightField& HeightField,const std::string& fileName)
{
// record the errors reported by readerwriters.
typedef std::vector<ReaderWriter::WriteResult> Results;
@@ -1686,7 +1687,7 @@ ReaderWriter::ReadResult Registry::readNode(const std::string& fileName)
// need to sort out.
bool useObjectCache=true;
CacheHintOptions useObjectCache = CACHE_ALL;
if (_createNodeFromImage)
{
@@ -1703,9 +1704,9 @@ ReaderWriter::ReadResult Registry::readNode(const std::string& fileName)
return results.front();
}
ReaderWriter::ReadResult Registry::readNode(const std::string& file,bool useObjectCache)
ReaderWriter::ReadResult Registry::readNodeImplementation(const std::string& file,CacheHintOptions useObjectCache)
{
if (useObjectCache)
if (useObjectCache & CACHE_NODES)
{
// search for entry in the object cache.
ObjectCache::iterator oitr=_objectCache.find(file);
@@ -1747,7 +1748,7 @@ ReaderWriter::ReadResult Registry::readNode(const std::string& file,bool useObje
}
}
ReaderWriter::WriteResult Registry::writeNode(const Node& node,const std::string& fileName)
ReaderWriter::WriteResult Registry::writeNodeImplementation(const Node& node,const std::string& fileName)
{
// record the errors reported by readerwriters.
typedef std::vector<ReaderWriter::WriteResult> Results;