Added osgDB::Registry::s/getUseObjectCacheHint()

This commit is contained in:
Robert Osfield
2003-10-02 13:26:01 +00:00
parent 6deedbf08c
commit 82143f7553
3 changed files with 74 additions and 6 deletions

View File

@@ -19,18 +19,42 @@
#include <osg/ArgumentParser>
#include <osgDB/Export>
#include <osgDB/Registry>
#include <string>
namespace osgDB {
/** Read an osg::Object from file.
* Return valid osg::Object on success,
* return NULL on failure.
* Use the useObjectCache flag to override the osgDB::Regisytr::getUseObjectCacheHint().
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Object* readObjectFile(const std::string& filename,bool useObjectCache);
/** Read an osg::Object from file.
* Return valid osg::Object on success,
* return NULL on failure.
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Object* readObjectFile(const std::string& filename,bool useObjectCache=false);
inline osg::Object* readObjectFile(const std::string& filename)
{
return readObjectFile(filename,Registry::instance()->getUseObjectCacheHint());
}
/** Read an osg::Image from file.
* Return valid osg::Image on success,
* return NULL on failure.
* Use the useObjectCache flag to override the osgDB::Regisytr::getUseObjectCacheHint().
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Image* readImageFile(const std::string& filename,bool useObjectCache);
/** Read an osg::Image from file.
* Return valid osg::Image on success,
@@ -38,7 +62,19 @@ extern OSGDB_EXPORT osg::Object* readObjectFile(const std::string& filename,bool
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Image* readImageFile(const std::string& filename,bool useObjectCache=false);
inline osg::Image* readImageFile(const std::string& filename)
{
return readImageFile(filename,Registry::instance()->getUseObjectCacheHint());
}
/** Read an osg::Node from file.
* Return valid osg::Node on success,
* return NULL on failure.
* Use the useObjectCache flag to override the osgDB::Regisytr::getUseObjectCacheHint().
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Node* readNodeFile(const std::string& filename,bool useObjectCache);
/** Read an osg::Node from file.
* Return valid osg::Node on success,
@@ -46,15 +82,36 @@ extern OSGDB_EXPORT osg::Image* readImageFile(const std::string& filename,bool
* The osgDB::Registry is used to load the appropriate ReaderWriter plugin
* for the filename extension, and this plugin then handles the request
* to read the specified file.*/
extern OSGDB_EXPORT osg::Node* readNodeFile(const std::string& filename,bool useObjectCache=false);
inline osg::Node* readNodeFile(const std::string& filename)
{
return readNodeFile(filename,Registry::instance()->getUseObjectCacheHint());
}
/** Read an osg::Node subgraph from files, creating a osg::Group to contain the nodes if more
* than one subgraph has been loaded.
* Use the useObjectCache flag to override the osgDB::Regisytr::getUseObjectCacheHint().*/
extern OSGDB_EXPORT osg::Node* readNodeFiles(std::vector<std::string>& commandLine,bool useObjectCache);
/** Read an osg::Node subgraph from files, creating a osg::Group to contain the nodes if more
* than one subgraph has been loaded.*/
extern OSGDB_EXPORT osg::Node* readNodeFiles(std::vector<std::string>& commandLine,bool useObjectCache=false);
inline osg::Node* readNodeFiles(std::vector<std::string>& commandLine)
{
return readNodeFiles(commandLine,Registry::instance()->getUseObjectCacheHint());
}
/** Read an osg::Node subgraph from files, creating a osg::Group to contain the nodes if more
* than one subgraph has been loaded.
* Use the useObjectCache flag to override the osgDB::Regisytr::getUseObjectCacheHint().*/
extern OSGDB_EXPORT osg::Node* readNodeFiles(osg::ArgumentParser& parser,bool useObjectCache);
/** Read an osg::Node subgraph from files, creating a osg::Group to contain the nodes if more
* than one subgraph has been loaded.*/
extern OSGDB_EXPORT osg::Node* readNodeFiles(osg::ArgumentParser& parser,bool useObjectCache=false);
inline osg::Node* readNodeFiles(osg::ArgumentParser& parser)
{
return readNodeFiles(parser,Registry::instance()->getUseObjectCacheHint());
}
}

View File

@@ -191,7 +191,14 @@ class OSGDB_EXPORT Registry : public osg::Referenced
/** Remove all objects in the cache regardless of having external references or expiry times.*/
void clearObjectCache();
/** Add a filename,object,timestamp tripple to the Registry::ObjectCache.*/
void addEntryToObjectCache(const std::string& filename, osg::Object* object, double timestamp = 0.0);
/** Set whether the Registry::ObjectCache should be used by default.*/
void setUseObjectCacheHint(bool useObjectCache) { _useObjectCacheHint = useObjectCache; }
/** Get whether the Registry::ObjectCache should be used by default.*/
bool getUseObjectCacheHint() const { return _useObjectCacheHint; }
/** get the attached library with specified name.*/
DynamicLibrary* getLibrary(const std::string& fileName);
@@ -247,7 +254,8 @@ class OSGDB_EXPORT Registry : public osg::Referenced
FilePathList _dataFilePath;
FilePathList _libraryFilePath;
bool _useObjectCacheHint;
ObjectCache _objectCache;
};

View File

@@ -93,6 +93,8 @@ Registry::Registry()
_createNodeFromImage = true;
_openingLibrary = false;
_useObjectCacheHint = false;
initFilePathLists();
@@ -143,6 +145,7 @@ Registry::Registry()
addFileExtensionAlias("pbm", "pnm");
addFileExtensionAlias("pgm", "pnm");
addFileExtensionAlias("ppm", "pnm");
}