//C++ header - Open Scene Graph - Copyright (C) 1998-2001 Robert Osfield //Distributed under the terms of the GNU Library General Public License (LGPL) //as published by the Free Software Foundation. #ifndef OSGDB_DOTOSGWRAPPER #define OSGDB_DOTOSGWRAPPER 1 #include #include #include #include #include #include //#include namespace osgDB { /** Wrapper class for specifying read and write functions for extending * the .osg file format. */ class OSGDB_EXPORT DotOsgWrapper : public osg::Referenced { public: typedef std::vector Associates; typedef bool (*ReadFunc)(osg::Object&,osgDB::Input&); typedef bool (*WriteFunc)(const osg::Object&,osgDB::Output&); enum ReadWriteMode { READ_AND_WRITE, READ_ONLY }; DotOsgWrapper(osg::Object* proto, const std::string& name, const std::string& associates, ReadFunc readFunc, WriteFunc writeFunc, ReadWriteMode readWriteMode=READ_AND_WRITE); inline const osg::Object* getPrototype() const { return _prototype.get(); } inline const std::string& getName() const { return _name; } inline const Associates& getAssociates() const { return _associates; } inline ReadFunc getReadFunc() const { return _readFunc; } inline WriteFunc getWriteFunc() const { return _writeFunc; } inline ReadWriteMode getReadWriteMode() const { return _readWriteMode; } protected: /// protected to prevent inappropriate creation of wrappers. DotOsgWrapper() {} /// protected to prevent inappropriate creation of wrappers. DotOsgWrapper(DotOsgWrapper&):osg::Referenced() {} /// protected to prevent wrapper being created on stack. virtual ~DotOsgWrapper() {} osg::ref_ptr _prototype; std::string _name; Associates _associates; ReadFunc _readFunc; WriteFunc _writeFunc; ReadWriteMode _readWriteMode; }; }; #endif