annotate SDL3/SDL_iostream.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /* WIKI CATEGORY: IOStream */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * # CategoryIOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * SDL provides an abstract interface for reading and writing data streams. It
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 * offers implementations for files, memory, etc, and the app can provide
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * their own implementations, too.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 * SDL_IOStream is not related to the standard C++ iostream class, other than
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * both are abstract interfaces to read/write data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #ifndef SDL_iostream_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 #define SDL_iostream_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 #include <SDL3/SDL_properties.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 * SDL_IOStream status, set by a read or write operation.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 typedef enum SDL_IOStatus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 SDL_IO_STATUS_READY, /**< Everything is ready (no errors and not EOF). */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 SDL_IO_STATUS_ERROR, /**< Read or write I/O error */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 SDL_IO_STATUS_EOF, /**< End of file */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 SDL_IO_STATUS_NOT_READY, /**< Non blocking I/O, not ready */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 SDL_IO_STATUS_READONLY, /**< Tried to write a read-only buffer */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 SDL_IO_STATUS_WRITEONLY /**< Tried to read a write-only buffer */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 } SDL_IOStatus;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 * Possible `whence` values for SDL_IOStream seeking.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 * These map to the same "whence" concept that `fseek` or `lseek` use in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * standard C runtime.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 typedef enum SDL_IOWhence
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 SDL_IO_SEEK_SET, /**< Seek from the beginning of data */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 SDL_IO_SEEK_CUR, /**< Seek relative to current read point */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 SDL_IO_SEEK_END /**< Seek relative to the end of data */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 } SDL_IOWhence;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 * The function pointers that drive an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * Applications can provide this struct to SDL_OpenIO() to create their own
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * implementation of SDL_IOStream. This is not necessarily required, as SDL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * already offers several common types of I/O streams, via functions like
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 * SDL_IOFromFile() and SDL_IOFromMem().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 * This structure should be initialized using SDL_INIT_INTERFACE()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 * \sa SDL_INIT_INTERFACE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 typedef struct SDL_IOStreamInterface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 /* The version of this interface */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 Uint32 version;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 * Return the number of bytes in this SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 * \return the total size of the data stream, or -1 on error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 Sint64 (SDLCALL *size)(void *userdata);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * Seek to `offset` relative to `whence`, one of stdio's whence values:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * SDL_IO_SEEK_SET, SDL_IO_SEEK_CUR, SDL_IO_SEEK_END
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 * \return the final offset in the data stream, or -1 on error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 Sint64 (SDLCALL *seek)(void *userdata, Sint64 offset, SDL_IOWhence whence);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * Read up to `size` bytes from the data stream to the area pointed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 * at by `ptr`. `size` will always be > 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 * On an incomplete read, you should set `*status` to a value from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 * SDL_IOStatus enum. You do not have to explicitly set this on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 * a complete, successful read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 * \return the number of bytes read
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 size_t (SDLCALL *read)(void *userdata, void *ptr, size_t size, SDL_IOStatus *status);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 * Write exactly `size` bytes from the area pointed at by `ptr`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * to data stream. `size` will always be > 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * On an incomplete write, you should set `*status` to a value from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 * SDL_IOStatus enum. You do not have to explicitly set this on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * a complete, successful write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 * \return the number of bytes written
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 size_t (SDLCALL *write)(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 * If the stream is buffering, make sure the data is written out.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 * On failure, you should set `*status` to a value from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 * SDL_IOStatus enum. You do not have to explicitly set this on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 * a successful flush.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 * \return true if successful or false on write error when flushing data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 bool (SDLCALL *flush)(void *userdata, SDL_IOStatus *status);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 * Close and free any allocated resources.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 * This does not guarantee file writes will sync to physical media; they
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 * can be in the system's file cache, waiting to go to disk.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 * The SDL_IOStream is still destroyed even if this fails, so clean up anything
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 * even if flushing buffers, etc, returns an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * \return true if successful or false on write error when flushing data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 bool (SDLCALL *close)(void *userdata);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 } SDL_IOStreamInterface;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 /* Check the size of SDL_IOStreamInterface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * If this assert fails, either the compiler is padding to an unexpected size,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 * or the interface has been updated and this should be updated to match and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * the code using this interface should be updated to handle the old version.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 SDL_COMPILE_TIME_ASSERT(SDL_IOStreamInterface_SIZE,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 (sizeof(void *) == 4 && sizeof(SDL_IOStreamInterface) == 28) ||
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 (sizeof(void *) == 8 && sizeof(SDL_IOStreamInterface) == 56));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 * The read/write operation structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 * This operates as an opaque handle. There are several APIs to create various
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * types of I/O streams, or an app can supply an SDL_IOStreamInterface to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 * SDL_OpenIO() to provide their own stream implementation behind this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 * struct's abstract interface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 typedef struct SDL_IOStream SDL_IOStream;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 * \name IOFrom functions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 * Functions to create SDL_IOStream structures from various data streams.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 /* @{ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 * Use this function to create a new SDL_IOStream structure for reading from
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 * and/or writing to a named file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 * The `mode` string is treated roughly the same as in a call to the C
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 * library's fopen(), even if SDL doesn't happen to use fopen() behind the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 * scenes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 * Available `mode` strings:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 * - "r": Open a file for reading. The file must exist.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 * - "w": Create an empty file for writing. If a file with the same name
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 * already exists its content is erased and the file is treated as a new
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 * empty file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * - "wx": Create an empty file for writing. If a file with the same name
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 * already exists, the call fails.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 * - "a": Append to a file. Writing operations append data at the end of the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 * file. The file is created if it does not exist.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 * - "r+": Open a file for update both reading and writing. The file must
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 * exist.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 * - "w+": Create an empty file for both reading and writing. If a file with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 * the same name already exists its content is erased and the file is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * treated as a new empty file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 * - "w+x": Create an empty file for both reading and writing. If a file with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * the same name already exists, the call fails.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 * - "a+": Open a file for reading and appending. All writing operations are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 * performed at the end of the file, protecting the previous content to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 * overwritten. You can reposition (fseek, rewind) the internal pointer to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 * anywhere in the file for reading, but writing operations will move it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 * back to the end of file. The file is created if it does not exist.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 * **NOTE**: In order to open a file as a binary file, a "b" character has to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 * be included in the `mode` string. This additional "b" character can either
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 * be appended at the end of the string (thus making the following compound
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+").
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * Additional characters may follow the sequence, although they should have no
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 * effect. For example, "t" is sometimes appended to make explicit the file is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * a text file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * This function supports Unicode filenames, but they must be encoded in UTF-8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * format, regardless of the underlying operating system.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 * In Android, SDL_IOFromFile() can be used to open content:// URIs. As a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 * fallback, SDL_IOFromFile() will transparently open a matching filename in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * the app's `assets`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * Closing the SDL_IOStream will close SDL's internal file handle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * The following properties may be set at creation time by SDL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * - `SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER`: a pointer, that can be cast
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 * to a win32 `HANDLE`, that this SDL_IOStream is using to access the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * filesystem. If the program isn't running on Windows, or SDL used some
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 * other method to access the filesystem, this property will not be set.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 * - `SDL_PROP_IOSTREAM_STDIO_FILE_POINTER`: a pointer, that can be cast to a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 * stdio `FILE *`, that this SDL_IOStream is using to access the filesystem.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 * If SDL used some other method to access the filesystem, this property
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 * will not be set. PLEASE NOTE that if SDL is using a different C runtime
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 * than your app, trying to use this pointer will almost certainly result in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 * a crash! This is mostly a problem on Windows; make sure you build SDL and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 * your app with the same compiler and settings to avoid it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 * - `SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER`: a file descriptor that this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 * SDL_IOStream is using to access the filesystem.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 * - `SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER`: a pointer, that can be cast
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 * to an Android NDK `AAsset *`, that this SDL_IOStream is using to access
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 * the filesystem. If SDL used some other method to access the filesystem,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 * this property will not be set.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 * \param file a UTF-8 string representing the filename to open.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 * \param mode an ASCII string representing the mode to be used for opening
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 * the file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 * \returns a pointer to the SDL_IOStream structure that is created or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 * \sa SDL_CloseIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 * \sa SDL_FlushIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 * \sa SDL_ReadIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 * \sa SDL_TellIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromFile(const char *file, const char *mode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 #define SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER "SDL.iostream.windows.handle"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 #define SDL_PROP_IOSTREAM_STDIO_FILE_POINTER "SDL.iostream.stdio.file"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 #define SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER "SDL.iostream.file_descriptor"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 #define SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER "SDL.iostream.android.aasset"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 * Use this function to prepare a read-write memory buffer for use with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 * SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 * This function sets up an SDL_IOStream struct based on a memory area of a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 * certain size, for both read and write access.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 * This memory buffer is not copied by the SDL_IOStream; the pointer you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * provide must remain valid until you close the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 * If you need to make sure the SDL_IOStream never writes to the memory
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 * buffer, you should use SDL_IOFromConstMem() with a read-only buffer of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 * memory instead.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 * The following properties will be set at creation time by SDL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 * - `SDL_PROP_IOSTREAM_MEMORY_POINTER`: this will be the `mem` parameter that
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 * was passed to this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 * - `SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER`: this will be the `size` parameter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 * that was passed to this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 * Additionally, the following properties are recognized:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 * - `SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER`: if this property is set to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 * a non-NULL value it will be interpreted as a function of SDL_free_func
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 * type and called with the passed `mem` pointer when closing the stream. By
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 * default it is unset, i.e., the memory will not be freed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 * \param mem a pointer to a buffer to feed an SDL_IOStream stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 * \param size the buffer size, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 * \returns a pointer to a new SDL_IOStream structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 * \sa SDL_IOFromConstMem
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 * \sa SDL_CloseIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 * \sa SDL_FlushIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 * \sa SDL_ReadIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 * \sa SDL_TellIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromMem(void *mem, size_t size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332 #define SDL_PROP_IOSTREAM_MEMORY_POINTER "SDL.iostream.memory.base"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 #define SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER "SDL.iostream.memory.size"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 #define SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER "SDL.iostream.memory.free"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 * Use this function to prepare a read-only memory buffer for use with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 * SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 * This function sets up an SDL_IOStream struct based on a memory area of a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 * certain size. It assumes the memory area is not writable.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 * Attempting to write to this SDL_IOStream stream will report an error
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 * without writing to the memory buffer.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 * This memory buffer is not copied by the SDL_IOStream; the pointer you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 * provide must remain valid until you close the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 * If you need to write to a memory buffer, you should use SDL_IOFromMem()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350 * with a writable buffer of memory instead.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352 * The following properties will be set at creation time by SDL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 * - `SDL_PROP_IOSTREAM_MEMORY_POINTER`: this will be the `mem` parameter that
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 * was passed to this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 * - `SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER`: this will be the `size` parameter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 * that was passed to this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 * Additionally, the following properties are recognized:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 * - `SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER`: if this property is set to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362 * a non-NULL value it will be interpreted as a function of SDL_free_func
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363 * type and called with the passed `mem` pointer when closing the stream. By
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 * default it is unset, i.e., the memory will not be freed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 * \param mem a pointer to a read-only buffer to feed an SDL_IOStream stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 * \param size the buffer size, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 * \returns a pointer to a new SDL_IOStream structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 * \sa SDL_IOFromMem
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 * \sa SDL_CloseIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 * \sa SDL_ReadIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 * \sa SDL_TellIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromConstMem(const void *mem, size_t size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 * Use this function to create an SDL_IOStream that is backed by dynamically
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 * allocated memory.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 * This supports the following properties to provide access to the memory and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 * control over allocations:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390 * - `SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER`: a pointer to the internal
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 * memory of the stream. This can be set to NULL to transfer ownership of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 * the memory to the application, which should free the memory with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 * SDL_free(). If this is done, the next operation on the stream must be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 * SDL_CloseIO().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 * - `SDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER`: memory will be allocated in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 * multiples of this size, defaulting to 1024.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 * \returns a pointer to a new SDL_IOStream structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405 * \sa SDL_CloseIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 * \sa SDL_ReadIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408 * \sa SDL_TellIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromDynamicMem(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 #define SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER "SDL.iostream.dynamic.memory"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 #define SDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER "SDL.iostream.dynamic.chunksize"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 /* @} *//* IOFrom functions */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 * Create a custom SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 * Applications do not need to use this function unless they are providing
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 * their own SDL_IOStream implementation. If you just need an SDL_IOStream to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 * read/write a common data source, you should use the built-in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 * implementations in SDL, like SDL_IOFromFile() or SDL_IOFromMem(), etc.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 * This function makes a copy of `iface` and the caller does not need to keep
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 * it around after this call.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 * \param iface the interface that implements this SDL_IOStream, initialized
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 * using SDL_INIT_INTERFACE().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 * \param userdata the pointer that will be passed to the interface functions.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 * \returns a pointer to the allocated memory on success or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 * \sa SDL_CloseIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 * \sa SDL_INIT_INTERFACE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 * \sa SDL_IOFromConstMem
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 * \sa SDL_IOFromFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 * \sa SDL_IOFromMem
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_OpenIO(const SDL_IOStreamInterface *iface, void *userdata);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449 * Close and free an allocated SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 * SDL_CloseIO() closes and cleans up the SDL_IOStream stream. It releases any
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 * resources used by the stream and frees the SDL_IOStream itself. This
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 * returns true on success, or false if the stream failed to flush to its
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 * output (e.g. to disk).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 * Note that if this fails to flush the stream for any reason, this function
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 * reports an error, but the SDL_IOStream is still invalid once this function
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 * returns.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 * This call flushes any buffered writes to the operating system, but there
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461 * are no guarantees that those writes have gone to physical media; they might
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 * be in the OS's file cache, waiting to go to disk later. If it's absolutely
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 * crucial that writes go to disk immediately, so they are definitely stored
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 * even if the power fails before the file cache would have caught up, one
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 * should call SDL_FlushIO() before closing. Note that flushing takes time and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 * makes the system and your app operate less efficiently, so do so sparingly.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 * \param context SDL_IOStream structure to close.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 * \sa SDL_OpenIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 extern SDL_DECLSPEC bool SDLCALL SDL_CloseIO(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 * Get the properties associated with an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 * \returns a valid property ID on success or 0 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetIOProperties(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 * Query the stream status of an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 * This information can be useful to decide if a short read or write was due
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 * to an error, an EOF, or a non-blocking operation that isn't yet ready to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 * complete.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 * An SDL_IOStream's status is only expected to change after a SDL_ReadIO or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 * SDL_WriteIO call; don't expect it to change if you just call this query
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 * function in a tight loop.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 * \param context the SDL_IOStream to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 * \returns an SDL_IOStatus enum with the current state.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 extern SDL_DECLSPEC SDL_IOStatus SDLCALL SDL_GetIOStatus(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 * Use this function to get the size of the data stream in an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 * \param context the SDL_IOStream to get the size of the data stream from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 * \returns the size of the data stream in the SDL_IOStream on success or a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 * negative error code on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 extern SDL_DECLSPEC Sint64 SDLCALL SDL_GetIOSize(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 * Seek within an SDL_IOStream data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530 * This function seeks to byte `offset`, relative to `whence`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 * `whence` may be any of the following values:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 * - `SDL_IO_SEEK_SET`: seek from the beginning of data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 * - `SDL_IO_SEEK_CUR`: seek relative to current read point
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 * - `SDL_IO_SEEK_END`: seek relative to the end of data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 * If this stream can not seek, it will return -1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 * \param offset an offset in bytes, relative to `whence` location; can be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 * negative.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 * \param whence any of `SDL_IO_SEEK_SET`, `SDL_IO_SEEK_CUR`,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 * `SDL_IO_SEEK_END`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 * \returns the final offset in the data stream after the seek or -1 on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 * \sa SDL_TellIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 extern SDL_DECLSPEC Sint64 SDLCALL SDL_SeekIO(SDL_IOStream *context, Sint64 offset, SDL_IOWhence whence);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 * Determine the current read/write offset in an SDL_IOStream data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 * SDL_TellIO is actually a wrapper function that calls the SDL_IOStream's
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 * `seek` method, with an offset of 0 bytes from `SDL_IO_SEEK_CUR`, to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 * simplify application development.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 * \param context an SDL_IOStream data stream object from which to get the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 * current offset.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 * \returns the current offset in the stream, or -1 if the information can not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 * be determined.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 extern SDL_DECLSPEC Sint64 SDLCALL SDL_TellIO(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 * Read from a data source.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 * This function reads up `size` bytes from the data source to the area
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 * pointed at by `ptr`. This function may read less bytes than requested.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 * This function will return zero when the data stream is completely read, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583 * SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If zero is returned and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584 * the stream is not at EOF, SDL_GetIOStatus() will return a different error
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 * value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587 * A request for zero bytes on a valid stream will return zero immediately
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 * without accessing the stream, so the stream status (EOF, err, etc) will not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 * change.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592 * \param ptr a pointer to a buffer to read data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593 * \param size the number of bytes to read from the data source.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
594 * \returns the number of bytes read, or 0 on end of file or other failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
595 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
596 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
597 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
598 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
599 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
600 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
601 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
602 * \sa SDL_GetIOStatus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
603 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
604 extern SDL_DECLSPEC size_t SDLCALL SDL_ReadIO(SDL_IOStream *context, void *ptr, size_t size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
605
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
606 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
607 * Write to an SDL_IOStream data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
608 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
609 * This function writes exactly `size` bytes from the area pointed at by `ptr`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
610 * to the stream. If this fails for any reason, it'll return less than `size`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
611 * to demonstrate how far the write progressed. On success, it returns `size`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
612 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
613 * On error, this function still attempts to write as much as possible, so it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
614 * might return a positive value less than the requested write size.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
615 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
616 * The caller can use SDL_GetIOStatus() to determine if the problem is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
617 * recoverable, such as a non-blocking write that can simply be retried later,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
618 * or a fatal error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
619 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
620 * A request for zero bytes on a valid stream will return zero immediately
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
621 * without accessing the stream, so the stream status (EOF, err, etc) will not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
622 * change.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
623 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
624 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
625 * \param ptr a pointer to a buffer containing data to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
626 * \param size the number of bytes to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
627 * \returns the number of bytes written, which will be less than `size` on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
628 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
629 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
630 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
631 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
632 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
633 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
634 * \sa SDL_IOprintf
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
635 * \sa SDL_ReadIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
636 * \sa SDL_SeekIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
637 * \sa SDL_FlushIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
638 * \sa SDL_GetIOStatus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
639 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
640 extern SDL_DECLSPEC size_t SDLCALL SDL_WriteIO(SDL_IOStream *context, const void *ptr, size_t size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
641
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
642 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
643 * Print to an SDL_IOStream data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
644 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
645 * This function does formatted printing to the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
646 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
647 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
648 * \param fmt a printf() style format string.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
649 * \param ... additional parameters matching % tokens in the `fmt` string, if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
650 * any.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
651 * \returns the number of bytes written or 0 on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
652 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
653 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
654 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
655 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
656 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
657 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
658 * \sa SDL_IOvprintf
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
659 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
660 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
661 extern SDL_DECLSPEC size_t SDLCALL SDL_IOprintf(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
662
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
663 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
664 * Print to an SDL_IOStream data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
665 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
666 * This function does formatted printing to the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
667 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
668 * \param context a pointer to an SDL_IOStream structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
669 * \param fmt a printf() style format string.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
670 * \param ap a variable argument list.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
671 * \returns the number of bytes written or 0 on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
672 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
673 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
674 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
675 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
676 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
677 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
678 * \sa SDL_IOprintf
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
679 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
680 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
681 extern SDL_DECLSPEC size_t SDLCALL SDL_IOvprintf(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
682
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
683 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
684 * Flush any buffered data in the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
685 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
686 * This function makes sure that any buffered data is written to the stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
687 * Normally this isn't necessary but if the stream is a pipe or socket it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
688 * guarantees that any pending data is sent.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
689 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
690 * \param context SDL_IOStream structure to flush.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
691 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
692 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
693 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
694 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
695 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
696 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
697 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
698 * \sa SDL_OpenIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
699 * \sa SDL_WriteIO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
700 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
701 extern SDL_DECLSPEC bool SDLCALL SDL_FlushIO(SDL_IOStream *context);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
702
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
703 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
704 * Load all the data from an SDL data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
705 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
706 * The data is allocated with a zero byte at the end (null terminated) for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
707 * convenience. This extra byte is not included in the value reported via
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
708 * `datasize`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
709 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
710 * The data should be freed with SDL_free().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
711 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
712 * \param src the SDL_IOStream to read all available data from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
713 * \param datasize a pointer filled in with the number of bytes read, may be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
714 * NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
715 * \param closeio if true, calls SDL_CloseIO() on `src` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
716 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
717 * \returns the data or NULL on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
718 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
719 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
720 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
721 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
722 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
723 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
724 * \sa SDL_LoadFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
725 * \sa SDL_SaveFile_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
726 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
727 extern SDL_DECLSPEC void * SDLCALL SDL_LoadFile_IO(SDL_IOStream *src, size_t *datasize, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
728
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
729 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
730 * Load all the data from a file path.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
731 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
732 * The data is allocated with a zero byte at the end (null terminated) for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
733 * convenience. This extra byte is not included in the value reported via
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
734 * `datasize`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
735 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
736 * The data should be freed with SDL_free().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
737 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
738 * \param file the path to read all available data from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
739 * \param datasize if not NULL, will store the number of bytes read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
740 * \returns the data or NULL on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
741 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
742 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
743 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
744 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
745 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
746 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
747 * \sa SDL_LoadFile_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
748 * \sa SDL_SaveFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
749 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
750 extern SDL_DECLSPEC void * SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
751
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
752 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
753 * Save all the data into an SDL data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
754 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
755 * \param src the SDL_IOStream to write all data to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
756 * \param data the data to be written. If datasize is 0, may be NULL or a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
757 * invalid pointer.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
758 * \param datasize the number of bytes to be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
759 * \param closeio if true, calls SDL_CloseIO() on `src` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
760 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
761 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
762 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
763 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
764 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
765 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
766 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
767 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
768 * \sa SDL_SaveFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
769 * \sa SDL_LoadFile_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
770 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
771 extern SDL_DECLSPEC bool SDLCALL SDL_SaveFile_IO(SDL_IOStream *src, const void *data, size_t datasize, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
772
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
773 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
774 * Save all the data into a file path.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
775 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
776 * \param file the path to write all available data into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
777 * \param data the data to be written. If datasize is 0, may be NULL or a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
778 * invalid pointer.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
779 * \param datasize the number of bytes to be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
780 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
781 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
782 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
783 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
784 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
785 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
786 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
787 * \sa SDL_SaveFile_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
788 * \sa SDL_LoadFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
789 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
790 extern SDL_DECLSPEC bool SDLCALL SDL_SaveFile(const char *file, const void *data, size_t datasize);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
791
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
792 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
793 * \name Read endian functions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
794 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
795 * Read an item of the specified endianness and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
796 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
797 /* @{ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
798
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
799 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
800 * Use this function to read a byte from an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
801 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
802 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
803 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
804 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
805 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
806 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
807 * \param src the SDL_IOStream to read from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
808 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
809 * \returns true on success or false on failure or EOF; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
810 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
811 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
812 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
813 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
814 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
815 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
816 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU8(SDL_IOStream *src, Uint8 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
817
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
818 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
819 * Use this function to read a signed byte from an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
820 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
821 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
822 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
823 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
824 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
825 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
826 * \param src the SDL_IOStream to read from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
827 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
828 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
829 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
830 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
831 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
832 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
833 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
834 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
835 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS8(SDL_IOStream *src, Sint8 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
836
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
837 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
838 * Use this function to read 16 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
839 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
840 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
841 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
842 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
843 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
844 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
845 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
846 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
847 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
848 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
849 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
850 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
851 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
852 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
853 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
854 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
855 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
856 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
857 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
858 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16LE(SDL_IOStream *src, Uint16 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
859
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
860 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
861 * Use this function to read 16 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
862 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
863 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
864 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
865 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
866 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
867 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
868 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
869 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
870 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
871 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
872 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
873 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
874 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
875 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
876 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
877 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
878 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
879 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
880 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
881 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16LE(SDL_IOStream *src, Sint16 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
882
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
883 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
884 * Use this function to read 16 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
885 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
886 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
887 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
888 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
889 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
890 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
891 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
892 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
893 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
894 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
895 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
896 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
897 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
898 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
899 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
900 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
901 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
902 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
903 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
904 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16BE(SDL_IOStream *src, Uint16 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
905
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
906 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
907 * Use this function to read 16 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
908 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
909 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
910 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
911 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
912 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
913 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
914 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
915 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
916 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
917 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
918 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
919 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
920 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
921 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
922 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
923 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
924 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
925 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
926 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
927 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16BE(SDL_IOStream *src, Sint16 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
928
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
929 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
930 * Use this function to read 32 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
931 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
932 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
933 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
934 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
935 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
936 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
937 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
938 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
939 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
940 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
941 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
942 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
943 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
944 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
945 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
946 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
947 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
948 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
949 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
950 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32LE(SDL_IOStream *src, Uint32 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
951
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
952 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
953 * Use this function to read 32 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
954 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
955 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
956 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
957 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
958 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
959 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
960 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
961 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
962 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
963 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
964 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
965 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
966 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
967 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
968 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
969 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
970 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
971 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
972 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
973 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32LE(SDL_IOStream *src, Sint32 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
974
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
975 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
976 * Use this function to read 32 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
977 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
978 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
979 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
980 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
981 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
982 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
983 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
984 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
985 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
986 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
987 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
988 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
989 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
990 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
991 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
992 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
993 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
994 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
995 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
996 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32BE(SDL_IOStream *src, Uint32 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
997
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
998 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
999 * Use this function to read 32 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1000 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1001 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1002 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1003 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1004 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1005 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1006 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1007 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1008 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1009 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1010 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1011 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1012 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1013 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1014 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1015 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1016 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1017 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1018 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1019 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32BE(SDL_IOStream *src, Sint32 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1020
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1021 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1022 * Use this function to read 64 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1023 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1024 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1025 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1026 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1027 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1028 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1029 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1030 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1031 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1032 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1033 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1034 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1035 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1036 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1037 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1038 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1039 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1040 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1041 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1042 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64LE(SDL_IOStream *src, Uint64 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1043
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1044 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1045 * Use this function to read 64 bits of little-endian data from an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1046 * SDL_IOStream and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1047 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1048 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1049 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1050 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1051 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1052 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1053 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1054 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1055 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1056 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1057 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1058 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1059 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1060 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1061 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1062 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1063 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1064 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1065 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64LE(SDL_IOStream *src, Sint64 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1066
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1067 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1068 * Use this function to read 64 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1069 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1070 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1071 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1072 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1073 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1074 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1075 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1076 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1077 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1078 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1079 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1080 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1081 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1082 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1083 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1084 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1085 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1086 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1087 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1088 extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64BE(SDL_IOStream *src, Uint64 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1089
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1090 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1091 * Use this function to read 64 bits of big-endian data from an SDL_IOStream
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1092 * and return in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1093 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1094 * SDL byteswaps the data only if necessary, so the data returned will be in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1095 * the native byte order.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1096 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1097 * This function will return false when the data stream is completely read,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1098 * and SDL_GetIOStatus() will return SDL_IO_STATUS_EOF. If false is returned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1099 * and the stream is not at EOF, SDL_GetIOStatus() will return a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1100 * error value and SDL_GetError() will offer a human-readable message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1101 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1102 * \param src the stream from which to read data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1103 * \param value a pointer filled in with the data read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1104 * \returns true on successful read or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1105 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1106 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1107 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1108 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1109 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1110 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1111 extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64BE(SDL_IOStream *src, Sint64 *value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1112 /* @} *//* Read endian functions */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1113
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1114 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1115 * \name Write endian functions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1116 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1117 * Write an item of native format to the specified endianness.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1118 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1119 /* @{ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1120
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1121 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1122 * Use this function to write a byte to an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1123 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1124 * \param dst the SDL_IOStream to write to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1125 * \param value the byte value to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1126 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1127 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1128 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1129 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1130 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1131 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1132 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1133 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU8(SDL_IOStream *dst, Uint8 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1134
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1135 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1136 * Use this function to write a signed byte to an SDL_IOStream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1137 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1138 * \param dst the SDL_IOStream to write to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1139 * \param value the byte value to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1140 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1141 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1142 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1143 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1144 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1145 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1146 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1147 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS8(SDL_IOStream *dst, Sint8 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1148
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1149 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1150 * Use this function to write 16 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1151 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1152 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1153 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1154 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1155 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1156 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1157 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1158 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1159 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1160 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1161 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1162 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1163 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1164 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1165 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1166 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16LE(SDL_IOStream *dst, Uint16 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1167
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1168 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1169 * Use this function to write 16 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1170 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1171 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1172 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1173 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1174 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1175 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1176 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1177 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1178 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1179 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1180 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1181 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1182 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1183 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1184 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1185 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16LE(SDL_IOStream *dst, Sint16 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1187 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1188 * Use this function to write 16 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1189 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1190 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1191 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1192 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1193 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1194 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1195 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1196 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1197 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1198 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1199 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1200 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1201 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1202 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1203 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16BE(SDL_IOStream *dst, Uint16 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1204
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1205 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1206 * Use this function to write 16 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1207 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1208 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1209 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1210 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1211 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1212 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1213 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1214 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1215 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1216 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1217 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1218 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1219 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1220 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1221 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16BE(SDL_IOStream *dst, Sint16 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1222
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1223 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1224 * Use this function to write 32 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1225 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1226 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1227 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1228 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1229 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1230 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1231 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1232 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1233 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1234 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1235 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1236 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1237 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1238 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1239 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1240 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32LE(SDL_IOStream *dst, Uint32 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1241
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1242 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1243 * Use this function to write 32 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1244 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1245 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1246 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1247 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1248 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1249 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1250 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1251 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1252 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1253 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1254 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1255 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1256 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1257 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1258 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1259 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32LE(SDL_IOStream *dst, Sint32 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1260
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1261 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1262 * Use this function to write 32 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1263 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1264 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1265 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1266 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1267 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1268 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1269 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1270 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1271 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1272 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1273 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1274 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1275 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1276 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1277 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32BE(SDL_IOStream *dst, Uint32 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1278
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1279 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1280 * Use this function to write 32 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1281 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1282 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1283 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1284 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1285 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1286 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1287 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1288 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1289 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1290 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1291 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1292 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1293 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1294 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1295 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32BE(SDL_IOStream *dst, Sint32 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1296
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1297 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1298 * Use this function to write 64 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1299 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1300 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1301 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1302 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1303 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1304 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1305 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1306 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1307 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1308 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1309 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1310 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1311 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1312 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1313 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1314 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64LE(SDL_IOStream *dst, Uint64 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1315
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1316 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1317 * Use this function to write 64 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1318 * little-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1319 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1320 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1321 * specifies native format, and the data written will be in little-endian
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1322 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1323 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1324 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1325 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1326 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1327 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1328 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1329 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1330 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1331 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1332 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1333 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS64LE(SDL_IOStream *dst, Sint64 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1334
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1335 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1336 * Use this function to write 64 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1337 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1338 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1339 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1340 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1341 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1342 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1343 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1344 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1345 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1346 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1347 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1348 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1349 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1350 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1351 extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64BE(SDL_IOStream *dst, Uint64 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1352
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1353 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1354 * Use this function to write 64 bits in native format to an SDL_IOStream as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1355 * big-endian data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1356 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1357 * SDL byteswaps the data only if necessary, so the application always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1358 * specifies native format, and the data written will be in big-endian format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1359 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1360 * \param dst the stream to which data will be written.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1361 * \param value the data to be written, in native format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1362 * \returns true on successful write or false on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1363 * for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1364 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1365 * \threadsafety Do not use the same SDL_IOStream from two threads at once.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1366 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1367 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1368 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1369 extern SDL_DECLSPEC bool SDLCALL SDL_WriteS64BE(SDL_IOStream *dst, Sint64 value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1370
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1371 /* @} *//* Write endian functions */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1372
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1373 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1374 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1375 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1376 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1377 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1378
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1379 #endif /* SDL_iostream_h_ */