miniassimp
diff include/miniassimp/DefaultIOStream.h @ 0:879c81d94345
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 28 Jan 2019 18:19:26 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/include/miniassimp/DefaultIOStream.h Mon Jan 28 18:19:26 2019 +0200 1.3 @@ -0,0 +1,140 @@ 1.4 +/* 1.5 +Open Asset Import Library (assimp) 1.6 +---------------------------------------------------------------------- 1.7 + 1.8 +Copyright (c) 2006-2018, assimp team 1.9 + 1.10 + 1.11 +All rights reserved. 1.12 + 1.13 +Redistribution and use of this software in source and binary forms, 1.14 +with or without modification, are permitted provided that the 1.15 +following conditions are met: 1.16 + 1.17 +* Redistributions of source code must retain the above 1.18 + copyright notice, this list of conditions and the 1.19 + following disclaimer. 1.20 + 1.21 +* Redistributions in binary form must reproduce the above 1.22 + copyright notice, this list of conditions and the 1.23 + following disclaimer in the documentation and/or other 1.24 + materials provided with the distribution. 1.25 + 1.26 +* Neither the name of the assimp team, nor the names of its 1.27 + contributors may be used to endorse or promote products 1.28 + derived from this software without specific prior 1.29 + written permission of the assimp team. 1.30 + 1.31 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1.32 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1.33 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1.34 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1.35 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.36 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.37 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1.38 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1.39 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1.40 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.41 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.42 + 1.43 +---------------------------------------------------------------------- 1.44 +*/ 1.45 + 1.46 +/** @file Default file I/O using fXXX()-family of functions */ 1.47 +#ifndef AI_DEFAULTIOSTREAM_H_INC 1.48 +#define AI_DEFAULTIOSTREAM_H_INC 1.49 + 1.50 +#include <stdio.h> 1.51 +#include <miniassimp/IOStream.hpp> 1.52 +#include <miniassimp/importerdesc.h> 1.53 +#include <miniassimp/Defines.h> 1.54 + 1.55 +namespace Assimp { 1.56 + 1.57 +// ---------------------------------------------------------------------------------- 1.58 +//! @class DefaultIOStream 1.59 +//! @brief Default IO implementation, use standard IO operations 1.60 +//! @note An instance of this class can exist without a valid file handle 1.61 +//! attached to it. All calls fail, but the instance can nevertheless be 1.62 +//! used with no restrictions. 1.63 +class ASSIMP_API DefaultIOStream : public IOStream 1.64 +{ 1.65 + friend class DefaultIOSystem; 1.66 +#if __ANDROID__ 1.67 +# if __ANDROID_API__ > 9 1.68 +# if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) 1.69 + friend class AndroidJNIIOSystem; 1.70 +# endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) 1.71 +# endif // __ANDROID_API__ > 9 1.72 +#endif // __ANDROID__ 1.73 + 1.74 +protected: 1.75 + DefaultIOStream() AI_NO_EXCEPT; 1.76 + DefaultIOStream(FILE* pFile, const std::string &strFilename); 1.77 + 1.78 +public: 1.79 + /** Destructor public to allow simple deletion to close the file. */ 1.80 + ~DefaultIOStream (); 1.81 + 1.82 + // ------------------------------------------------------------------- 1.83 + /// Read from stream 1.84 + size_t Read(void* pvBuffer, 1.85 + size_t pSize, 1.86 + size_t pCount); 1.87 + 1.88 + 1.89 + // ------------------------------------------------------------------- 1.90 + /// Write to stream 1.91 + size_t Write(const void* pvBuffer, 1.92 + size_t pSize, 1.93 + size_t pCount); 1.94 + 1.95 + // ------------------------------------------------------------------- 1.96 + /// Seek specific position 1.97 + aiReturn Seek(size_t pOffset, 1.98 + aiOrigin pOrigin); 1.99 + 1.100 + // ------------------------------------------------------------------- 1.101 + /// Get current seek position 1.102 + size_t Tell() const; 1.103 + 1.104 + // ------------------------------------------------------------------- 1.105 + /// Get size of file 1.106 + size_t FileSize() const; 1.107 + 1.108 + // ------------------------------------------------------------------- 1.109 + /// Flush file contents 1.110 + void Flush(); 1.111 + 1.112 +private: 1.113 + // File data-structure, using clib 1.114 + FILE* mFile; 1.115 + // Filename 1.116 + std::string mFilename; 1.117 + // Cached file size 1.118 + mutable size_t mCachedSize; 1.119 +}; 1.120 + 1.121 +// ---------------------------------------------------------------------------------- 1.122 +inline 1.123 +DefaultIOStream::DefaultIOStream() AI_NO_EXCEPT 1.124 +: mFile(0) 1.125 +, mFilename("") 1.126 +, mCachedSize(SIZE_MAX) { 1.127 + // empty 1.128 +} 1.129 + 1.130 +// ---------------------------------------------------------------------------------- 1.131 +inline 1.132 +DefaultIOStream::DefaultIOStream (FILE* pFile, const std::string &strFilename) 1.133 +: mFile(pFile) 1.134 +, mFilename(strFilename) 1.135 +, mCachedSize(SIZE_MAX) { 1.136 + // empty 1.137 +} 1.138 +// ---------------------------------------------------------------------------------- 1.139 + 1.140 +} // ns assimp 1.141 + 1.142 +#endif //!!AI_DEFAULTIOSTREAM_H_INC 1.143 +