This is the read/write operation structure -- very basic.
Defined in SDL_rwops.h
typedef struct SDL_RWops
{/**
* Return the size of the file in this rwops, or -1 if unknown
*/
struct SDL_RWops * context);
Sint64 (SDLCALL * size) (
/**
* Seek to `offset` relative to `whence`, one of stdio's whence values:
* RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
*
* \return the final offset in the data stream, or -1 on error.
*/
struct SDL_RWops * context, Sint64 offset,
Sint64 (SDLCALL * seek) (int whence);
/**
* Read up to `maxnum` objects each of size `size` from the data
* stream to the area pointed at by `ptr`.
*
* \return the number of objects read, or 0 at error or end of file.
*/
size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
size_t size, size_t maxnum);
/**
* Write exactly `num` objects each of size `size` from the area
* pointed at by `ptr` to data stream.
*
* \return the number of objects written, or 0 at error or end of file.
*/
size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
size_t size, size_t num);
/**
* Close and free an allocated SDL_RWops structure.
*
* \return 0 if successful or -1 on write error when flushing data.
*/
int (SDLCALL * close) (struct SDL_RWops * context);
Uint32 type;union
{#if defined(__ANDROID__)
struct
{void *asset;
} androidio;#elif defined(__WIN32__) || defined(__GDK__)
struct
{
SDL_bool append;void *h;
struct
{void *data;
size_t size;
size_t left;
} buffer;
} windowsio;#endif
#ifdef HAVE_STDIO_H
struct
{
SDL_bool autoclose;FILE *fp;
} stdio;#endif
struct
{
Uint8 *base;
Uint8 *here;
Uint8 *stop;
} mem;struct
{void *data1;
void *data2;
} unknown;
} hidden;
} SDL_RWops;