diff options
Diffstat (limited to 'src/3rdparty/assimp/code/CInterfaceIOWrapper.h')
-rw-r--r-- | src/3rdparty/assimp/code/CInterfaceIOWrapper.h | 102 |
1 files changed, 20 insertions, 82 deletions
diff --git a/src/3rdparty/assimp/code/CInterfaceIOWrapper.h b/src/3rdparty/assimp/code/CInterfaceIOWrapper.h index beffd8678..78cac0cf9 100644 --- a/src/3rdparty/assimp/code/CInterfaceIOWrapper.h +++ b/src/3rdparty/assimp/code/CInterfaceIOWrapper.h @@ -3,7 +3,8 @@ Open Asset Import Library (assimp) --------------------------------------------------------------------------- -Copyright (c) 2006-2016, assimp team +Copyright (c) 2006-2017, assimp team + All rights reserved. @@ -50,106 +51,43 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { +class CIOSystemWrapper; + // ------------------------------------------------------------------------------------------------ // Custom IOStream implementation for the C-API class CIOStreamWrapper : public IOStream { - friend class CIOSystemWrapper; public: - - explicit CIOStreamWrapper(aiFile* pFile) - : mFile(pFile) + explicit CIOStreamWrapper(aiFile* pFile, CIOSystemWrapper* io) + : mFile(pFile), + mIO(io) {} + ~CIOStreamWrapper(void); - // ................................................................... - size_t Read(void* pvBuffer, - size_t pSize, - size_t pCount - ){ - // need to typecast here as C has no void* - return mFile->ReadProc(mFile,(char*)pvBuffer,pSize,pCount); - } - - // ................................................................... - size_t Write(const void* pvBuffer, - size_t pSize, - size_t pCount - ){ - // need to typecast here as C has no void* - return mFile->WriteProc(mFile,(const char*)pvBuffer,pSize,pCount); - } - - // ................................................................... - aiReturn Seek(size_t pOffset, - aiOrigin pOrigin - ){ - return mFile->SeekProc(mFile,pOffset,pOrigin); - } - - // ................................................................... - size_t Tell(void) const { - return mFile->TellProc(mFile); - } - - // ................................................................... - size_t FileSize() const { - return mFile->FileSizeProc(mFile); - } - - // ................................................................... - void Flush () { - return mFile->FlushProc(mFile); - } + size_t Read(void* pvBuffer, size_t pSize, size_t pCount); + size_t Write(const void* pvBuffer, size_t pSize, size_t pCount); + aiReturn Seek(size_t pOffset, aiOrigin pOrigin); + size_t Tell(void) const; + size_t FileSize() const; + void Flush(); private: aiFile* mFile; + CIOSystemWrapper* mIO; }; -// ------------------------------------------------------------------------------------------------ -// Custom IOStream implementation for the C-API class CIOSystemWrapper : public IOSystem { + friend class CIOStreamWrapper; public: explicit CIOSystemWrapper(aiFileIO* pFile) : mFileSystem(pFile) {} - // ................................................................... - bool Exists( const char* pFile) const { - aiFile* p = mFileSystem->OpenProc(mFileSystem,pFile,"rb"); - if (p){ - mFileSystem->CloseProc(mFileSystem,p); - return true; - } - return false; - } - - // ................................................................... - char getOsSeparator() const { -#ifndef _WIN32 - return '/'; -#else - return '\\'; -#endif - } - - // ................................................................... - IOStream* Open(const char* pFile,const char* pMode = "rb") { - aiFile* p = mFileSystem->OpenProc(mFileSystem,pFile,pMode); - if (!p) { - return NULL; - } - return new CIOStreamWrapper(p); - } - - // ................................................................... - void Close( IOStream* pFile) { - if (!pFile) { - return; - } - mFileSystem->CloseProc(mFileSystem,((CIOStreamWrapper*) pFile)->mFile); - delete pFile; - } + bool Exists( const char* pFile) const; + char getOsSeparator() const; + IOStream* Open(const char* pFile,const char* pMode = "rb"); + void Close( IOStream* pFile); private: aiFileIO* mFileSystem; }; |