2
2
SDL - Simple DirectMedia Layer
3
Copyright (C) 1997-2004 Sam Lantinga
3
Copyright (C) 1997-2006 Sam Lantinga
5
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Library General Public
6
modify it under the terms of the GNU Lesser General Public
7
7
License as published by the Free Software Foundation; either
8
version 2 of the License, or (at your option) any later version.
8
version 2.1 of the License, or (at your option) any later version.
10
10
This library is distributed in the hope that it will be useful,
11
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Library General Public License for more details.
13
Lesser General Public License for more details.
15
You should have received a copy of the GNU Library General Public
16
License along with this library; if not, write to the Free
17
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
You should have received a copy of the GNU Lesser General Public
16
License along with this library; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
"@(#) $Id: SDL_rwops.h,v 1.8 2004/08/20 18:57:01 slouken Exp $";
28
23
/* This file provides a general interface for SDL to read and write
29
24
data sources. It can easily be extended to files, memory, etc.
37
#include "SDL_types.h"
30
#include "SDL_stdinc.h"
31
#include "SDL_error.h"
39
33
#include "begin_code.h"
40
34
/* Set up for C function definitions, even when using C++ */
90
92
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode);
92
95
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose);
94
98
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size);
95
99
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size);
97
101
extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void);
98
102
extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area);
104
#define RW_SEEK_SET 0 /* Seek from the beginning of data */
105
#define RW_SEEK_CUR 1 /* Seek relative to current read point */
106
#define RW_SEEK_END 2 /* Seek relative to the end of data */
100
108
/* Macros to easily read and write from an SDL_RWops structure */
101
109
#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence)
102
#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, SEEK_CUR)
110
#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR)
103
111
#define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n)
104
112
#define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n)
105
113
#define SDL_RWclose(ctx) (ctx)->close(ctx)
116
/* Read an item of the specified endianness and return in native format */
117
extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src);
118
extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src);
119
extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src);
120
extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src);
121
extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src);
122
extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src);
124
/* Write an item of native format to the specified endianness */
125
extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value);
126
extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value);
127
extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value);
128
extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value);
129
extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value);
130
extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value);
108
133
/* Ends C function definitions when using C++ */
109
134
#ifdef __cplusplus
112
137
#include "close_code.h"
114
#endif /* _SDL_RWops_h */
139
#endif /* _SDL_rwops_h */