123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /** @file Filesystem wrapper for C++. Inherit this class to supply custom file handling
- * logic to the Import library.
- */
- #ifndef AI_IOSYSTEM_H_INC
- #define AI_IOSYSTEM_H_INC
- #ifndef __cplusplus
- #error This header requires C++ to be used.
- #endif
- #include <string>
- namespace Assimp
- {
- class IOStream;
- // ---------------------------------------------------------------------------
- /** Interface to the file system.
- *
- * Derive an own implementation from this interface to supply custom file handling
- * to the importer library. If you implement this interface, you also want to
- * supply a custom implementation for IOStream.
- */
- class IOSystem
- {
- public:
- /** Constructor. Create an instance of your derived class and assign it to
- * the #Importer instance by calling Importer::SetIOHandler().
- */
- IOSystem();
- /** Destructor. */
- virtual ~IOSystem();
- // -------------------------------------------------------------------
- /** Tests for the existence of a file at the given path.
- *
- * @param pFile Path to the file
- * @return true if there is a file with this path, else false.
- */
- virtual bool Exists( const std::string& pFile) const = 0;
- // -------------------------------------------------------------------
- /** Returns the system specific directory separator
- * @return System specific directory separator
- */
- virtual std::string getOsSeparator() const = 0;
- // -------------------------------------------------------------------
- /** Open a new file with a given path. When the access to the file is finished,
- * call Close() to release all associated resources.
- *
- * @param pFile Path to the file
- * @param pMode Desired file I/O mode. Required are: "wb", "w", "wt",
- * "rb", "r", "rt".
- *
- * @return New IOStream interface allowing the lib to access
- * the underlying file.
- * @note When implementing this class to provide custom IO handling, you propably
- * have to supply an own implementation of IOStream as well.
- */
- virtual IOStream* Open(
- const std::string& pFile,
- const std::string& pMode = std::string("rb")) = 0;
- // -------------------------------------------------------------------
- /** Closes the given file and releases all resources associated with it.
- * @param pFile The file instance previously created by Open().
- */
- virtual void Close( IOStream* pFile) = 0;
- };
- // ----------------------------------------------------------------------------
- inline IOSystem::IOSystem()
- {
- // empty
- }
- // ----------------------------------------------------------------------------
- inline IOSystem::~IOSystem()
- {
- // empty
- }
- // ----------------------------------------------------------------------------
- } //!ns Assimp
- #endif //AI_IOSYSTEM_H_INC
|