miniassimp
diff include/miniassimp/cfileio.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/cfileio.h Mon Jan 28 18:19:26 2019 +0200 1.3 @@ -0,0 +1,138 @@ 1.4 +/* 1.5 +--------------------------------------------------------------------------- 1.6 +Open Asset Import Library (assimp) 1.7 +--------------------------------------------------------------------------- 1.8 + 1.9 +Copyright (c) 2006-2018, assimp team 1.10 + 1.11 + 1.12 + 1.13 +All rights reserved. 1.14 + 1.15 +Redistribution and use of this software in source and binary forms, 1.16 +with or without modification, are permitted provided that the following 1.17 +conditions are met: 1.18 + 1.19 +* Redistributions of source code must retain the above 1.20 + copyright notice, this list of conditions and the 1.21 + following disclaimer. 1.22 + 1.23 +* Redistributions in binary form must reproduce the above 1.24 + copyright notice, this list of conditions and the 1.25 + following disclaimer in the documentation and/or other 1.26 + materials provided with the distribution. 1.27 + 1.28 +* Neither the name of the assimp team, nor the names of its 1.29 + contributors may be used to endorse or promote products 1.30 + derived from this software without specific prior 1.31 + written permission of the assimp team. 1.32 + 1.33 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1.34 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1.35 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1.36 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1.37 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.38 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.39 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1.40 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1.41 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1.42 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.43 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.44 +--------------------------------------------------------------------------- 1.45 +*/ 1.46 + 1.47 +/** @file cfileio.h 1.48 + * @brief Defines generic C routines to access memory-mapped files 1.49 + */ 1.50 +#pragma once 1.51 +#ifndef AI_FILEIO_H_INC 1.52 +#define AI_FILEIO_H_INC 1.53 + 1.54 +#include <miniassimp/types.h> 1.55 +#ifdef __cplusplus 1.56 +extern "C" { 1.57 +#endif 1.58 +struct aiFileIO; 1.59 +struct aiFile; 1.60 + 1.61 +// aiFile callbacks 1.62 +typedef size_t (*aiFileWriteProc) (C_STRUCT aiFile*, const char*, size_t, size_t); 1.63 +typedef size_t (*aiFileReadProc) (C_STRUCT aiFile*, char*, size_t,size_t); 1.64 +typedef size_t (*aiFileTellProc) (C_STRUCT aiFile*); 1.65 +typedef void (*aiFileFlushProc) (C_STRUCT aiFile*); 1.66 +typedef C_ENUM aiReturn (*aiFileSeek) (C_STRUCT aiFile*, size_t, C_ENUM aiOrigin); 1.67 + 1.68 +// aiFileIO callbacks 1.69 +typedef C_STRUCT aiFile* (*aiFileOpenProc) (C_STRUCT aiFileIO*, const char*, const char*); 1.70 +typedef void (*aiFileCloseProc) (C_STRUCT aiFileIO*, C_STRUCT aiFile*); 1.71 + 1.72 +// Represents user-defined data 1.73 +typedef char* aiUserData; 1.74 + 1.75 +// ---------------------------------------------------------------------------------- 1.76 +/** @brief C-API: File system callbacks 1.77 + * 1.78 + * Provided are functions to open and close files. Supply a custom structure to 1.79 + * the import function. If you don't, a default implementation is used. Use custom 1.80 + * file systems to enable reading from other sources, such as ZIPs 1.81 + * or memory locations. */ 1.82 +struct aiFileIO 1.83 +{ 1.84 + /** Function used to open a new file 1.85 + */ 1.86 + aiFileOpenProc OpenProc; 1.87 + 1.88 + /** Function used to close an existing file 1.89 + */ 1.90 + aiFileCloseProc CloseProc; 1.91 + 1.92 + /** User-defined, opaque data */ 1.93 + aiUserData UserData; 1.94 +}; 1.95 + 1.96 +// ---------------------------------------------------------------------------------- 1.97 +/** @brief C-API: File callbacks 1.98 + * 1.99 + * Actually, it's a data structure to wrap a set of fXXXX (e.g fopen) 1.100 + * replacement functions. 1.101 + * 1.102 + * The default implementation of the functions utilizes the fXXX functions from 1.103 + * the CRT. However, you can supply a custom implementation to Assimp by 1.104 + * delivering a custom aiFileIO. Use this to enable reading from other sources, 1.105 + * such as ZIP archives or memory locations. */ 1.106 +struct aiFile 1.107 +{ 1.108 + /** Callback to read from a file */ 1.109 + aiFileReadProc ReadProc; 1.110 + 1.111 + /** Callback to write to a file */ 1.112 + aiFileWriteProc WriteProc; 1.113 + 1.114 + /** Callback to retrieve the current position of 1.115 + * the file cursor (ftell()) 1.116 + */ 1.117 + aiFileTellProc TellProc; 1.118 + 1.119 + /** Callback to retrieve the size of the file, 1.120 + * in bytes 1.121 + */ 1.122 + aiFileTellProc FileSizeProc; 1.123 + 1.124 + /** Callback to set the current position 1.125 + * of the file cursor (fseek()) 1.126 + */ 1.127 + aiFileSeek SeekProc; 1.128 + 1.129 + /** Callback to flush the file contents 1.130 + */ 1.131 + aiFileFlushProc FlushProc; 1.132 + 1.133 + /** User-defined, opaque data 1.134 + */ 1.135 + aiUserData UserData; 1.136 +}; 1.137 + 1.138 +#ifdef __cplusplus 1.139 +} 1.140 +#endif 1.141 +#endif // AI_FILEIO_H_INC