comparison include/SDL_rwops.h @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents 2eb75f8a32ca
children 4da1ee79c9af
comparison
equal deleted inserted replaced
1661:281d3f4870e5 1662:782fd950bd46
18 18
19 Sam Lantinga 19 Sam Lantinga
20 slouken@libsdl.org 20 slouken@libsdl.org
21 */ 21 */
22 22
23 /* This file provides a general interface for SDL to read and write 23 /**
24 data sources. It can easily be extended to files, memory, etc. 24 * \file SDL_rwops.h
25 */ 25 *
26 * This file provides a general interface for SDL to read and write
27 * data sources. It can easily be extended to files, memory, etc.
28 */
26 29
27 #ifndef _SDL_rwops_h 30 #ifndef _SDL_rwops_h
28 #define _SDL_rwops_h 31 #define _SDL_rwops_h
29 32
30 #include "SDL_stdinc.h" 33 #include "SDL_stdinc.h"
31 #include "SDL_error.h" 34 #include "SDL_error.h"
32 35
33 #include "begin_code.h" 36 #include "begin_code.h"
34 /* Set up for C function definitions, even when using C++ */ 37 /* Set up for C function definitions, even when using C++ */
35 #ifdef __cplusplus 38 #ifdef __cplusplus
39 /* *INDENT-OFF* */
36 extern "C" { 40 extern "C" {
41 /* *INDENT-ON* */
37 #endif 42 #endif
38 43
39 /* This is the read/write operation structure -- very basic */ 44 /* This is the read/write operation structure -- very basic */
40 45
41 typedef struct SDL_RWops { 46 typedef struct SDL_RWops
42 /* Seek to 'offset' relative to whence, one of stdio's whence values: 47 {
43 SEEK_SET, SEEK_CUR, SEEK_END 48 /* Seek to 'offset' relative to whence, one of stdio's whence values:
44 Returns the final offset in the data source. 49 SEEK_SET, SEEK_CUR, SEEK_END
45 */ 50 Returns the final offset in the data source.
46 int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence); 51 */
52 int (SDLCALL * seek) (struct SDL_RWops * context, int offset, int whence);
47 53
48 /* Read up to 'num' objects each of size 'objsize' from the data 54 /* Read up to 'num' objects each of size 'objsize' from the data
49 source to the area pointed at by 'ptr'. 55 source to the area pointed at by 'ptr'.
50 Returns the number of objects read, or -1 if the read failed. 56 Returns the number of objects read, or -1 if the read failed.
51 */ 57 */
52 int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); 58 int (SDLCALL * read) (struct SDL_RWops * context, void *ptr, int size,
59 int maxnum);
53 60
54 /* Write exactly 'num' objects each of size 'objsize' from the area 61 /* Write exactly 'num' objects each of size 'objsize' from the area
55 pointed at by 'ptr' to data source. 62 pointed at by 'ptr' to data source.
56 Returns 'num', or -1 if the write failed. 63 Returns 'num', or -1 if the write failed.
57 */ 64 */
58 int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num); 65 int (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
66 int size, int num);
59 67
60 /* Close and free an allocated SDL_FSops structure */ 68 /* Close and free an allocated SDL_FSops structure */
61 int (SDLCALL *close)(struct SDL_RWops *context); 69 int (SDLCALL * close) (struct SDL_RWops * context);
62 70
63 Uint32 type; 71 Uint32 type;
64 union { 72 union
73 {
65 #ifdef __WIN32__ 74 #ifdef __WIN32__
66 struct { 75 struct
67 int append; 76 {
68 void* h; 77 int append;
69 } win32io; 78 void *h;
79 } win32io;
70 #endif 80 #endif
71 #ifdef HAVE_STDIO_H 81 #ifdef HAVE_STDIO_H
72 struct { 82 struct
73 int autoclose; 83 {
74 FILE *fp; 84 int autoclose;
75 } stdio; 85 FILE *fp;
86 } stdio;
76 #endif 87 #endif
77 struct { 88 struct
78 Uint8 *base; 89 {
79 Uint8 *here; 90 Uint8 *base;
80 Uint8 *stop; 91 Uint8 *here;
81 } mem; 92 Uint8 *stop;
82 struct { 93 } mem;
83 void *data1; 94 struct
84 } unknown; 95 {
85 } hidden; 96 void *data1;
97 } unknown;
98 } hidden;
86 99
87 } SDL_RWops; 100 } SDL_RWops;
88 101
89 102
90 /* Functions to create SDL_RWops structures from various data sources */ 103 /* Functions to create SDL_RWops structures from various data sources */
91 104
92 extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode); 105 extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile (const char *file,
106 const char *mode);
93 107
94 #ifdef HAVE_STDIO_H 108 #ifdef HAVE_STDIO_H
95 extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose); 109 extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP (FILE * fp, int autoclose);
96 #endif 110 #endif
97 111
98 extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size); 112 extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem (void *mem, int size);
99 extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size); 113 extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem (const void *mem,
114 int size);
100 115
101 extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void); 116 extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW (void);
102 extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area); 117 extern DECLSPEC void SDLCALL SDL_FreeRW (SDL_RWops * area);
103 118
104 #define RW_SEEK_SET 0 /* Seek from the beginning of data */ 119 #define RW_SEEK_SET 0 /* Seek from the beginning of data */
105 #define RW_SEEK_CUR 1 /* Seek relative to current read point */ 120 #define RW_SEEK_CUR 1 /* Seek relative to current read point */
106 #define RW_SEEK_END 2 /* Seek relative to the end of data */ 121 #define RW_SEEK_END 2 /* Seek relative to the end of data */
107 122
108 /* Macros to easily read and write from an SDL_RWops structure */ 123 /* Macros to easily read and write from an SDL_RWops structure */
109 #define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence) 124 #define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence)
110 #define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR) 125 #define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR)
111 #define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n) 126 #define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n)
112 #define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n) 127 #define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n)
113 #define SDL_RWclose(ctx) (ctx)->close(ctx) 128 #define SDL_RWclose(ctx) (ctx)->close(ctx)
114 129
115 130
116 /* Read an item of the specified endianness and return in native format */ 131 /* Read an item of the specified endianness and return in native format */
117 extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src); 132 extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16 (SDL_RWops * src);
118 extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src); 133 extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16 (SDL_RWops * src);
119 extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src); 134 extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32 (SDL_RWops * src);
120 extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src); 135 extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32 (SDL_RWops * src);
121 extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src); 136 extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64 (SDL_RWops * src);
122 extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src); 137 extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64 (SDL_RWops * src);
123 138
124 /* Write an item of native format to the specified endianness */ 139 /* Write an item of native format to the specified endianness */
125 extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value); 140 extern DECLSPEC int SDLCALL SDL_WriteLE16 (SDL_RWops * dst, Uint16 value);
126 extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value); 141 extern DECLSPEC int SDLCALL SDL_WriteBE16 (SDL_RWops * dst, Uint16 value);
127 extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value); 142 extern DECLSPEC int SDLCALL SDL_WriteLE32 (SDL_RWops * dst, Uint32 value);
128 extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value); 143 extern DECLSPEC int SDLCALL SDL_WriteBE32 (SDL_RWops * dst, Uint32 value);
129 extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value); 144 extern DECLSPEC int SDLCALL SDL_WriteLE64 (SDL_RWops * dst, Uint64 value);
130 extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value); 145 extern DECLSPEC int SDLCALL SDL_WriteBE64 (SDL_RWops * dst, Uint64 value);
131 146
132 147
133 /* Ends C function definitions when using C++ */ 148 /* Ends C function definitions when using C++ */
134 #ifdef __cplusplus 149 #ifdef __cplusplus
150 /* *INDENT-OFF* */
135 } 151 }
152 /* *INDENT-ON* */
136 #endif 153 #endif
137 #include "close_code.h" 154 #include "close_code.h"
138 155
139 #endif /* _SDL_rwops_h */ 156 #endif /* _SDL_rwops_h */
157
158 /* vi: set ts=4 sw=4 expandtab: */