DefaultIOStream.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /** @file Default file I/O using fXXX()-family of functions */
  2. #ifndef AI_DEFAULTIOSTREAM_H_INC
  3. #define AI_DEFAULTIOSTREAM_H_INC
  4. #include <string>
  5. #include <stdio.h>
  6. #include "IOStream.h"
  7. namespace Assimp
  8. {
  9. // ---------------------------------------------------------------------------
  10. //! \class DefaultIOStream
  11. //! \brief Default IO implementation, use standard IO operations
  12. // ---------------------------------------------------------------------------
  13. class DefaultIOStream : public IOStream
  14. {
  15. friend class DefaultIOSystem;
  16. protected:
  17. DefaultIOStream ();
  18. DefaultIOStream (FILE* pFile, const std::string &strFilename);
  19. public:
  20. /** Destructor public to allow simple deletion to close the file. */
  21. ~DefaultIOStream ();
  22. // -------------------------------------------------------------------
  23. // -------------------------------------------------------------------
  24. size_t Read(void* pvBuffer,
  25. size_t pSize,
  26. size_t pCount);
  27. // -------------------------------------------------------------------
  28. // -------------------------------------------------------------------
  29. size_t Write(const void* pvBuffer,
  30. size_t pSize,
  31. size_t pCount);
  32. // -------------------------------------------------------------------
  33. // -------------------------------------------------------------------
  34. aiReturn Seek(size_t pOffset,
  35. aiOrigin pOrigin);
  36. // -------------------------------------------------------------------
  37. // -------------------------------------------------------------------
  38. size_t Tell() const;
  39. //! Returns filesize
  40. size_t FileSize() const;
  41. private:
  42. //! File datastructure, using clib
  43. FILE* mFile;
  44. //! Filename
  45. std::string mFilename;
  46. };
  47. // ---------------------------------------------------------------------------
  48. inline DefaultIOStream::DefaultIOStream () :
  49. mFile(NULL),
  50. mFilename("")
  51. {
  52. // empty
  53. }
  54. // ---------------------------------------------------------------------------
  55. inline DefaultIOStream::DefaultIOStream (FILE* pFile,
  56. const std::string &strFilename) :
  57. mFile(pFile),
  58. mFilename(strFilename)
  59. {
  60. // empty
  61. }
  62. // ---------------------------------------------------------------------------
  63. } // ns assimp
  64. #endif //!!AI_DEFAULTIOSTREAM_H_INC