/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ #ifndef OSGDB_DOTOSGWRAPPER #define OSGDB_DOTOSGWRAPPER 1 #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