1 | /* |
2 | Open Asset Import Library (assimp) |
3 | ---------------------------------------------------------------------- |
4 | |
5 | Copyright (c) 2006-2017, assimp team |
6 | All rights reserved. |
7 | |
8 | Redistribution and use of this software in source and binary forms, |
9 | with or without modification, are permitted provided that the |
10 | following conditions are met: |
11 | |
12 | * Redistributions of source code must retain the above |
13 | copyright notice, this list of conditions and the |
14 | following disclaimer. |
15 | |
16 | * Redistributions in binary form must reproduce the above |
17 | copyright notice, this list of conditions and the |
18 | following disclaimer in the documentation and/or other |
19 | materials provided with the distribution. |
20 | |
21 | * Neither the name of the assimp team, nor the names of its |
22 | contributors may be used to endorse or promote products |
23 | derived from this software without specific prior |
24 | written permission of the assimp team. |
25 | |
26 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
27 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
28 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
29 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
30 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
31 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
32 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
33 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
34 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
35 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
36 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
37 | |
38 | ---------------------------------------------------------------------- |
39 | */ |
40 | /** @file FileLofStream.h |
41 | */ |
42 | #ifndef ASSIMP_FILELOGSTREAM_H_INC |
43 | #define ASSIMP_FILELOGSTREAM_H_INC |
44 | |
45 | #include <assimp/LogStream.hpp> |
46 | #include <assimp/IOStream.hpp> |
47 | #include <assimp/DefaultIOSystem.h> |
48 | |
49 | namespace Assimp { |
50 | |
51 | // ---------------------------------------------------------------------------------- |
52 | /** @class FileLogStream |
53 | * @brief Logstream to write into a file. |
54 | */ |
55 | class FileLogStream : |
56 | public LogStream |
57 | { |
58 | public: |
59 | FileLogStream( const char* file, IOSystem* io = NULL ); |
60 | ~FileLogStream(); |
61 | void write( const char* message ); |
62 | |
63 | private: |
64 | IOStream *m_pStream; |
65 | }; |
66 | |
67 | // ---------------------------------------------------------------------------------- |
68 | // Constructor |
69 | inline FileLogStream::FileLogStream( const char* file, IOSystem* io ) : |
70 | m_pStream(NULL) |
71 | { |
72 | if ( !file || 0 == *file ) |
73 | return; |
74 | |
75 | // If no IOSystem is specified: take a default one |
76 | if (!io) |
77 | { |
78 | DefaultIOSystem FileSystem; |
79 | m_pStream = FileSystem.Open( file, "wt" ); |
80 | } |
81 | else m_pStream = io->Open( file, "wt" ); |
82 | } |
83 | |
84 | // ---------------------------------------------------------------------------------- |
85 | // Destructor |
86 | inline FileLogStream::~FileLogStream() |
87 | { |
88 | // The virtual d'tor should destroy the underlying file |
89 | delete m_pStream; |
90 | } |
91 | |
92 | // ---------------------------------------------------------------------------------- |
93 | // Write method |
94 | inline void FileLogStream::write( const char* message ) |
95 | { |
96 | if (m_pStream != NULL) |
97 | { |
98 | m_pStream->Write(message, sizeof(char), ::strlen(message)); |
99 | m_pStream->Flush(); |
100 | } |
101 | } |
102 | |
103 | // ---------------------------------------------------------------------------------- |
104 | } // !Namespace Assimp |
105 | |
106 | #endif // !! ASSIMP_FILELOGSTREAM_H_INC |
107 | |