My Project
Loading...
Searching...
No Matches
SDL_rwops.h
Go to the documentation of this file.
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
4
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
20*/
21
29#ifndef SDL_rwops_h_
30#define SDL_rwops_h_
31
32#include "SDL_stdinc.h"
33#include "SDL_error.h"
34
35#include "begin_code.h"
36/* Set up for C function definitions, even when using C++ */
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* RWops Types */
42#define SDL_RWOPS_UNKNOWN 0U
43#define SDL_RWOPS_WINFILE 1U
44#define SDL_RWOPS_STDFILE 2U
45#define SDL_RWOPS_JNIFILE 3U
46#define SDL_RWOPS_MEMORY 4U
47#define SDL_RWOPS_MEMORY_RO 5U
52typedef struct SDL_RWops
53{
57 Sint64 (SDLCALL * size) (struct SDL_RWops * context);
58
65 Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
66 int whence);
67
74 size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
75 size_t size, size_t maxnum);
76
83 size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
84 size_t size, size_t num);
85
91 int (SDLCALL * close) (struct SDL_RWops * context);
92
93 Uint32 type;
94 union
95 {
96#if defined(__ANDROID__)
97 struct
98 {
99 void *asset;
100 } androidio;
101#elif defined(__WIN32__) || defined(__GDK__)
102 struct
103 {
104 SDL_bool append;
105 void *h;
106 struct
107 {
108 void *data;
109 size_t size;
110 size_t left;
111 } buffer;
112 } windowsio;
113#endif
114
115#ifdef HAVE_STDIO_H
116 struct
117 {
118 SDL_bool autoclose;
119 FILE *fp;
120 } stdio;
121#endif
122 struct
123 {
124 Uint8 *base;
125 Uint8 *here;
126 Uint8 *stop;
127 } mem;
128 struct
129 {
130 void *data1;
131 void *data2;
132 } unknown;
133 } hidden;
134
136
137
143/* @{ */
144
206extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
207 const char *mode);
208
209#ifdef HAVE_STDIO_H
210
211extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose);
212
213#else
214
245extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
246 SDL_bool autoclose);
247#endif
248
280extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
281
314extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
315 int size);
316
317/* @} *//* RWFrom functions */
318
319
343extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
344
367extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
368
369#define RW_SEEK_SET 0
370#define RW_SEEK_CUR 1
371#define RW_SEEK_END 2
385extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
386
422extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
423 Sint64 offset, int whence);
424
450extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
451
482extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
483 void *ptr, size_t size,
484 size_t maxnum);
485
516extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
517 const void *ptr, size_t size,
518 size_t num);
519
547extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
548
565extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src,
566 size_t *datasize,
567 int freesrc);
568
587extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
588
594/* @{ */
595
607extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
608
623extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
624
639extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
640
655extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
656
671extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
672
687extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
688
703extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
704/* @} *//* Read endian functions */
705
711/* @{ */
712
725extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
726
743extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
744
760extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
761
778extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
779
795extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
796
813extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
814
830extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
831/* @} *//* Write endian functions */
832
833/* Ends C function definitions when using C++ */
834#ifdef __cplusplus
835}
836#endif
837#include "close_code.h"
838
839#endif /* SDL_rwops_h_ */
840
841/* vi: set ts=4 sw=4 expandtab: */
DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value)
DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops *dst, Uint8 value)
DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize)
DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, Sint64 offset, int whence)
DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void)
DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src)
DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src)
DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context)
DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value)
DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size)
DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src)
DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, void *ptr, size_t size, size_t maxnum)
DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src)
DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value)
DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, const char *mode)
DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value)
DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context)
DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, int size)
DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context)
DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value)
DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops *src)
DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area)
DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void *fp, SDL_bool autoclose)
DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, const void *ptr, size_t size, size_t num)
DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value)
DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src)
DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src)
Definition: SDL_rwops.h:53
int(SDLCALL *close)(struct SDL_RWops *context)
size_t(SDLCALL *write)(struct SDL_RWops *context
Sint64(SDLCALL *seek)(struct SDL_RWops *context
Sint64(SDLCALL *size)(struct SDL_RWops *context)
size_t(SDLCALL *read)(struct SDL_RWops *context