misc/winutils/include/SDL_rwops.h
changeset 10017 de822cd3df3a
parent 7809 7d4fb2f35f4f
equal deleted inserted replaced
10015:4feced261c68 10017:de822cd3df3a
    38 #endif
    38 #endif
    39 
    39 
    40 /** This is the read/write operation structure -- very basic */
    40 /** This is the read/write operation structure -- very basic */
    41 
    41 
    42 typedef struct SDL_RWops {
    42 typedef struct SDL_RWops {
    43 	/** Seek to 'offset' relative to whence, one of stdio's whence values:
    43     /** Seek to 'offset' relative to whence, one of stdio's whence values:
    44 	 *	SEEK_SET, SEEK_CUR, SEEK_END
    44      *  SEEK_SET, SEEK_CUR, SEEK_END
    45 	 *  Returns the final offset in the data source.
    45      *  Returns the final offset in the data source.
    46 	 */
    46      */
    47 	int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence);
    47     int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence);
    48 
    48 
    49 	/** Read up to 'maxnum' objects each of size 'size' from the data
    49     /** Read up to 'maxnum' objects each of size 'size' from the data
    50 	 *  source to the area pointed at by 'ptr'.
    50      *  source to the area pointed at by 'ptr'.
    51 	 *  Returns the number of objects read, or -1 if the read failed.
    51      *  Returns the number of objects read, or -1 if the read failed.
    52 	 */
    52      */
    53 	int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum);
    53     int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum);
    54 
    54 
    55 	/** Write exactly 'num' objects each of size 'objsize' from the area
    55     /** Write exactly 'num' objects each of size 'objsize' from the area
    56 	 *  pointed at by 'ptr' to data source.
    56      *  pointed at by 'ptr' to data source.
    57 	 *  Returns 'num', or -1 if the write failed.
    57      *  Returns 'num', or -1 if the write failed.
    58 	 */
    58      */
    59 	int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num);
    59     int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num);
    60 
    60 
    61 	/** Close and free an allocated SDL_FSops structure */
    61     /** Close and free an allocated SDL_FSops structure */
    62 	int (SDLCALL *close)(struct SDL_RWops *context);
    62     int (SDLCALL *close)(struct SDL_RWops *context);
    63 
    63 
    64 	Uint32 type;
    64     Uint32 type;
    65 	union {
    65     union {
    66 #if defined(__WIN32__) && !defined(__SYMBIAN32__)
    66 #if defined(__WIN32__) && !defined(__SYMBIAN32__)
    67 	    struct {
    67         struct {
    68 		int   append;
    68         int   append;
    69 		void *h;
    69         void *h;
    70 		struct {
    70         struct {
    71 		    void *data;
    71             void *data;
    72 		    int size;
    72             int size;
    73 		    int left;
    73             int left;
    74 		} buffer;
    74         } buffer;
    75 	    } win32io;
    75         } win32io;
    76 #endif
    76 #endif
    77 #ifdef HAVE_STDIO_H 
    77 #ifdef HAVE_STDIO_H
    78 	    struct {
    78         struct {
    79 		int autoclose;
    79         int autoclose;
    80 	 	FILE *fp;
    80         FILE *fp;
    81 	    } stdio;
    81         } stdio;
    82 #endif
    82 #endif
    83 	    struct {
    83         struct {
    84 		Uint8 *base;
    84         Uint8 *base;
    85 	 	Uint8 *here;
    85         Uint8 *here;
    86 		Uint8 *stop;
    86         Uint8 *stop;
    87 	    } mem;
    87         } mem;
    88 	    struct {
    88         struct {
    89 		void *data1;
    89         void *data1;
    90 	    } unknown;
    90         } unknown;
    91 	} hidden;
    91     } hidden;
    92 
    92 
    93 } SDL_RWops;
    93 } SDL_RWops;
    94 
    94 
    95 
    95 
    96 /** @name Functions to create SDL_RWops structures from various data sources */
    96 /** @name Functions to create SDL_RWops structures from various data sources */
   110 
   110 
   111 /*@}*/
   111 /*@}*/
   112 
   112 
   113 /** @name Seek Reference Points */
   113 /** @name Seek Reference Points */
   114 /*@{*/
   114 /*@{*/
   115 #define RW_SEEK_SET	0	/**< Seek from the beginning of data */
   115 #define RW_SEEK_SET 0   /**< Seek from the beginning of data */
   116 #define RW_SEEK_CUR	1	/**< Seek relative to current read point */
   116 #define RW_SEEK_CUR 1   /**< Seek relative to current read point */
   117 #define RW_SEEK_END	2	/**< Seek relative to the end of data */
   117 #define RW_SEEK_END 2   /**< Seek relative to the end of data */
   118 /*@}*/
   118 /*@}*/
   119 
   119 
   120 /** @name Macros to easily read and write from an SDL_RWops structure */
   120 /** @name Macros to easily read and write from an SDL_RWops structure */
   121 /*@{*/
   121 /*@{*/
   122 #define SDL_RWseek(ctx, offset, whence)	(ctx)->seek(ctx, offset, whence)
   122 #define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence)
   123 #define SDL_RWtell(ctx)			(ctx)->seek(ctx, 0, RW_SEEK_CUR)
   123 #define SDL_RWtell(ctx)         (ctx)->seek(ctx, 0, RW_SEEK_CUR)
   124 #define SDL_RWread(ctx, ptr, size, n)	(ctx)->read(ctx, ptr, size, n)
   124 #define SDL_RWread(ctx, ptr, size, n)   (ctx)->read(ctx, ptr, size, n)
   125 #define SDL_RWwrite(ctx, ptr, size, n)	(ctx)->write(ctx, ptr, size, n)
   125 #define SDL_RWwrite(ctx, ptr, size, n)  (ctx)->write(ctx, ptr, size, n)
   126 #define SDL_RWclose(ctx)		(ctx)->close(ctx)
   126 #define SDL_RWclose(ctx)        (ctx)->close(ctx)
   127 /*@}*/
   127 /*@}*/
   128 
   128 
   129 /** @name Read an item of the specified endianness and return in native format */
   129 /** @name Read an item of the specified endianness and return in native format */
   130 /*@{*/
   130 /*@{*/
   131 extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src);
   131 extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src);