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 +