FileLogStream.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef ASSIMP_FILELOGSTREAM_H_INC
  2. #define ASSIMP_FILELOGSTREAM_H_INC
  3. #include <assimp/LogStream.hpp>
  4. #include <assimp/IOStream.hpp>
  5. #include "DefaultIOSystem.h"
  6. namespace Assimp {
  7. // ----------------------------------------------------------------------------------
  8. /** @class FileLogStream
  9. * @brief Logstream to write into a file.
  10. */
  11. class FileLogStream :
  12. public LogStream
  13. {
  14. public:
  15. FileLogStream( const char* file, IOSystem* io = NULL );
  16. ~FileLogStream();
  17. void write( const char* message );
  18. private:
  19. IOStream *m_pStream;
  20. };
  21. // ----------------------------------------------------------------------------------
  22. // Constructor
  23. inline FileLogStream::FileLogStream( const char* file, IOSystem* io ) :
  24. m_pStream(NULL)
  25. {
  26. if ( !file || 0 == *file )
  27. return;
  28. // If no IOSystem is specified: take a default one
  29. if (!io)
  30. {
  31. DefaultIOSystem FileSystem;
  32. m_pStream = FileSystem.Open( file, "wt");
  33. }
  34. else m_pStream = io->Open( file, "wt" );
  35. }
  36. // ----------------------------------------------------------------------------------
  37. // Destructor
  38. inline FileLogStream::~FileLogStream()
  39. {
  40. // The virtual d'tor should destroy the underlying file
  41. delete m_pStream;
  42. }
  43. // ----------------------------------------------------------------------------------
  44. // Write method
  45. inline void FileLogStream::write( const char* message )
  46. {
  47. if (m_pStream != NULL)
  48. {
  49. m_pStream->Write(message, sizeof(char), ::strlen(message));
  50. m_pStream->Flush();
  51. }
  52. }
  53. // ----------------------------------------------------------------------------------
  54. } // !Namespace Assimp
  55. #endif // !! ASSIMP_FILELOGSTREAM_H_INC