vrshoot

annotate libs/assimp/assimp/cfileio.h @ 0:b2f14e535253

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Feb 2014 19:58:19 +0200
parents
children
rev   line source
nuclear@0 1 /*
nuclear@0 2 ---------------------------------------------------------------------------
nuclear@0 3 Open Asset Import Library (assimp)
nuclear@0 4 ---------------------------------------------------------------------------
nuclear@0 5
nuclear@0 6 Copyright (c) 2006-2012, assimp team
nuclear@0 7
nuclear@0 8 All rights reserved.
nuclear@0 9
nuclear@0 10 Redistribution and use of this software in source and binary forms,
nuclear@0 11 with or without modification, are permitted provided that the following
nuclear@0 12 conditions are met:
nuclear@0 13
nuclear@0 14 * Redistributions of source code must retain the above
nuclear@0 15 copyright notice, this list of conditions and the
nuclear@0 16 following disclaimer.
nuclear@0 17
nuclear@0 18 * Redistributions in binary form must reproduce the above
nuclear@0 19 copyright notice, this list of conditions and the
nuclear@0 20 following disclaimer in the documentation and/or other
nuclear@0 21 materials provided with the distribution.
nuclear@0 22
nuclear@0 23 * Neither the name of the assimp team, nor the names of its
nuclear@0 24 contributors may be used to endorse or promote products
nuclear@0 25 derived from this software without specific prior
nuclear@0 26 written permission of the assimp team.
nuclear@0 27
nuclear@0 28 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
nuclear@0 29 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
nuclear@0 30 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
nuclear@0 31 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
nuclear@0 32 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
nuclear@0 33 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
nuclear@0 34 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
nuclear@0 35 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
nuclear@0 36 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
nuclear@0 37 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nuclear@0 38 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nuclear@0 39 ---------------------------------------------------------------------------
nuclear@0 40 */
nuclear@0 41
nuclear@0 42 /** @file aiFileIO.h
nuclear@0 43 * @brief Defines generic C routines to access memory-mapped files
nuclear@0 44 */
nuclear@0 45 #ifndef AI_FILEIO_H_INC
nuclear@0 46 #define AI_FILEIO_H_INC
nuclear@0 47
nuclear@0 48 #include "types.h"
nuclear@0 49 #ifdef __cplusplus
nuclear@0 50 extern "C" {
nuclear@0 51 #endif
nuclear@0 52 struct aiFileIO;
nuclear@0 53 struct aiFile;
nuclear@0 54
nuclear@0 55 // aiFile callbacks
nuclear@0 56 typedef size_t (*aiFileWriteProc) (C_STRUCT aiFile*, const char*, size_t, size_t);
nuclear@0 57 typedef size_t (*aiFileReadProc) (C_STRUCT aiFile*, char*, size_t,size_t);
nuclear@0 58 typedef size_t (*aiFileTellProc) (C_STRUCT aiFile*);
nuclear@0 59 typedef void (*aiFileFlushProc) (C_STRUCT aiFile*);
nuclear@0 60 typedef aiReturn (*aiFileSeek)(C_STRUCT aiFile*, size_t, aiOrigin);
nuclear@0 61
nuclear@0 62 // aiFileIO callbacks
nuclear@0 63 typedef aiFile* (*aiFileOpenProc) (C_STRUCT aiFileIO*, const char*, const char*);
nuclear@0 64 typedef void (*aiFileCloseProc) (C_STRUCT aiFileIO*, C_STRUCT aiFile*);
nuclear@0 65
nuclear@0 66 // Represents user-defined data
nuclear@0 67 typedef char* aiUserData;
nuclear@0 68
nuclear@0 69 // ----------------------------------------------------------------------------------
nuclear@0 70 /** @brief C-API: File system callbacks
nuclear@0 71 *
nuclear@0 72 * Provided are functions to open and close files. Supply a custom structure to
nuclear@0 73 * the import function. If you don't, a default implementation is used. Use custom
nuclear@0 74 * file systems to enable reading from other sources, such as ZIPs
nuclear@0 75 * or memory locations. */
nuclear@0 76 struct aiFileIO
nuclear@0 77 {
nuclear@0 78 /** Function used to open a new file
nuclear@0 79 */
nuclear@0 80 aiFileOpenProc OpenProc;
nuclear@0 81
nuclear@0 82 /** Function used to close an existing file
nuclear@0 83 */
nuclear@0 84 aiFileCloseProc CloseProc;
nuclear@0 85
nuclear@0 86 /** User-defined, opaque data */
nuclear@0 87 aiUserData UserData;
nuclear@0 88 };
nuclear@0 89
nuclear@0 90 // ----------------------------------------------------------------------------------
nuclear@0 91 /** @brief C-API: File callbacks
nuclear@0 92 *
nuclear@0 93 * Actually, it's a data structure to wrap a set of fXXXX (e.g fopen)
nuclear@0 94 * replacement functions.
nuclear@0 95 *
nuclear@0 96 * The default implementation of the functions utilizes the fXXX functions from
nuclear@0 97 * the CRT. However, you can supply a custom implementation to Assimp by
nuclear@0 98 * delivering a custom aiFileIO. Use this to enable reading from other sources,
nuclear@0 99 * such as ZIP archives or memory locations. */
nuclear@0 100 struct aiFile
nuclear@0 101 {
nuclear@0 102 /** Callback to read from a file */
nuclear@0 103 aiFileReadProc ReadProc;
nuclear@0 104
nuclear@0 105 /** Callback to write to a file */
nuclear@0 106 aiFileWriteProc WriteProc;
nuclear@0 107
nuclear@0 108 /** Callback to retrieve the current position of
nuclear@0 109 * the file cursor (ftell())
nuclear@0 110 */
nuclear@0 111 aiFileTellProc TellProc;
nuclear@0 112
nuclear@0 113 /** Callback to retrieve the size of the file,
nuclear@0 114 * in bytes
nuclear@0 115 */
nuclear@0 116 aiFileTellProc FileSizeProc;
nuclear@0 117
nuclear@0 118 /** Callback to set the current position
nuclear@0 119 * of the file cursor (fseek())
nuclear@0 120 */
nuclear@0 121 aiFileSeek SeekProc;
nuclear@0 122
nuclear@0 123 /** Callback to flush the file contents
nuclear@0 124 */
nuclear@0 125 aiFileFlushProc FlushProc;
nuclear@0 126
nuclear@0 127 /** User-defined, opaque data
nuclear@0 128 */
nuclear@0 129 aiUserData UserData;
nuclear@0 130 };
nuclear@0 131
nuclear@0 132 #ifdef __cplusplus
nuclear@0 133 }
nuclear@0 134 #endif
nuclear@0 135 #endif // AI_FILEIO_H_INC