~ubuntu-branches/debian/stretch/assaultcube-data/stretch

« back to all changes in this revision

Viewing changes to source/include/SDL_rwops.h

  • Committer: Bazaar Package Importer
  • Author(s): Gonéri Le Bouder, Ansgar Burchardt, Gonéri Le Bouder
  • Date: 2010-04-02 23:37:55 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100402233755-kf74fxwlu634o6vg
Tags: 1.0.4+repack1-1
[ Ansgar Burchardt ]
* debian/control: fix typo in short description

[ Gonéri Le Bouder ]
* Upgrade to 1.0.4
* bump standards-version to 3.8.4
* Add Depends: ${misc:Depends} just to avoid a lintian warning
* Add a debian/source/format file for the same reason

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    SDL - Simple DirectMedia Layer
 
3
    Copyright (C) 1997-2006 Sam Lantinga
 
4
 
 
5
    This library is free software; you can redistribute it and/or
 
6
    modify it under the terms of the GNU Lesser General Public
 
7
    License as published by the Free Software Foundation; either
 
8
    version 2.1 of the License, or (at your option) any later version.
 
9
 
 
10
    This library is distributed in the hope that it will be useful,
 
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
    Lesser General Public License for more details.
 
14
 
 
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
 
18
 
 
19
    Sam Lantinga
 
20
    slouken@libsdl.org
 
21
*/
 
22
 
 
23
/* This file provides a general interface for SDL to read and write
 
24
   data sources.  It can easily be extended to files, memory, etc.
 
25
*/
 
26
 
 
27
#ifndef _SDL_rwops_h
 
28
#define _SDL_rwops_h
 
29
 
 
30
#include "SDL_stdinc.h"
 
31
#include "SDL_error.h"
 
32
 
 
33
#include "begin_code.h"
 
34
/* Set up for C function definitions, even when using C++ */
 
35
#ifdef __cplusplus
 
36
extern "C" {
 
37
#endif
 
38
 
 
39
/* This is the read/write operation structure -- very basic */
 
40
 
 
41
typedef struct SDL_RWops {
 
42
        /* Seek to 'offset' relative to whence, one of stdio's whence values:
 
43
                SEEK_SET, SEEK_CUR, SEEK_END
 
44
           Returns the final offset in the data source.
 
45
         */
 
46
        int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence);
 
47
 
 
48
        /* Read up to 'num' objects each of size 'objsize' from the data
 
49
           source to the area pointed at by 'ptr'.
 
50
           Returns the number of objects read, or -1 if the read failed.
 
51
         */
 
52
        int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum);
 
53
 
 
54
        /* Write exactly 'num' objects each of size 'objsize' from the area
 
55
           pointed at by 'ptr' to data source.
 
56
           Returns 'num', or -1 if the write failed.
 
57
         */
 
58
        int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num);
 
59
 
 
60
        /* Close and free an allocated SDL_FSops structure */
 
61
        int (SDLCALL *close)(struct SDL_RWops *context);
 
62
 
 
63
        Uint32 type;
 
64
        union {
 
65
#if defined(__WIN32__) && !defined(__SYMBIAN32__)
 
66
            struct {
 
67
                int   append;
 
68
                void *h;
 
69
                struct {
 
70
                    void *data;
 
71
                    int size;
 
72
                    int left;
 
73
                } buffer;
 
74
            } win32io;
 
75
#endif
 
76
#ifdef HAVE_STDIO_H 
 
77
            struct {
 
78
                int autoclose;
 
79
                FILE *fp;
 
80
            } stdio;
 
81
#endif
 
82
            struct {
 
83
                Uint8 *base;
 
84
                Uint8 *here;
 
85
                Uint8 *stop;
 
86
            } mem;
 
87
            struct {
 
88
                void *data1;
 
89
            } unknown;
 
90
        } hidden;
 
91
 
 
92
} SDL_RWops;
 
93
 
 
94
 
 
95
/* Functions to create SDL_RWops structures from various data sources */
 
96
 
 
97
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode);
 
98
 
 
99
#ifdef HAVE_STDIO_H
 
100
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose);
 
101
#endif
 
102
 
 
103
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size);
 
104
extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size);
 
105
 
 
106
extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void);
 
107
extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area);
 
108
 
 
109
#define RW_SEEK_SET     0       /* Seek from the beginning of data */
 
110
#define RW_SEEK_CUR     1       /* Seek relative to current read point */
 
111
#define RW_SEEK_END     2       /* Seek relative to the end of data */
 
112
 
 
113
/* Macros to easily read and write from an SDL_RWops structure */
 
114
#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence)
 
115
#define SDL_RWtell(ctx)                 (ctx)->seek(ctx, 0, RW_SEEK_CUR)
 
116
#define SDL_RWread(ctx, ptr, size, n)   (ctx)->read(ctx, ptr, size, n)
 
117
#define SDL_RWwrite(ctx, ptr, size, n)  (ctx)->write(ctx, ptr, size, n)
 
118
#define SDL_RWclose(ctx)                (ctx)->close(ctx)
 
119
 
 
120
 
 
121
/* Read an item of the specified endianness and return in native format */
 
122
extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src);
 
123
extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src);
 
124
extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src);
 
125
extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src);
 
126
extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src);
 
127
extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src);
 
128
 
 
129
/* Write an item of native format to the specified endianness */
 
130
extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value);
 
131
extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value);
 
132
extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value);
 
133
extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value);
 
134
extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value);
 
135
extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value);
 
136
 
 
137
 
 
138
/* Ends C function definitions when using C++ */
 
139
#ifdef __cplusplus
 
140
}
 
141
#endif
 
142
#include "close_code.h"
 
143
 
 
144
#endif /* _SDL_rwops_h */