Browse Source

Merge pull request #5004 from assimp/kimkulling/capi-cleanup

C-API: Code cleanup
Kim Kulling 2 years ago
parent
commit
e308474163
3 changed files with 43 additions and 34 deletions
  1. 0 2
      code/CApi/AssimpCExport.cpp
  2. 10 10
      code/CApi/CInterfaceIOWrapper.cpp
  3. 33 22
      code/CApi/CInterfaceIOWrapper.h

+ 0 - 2
code/CApi/AssimpCExport.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 Copyright (c) 2006-2022, assimp team
 
-
-
 All rights reserved.
 
 Redistribution and use of this software in source and binary forms,

+ 10 - 10
code/CApi/CInterfaceIOWrapper.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 Copyright (c) 2006-2022, assimp team
 
-
-
 All rights reserved.
 
 Redistribution and use of this software in source and binary forms,
@@ -47,14 +45,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 namespace Assimp {
 
+// ------------------------------------------------------------------------------------------------
 CIOStreamWrapper::~CIOStreamWrapper() {
-    /* Various places depend on this destructor to close the file */
-    if (mFile) {
+    // Various places depend on this destructor to close the file
+    if (mFile != nullptr) {
+        
         mIO->mFileSystem->CloseProc(mIO->mFileSystem, mFile);
     }
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 size_t CIOStreamWrapper::Read(void *pvBuffer,
         size_t pSize,
         size_t pCount) {
@@ -62,7 +62,7 @@ size_t CIOStreamWrapper::Read(void *pvBuffer,
     return mFile->ReadProc(mFile, (char *)pvBuffer, pSize, pCount);
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 size_t CIOStreamWrapper::Write(const void *pvBuffer,
         size_t pSize,
         size_t pCount) {
@@ -70,23 +70,23 @@ size_t CIOStreamWrapper::Write(const void *pvBuffer,
     return mFile->WriteProc(mFile, (const char *)pvBuffer, pSize, pCount);
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 aiReturn CIOStreamWrapper::Seek(size_t pOffset,
         aiOrigin pOrigin) {
     return mFile->SeekProc(mFile, pOffset, pOrigin);
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 size_t CIOStreamWrapper::Tell() const {
     return mFile->TellProc(mFile);
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 size_t CIOStreamWrapper::FileSize() const {
     return mFile->FileSizeProc(mFile);
 }
 
-// ...................................................................
+// ------------------------------------------------------------------------------------------------
 void CIOStreamWrapper::Flush() {
     return mFile->FlushProc(mFile);
 }

+ 33 - 22
code/CApi/CInterfaceIOWrapper.h

@@ -47,48 +47,59 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <assimp/cfileio.h>
 #include <assimp/IOStream.hpp>
 #include <assimp/IOSystem.hpp>
+#include <assimp/ai_assert.h>
 
 namespace Assimp {
 
 class CIOSystemWrapper;
 
 // ------------------------------------------------------------------------------------------------
-// Custom IOStream implementation for the C-API
-class CIOStreamWrapper : public IOStream {
+/// @brief Custom IOStream implementation for the C-API-
+// ------------------------------------------------------------------------------------------------
+class CIOStreamWrapper final : public IOStream {
 public:
-    explicit CIOStreamWrapper(aiFile *pFile, CIOSystemWrapper *io) :
-            mFile(pFile),
-            mIO(io) {}
-    ~CIOStreamWrapper(void);
-
-    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();
+    explicit CIOStreamWrapper(aiFile *pFile, CIOSystemWrapper *io);
+    ~CIOStreamWrapper() override;
+    size_t Read(void *pvBuffer, size_t pSize, size_t pCount) override;
+    size_t Write(const void *pvBuffer, size_t pSize, size_t pCount) override;
+    aiReturn Seek(size_t pOffset, aiOrigin pOrigin) override;
+    size_t Tell(void) const override;
+    size_t FileSize() const override;
+    void Flush() override;
 
 private:
     aiFile *mFile;
     CIOSystemWrapper *mIO;
 };
 
-class CIOSystemWrapper : public IOSystem {
+inline CIOStreamWrapper::CIOStreamWrapper(aiFile *pFile, CIOSystemWrapper *io) :
+        mFile(pFile),
+        mIO(io) {
+    ai_assert(io != nullptr);
+}
+
+// ------------------------------------------------------------------------------------------------
+/// @brief Custom IO-System wrapper implementation for the C-API.
+// ------------------------------------------------------------------------------------------------
+class CIOSystemWrapper final : public IOSystem {
     friend class CIOStreamWrapper;
 
 public:
-    explicit CIOSystemWrapper(aiFileIO *pFile) :
-            mFileSystem(pFile) {}
-
-    bool Exists(const char *pFile) const;
-    char getOsSeparator() const;
-    IOStream *Open(const char *pFile, const char *pMode = "rb");
-    void Close(IOStream *pFile);
+    explicit CIOSystemWrapper(aiFileIO *pFile);
+    ~CIOSystemWrapper() override = default;
+    bool Exists(const char *pFile) const override;
+    char getOsSeparator() const override;
+    IOStream *Open(const char *pFile, const char *pMode = "rb") override;
+    void Close(IOStream *pFile) override;
 
 private:
     aiFileIO *mFileSystem;
 };
 
+inline CIOSystemWrapper::CIOSystemWrapper(aiFileIO *pFile) : mFileSystem(pFile) {
+    ai_assert(pFile != nullptr);
+}
+
 } // namespace Assimp
 
-#endif
+#endif // AI_CIOSYSTEM_H_INCLUDED