Subversion Repositories shark

Rev

Rev 72 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
55 pj 1
/* $Id: imports.h,v 1.1 2003-02-28 11:42:03 pj Exp $ */
2
 
3
/*
4
 * Mesa 3-D graphics library
5
 * Version:  5.0
6
 *
7
 * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
8
 *
9
 * Permission is hereby granted, free of charge, to any person obtaining a
10
 * copy of this software and associated documentation files (the "Software"),
11
 * to deal in the Software without restriction, including without limitation
12
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13
 * and/or sell copies of the Software, and to permit persons to whom the
14
 * Software is furnished to do so, subject to the following conditions:
15
 *
16
 * The above copyright notice and this permission notice shall be included
17
 * in all copies or substantial portions of the Software.
18
 *
19
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
22
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
 */
26
 
27
 
28
/*
29
 * This file provides wrappers for all the standard C library functions
30
 * like malloc, free, printf, getenv, etc.
31
 */
32
 
33
 
34
#ifndef IMPORTS_H
35
#define IMPORTS_H
36
 
37
 
38
#define MALLOC(BYTES)      _mesa_malloc(BYTES)
39
#define CALLOC(BYTES)      _mesa_calloc(BYTES)
40
#define MALLOC_STRUCT(T)   (struct T *) _mesa_malloc(sizeof(struct T))
41
#define CALLOC_STRUCT(T)   (struct T *) _mesa_calloc(sizeof(struct T))
42
#define FREE(PTR)          _mesa_free(PTR)
43
 
44
#define ALIGN_MALLOC(BYTES, N)     _mesa_align_malloc(BYTES, N)
45
#define ALIGN_CALLOC(BYTES, N)     _mesa_align_calloc(BYTES, N)
46
#define ALIGN_MALLOC_STRUCT(T, N)  (struct T *) _mesa_align_malloc(sizeof(struct T), N)
47
#define ALIGN_CALLOC_STRUCT(T, N)  (struct T *) _mesa_align_calloc(sizeof(struct T), N)
48
#define ALIGN_FREE(PTR)            _mesa_align_free(PTR)
49
 
50
#define MEMCPY( DST, SRC, BYTES)   _mesa_memcpy(DST, SRC, BYTES)
51
#define MEMSET( DST, VAL, N )      _mesa_memset(DST, VAL, N)
52
 
53
 
54
/* MACs and BeOS don't support static larger than 32kb, so... */
55
#if defined(macintosh) && !defined(__MRC__)
56
/*extern char *AGLAlloc(int size);*/
57
/*extern void AGLFree(char* ptr);*/
58
#  define DEFARRAY(TYPE,NAME,SIZE)                      TYPE *NAME = (TYPE*)_mesa_alloc(sizeof(TYPE)*(SIZE))
59
#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)              TYPE (*NAME)[SIZE2] = (TYPE(*)[SIZE2])_mesa_alloc(sizeof(TYPE)*(SIZE1)*(SIZE2))
60
#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)       TYPE (*NAME)[SIZE2][SIZE3] = (TYPE(*)[SIZE2][SIZE3])_mesa_alloc(sizeof(TYPE)*(SIZE1)*(SIZE2)*(SIZE3))
61
 
62
#  define CHECKARRAY(NAME,CMD)                          do {if (!(NAME)) {CMD;}} while (0)
63
#  define UNDEFARRAY(NAME)                              do {if ((NAME)) {_mesa_free((char*)NAME);}  }while (0)
64
#elif defined(__BEOS__)
65
#  define DEFARRAY(TYPE,NAME,SIZE)                      TYPE *NAME = (TYPE*)_mesa_malloc(sizeof(TYPE)*(SIZE))
66
#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)              TYPE (*NAME)[SIZE2] = (TYPE(*)[SIZE2])_mesa_malloc(sizeof(TYPE)*(SIZE1)*(SIZE2))
67
#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)       TYPE (*NAME)[SIZE2][SIZE3] = (TYPE(*)[SIZE2][SIZE3])_mesa_malloc(sizeof(TYPE)*(SIZE1)*(SIZE2)*(SIZE3))
68
#  define CHECKARRAY(NAME,CMD)                          do {if (!(NAME)) {CMD;}} while (0)
69
#  define UNDEFARRAY(NAME)                              do {if ((NAME)) {_mesa_free((char*)NAME);}  }while (0)
70
#else
71
#  define DEFARRAY(TYPE,NAME,SIZE)                      TYPE NAME[SIZE]
72
#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)              TYPE NAME[SIZE1][SIZE2]
73
#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)       TYPE NAME[SIZE1][SIZE2][SIZE3]
74
#  define CHECKARRAY(NAME,CMD)                          do {} while(0)
75
#  define UNDEFARRAY(NAME)
76
#endif
77
 
78
 
79
#ifdef MESA_EXTERNAL_BUFFERALLOC
80
/*
81
 * If you want Mesa's depth/stencil/accum/etc buffers to be allocated
82
 * with a specialized allocator you can define MESA_EXTERNAL_BUFFERALLOC
83
 * and implement _ext_mesa_alloc/free_pixelbuffer() in your app.
84
 * Contributed by Gerk Huisma (gerk@five-d.demon.nl).
85
 */
86
extern void *_ext_mesa_alloc_pixelbuffer( unsigned int size );
87
extern void _ext_mesa_free_pixelbuffer( void *pb );
88
 
89
#define MESA_PBUFFER_ALLOC(BYTES)  (void *) _ext_mesa_alloc_pixelbuffer(BYTES)
90
#define MESA_PBUFFER_FREE(PTR)     _ext_mesa_free_pixelbuffer(PTR)
91
#else
92
/* Default buffer allocation uses the aligned allocation routines: */
93
#define MESA_PBUFFER_ALLOC(BYTES)  (void *) _mesa_align_malloc(BYTES, 512)
94
#define MESA_PBUFFER_FREE(PTR)     _mesa_align_free(PTR)
95
#endif
96
 
97
 
98
extern void *
99
_mesa_malloc( size_t bytes );
100
 
101
extern void *
102
_mesa_calloc( size_t bytes );
103
 
104
extern void
105
_mesa_free( void *ptr );
106
 
107
extern void *
108
_mesa_align_malloc( size_t bytes, unsigned long alignment );
109
 
110
extern void *
111
_mesa_align_calloc( size_t bytes, unsigned long alignment );
112
 
113
extern void
114
_mesa_align_free( void *ptr );
115
 
116
extern void *
117
_mesa_memcpy( void *dest, const void *src, size_t n );
118
 
119
extern void
120
_mesa_memset( void *dst, int val, size_t n );
121
 
122
extern void
123
_mesa_memset16( unsigned short *dst, unsigned short val, size_t n );
124
 
125
extern void
126
_mesa_bzero( void *dst, size_t n );
127
 
128
 
129
extern double
130
_mesa_sin(double a);
131
 
132
extern double
133
_mesa_cos(double a);
134
 
135
extern double
136
_mesa_sqrt(double x);
137
 
138
extern double
139
_mesa_pow(double x, double y);
140
 
141
 
142
extern char *
143
_mesa_getenv( const char *var );
144
 
145
extern char *
146
_mesa_strstr( const char *haystack, const char *needle );
147
 
148
extern char *
149
_mesa_strncat( char *dest, const char *src, size_t n );
150
 
151
extern char *
152
_mesa_strcpy( char *dest, const char *src );
153
 
154
extern char *
155
_mesa_strncpy( char *dest, const char *src, size_t n );
156
 
157
extern size_t
158
_mesa_strlen( const char *s );
159
 
160
extern int
161
_mesa_strcmp( const char *s1, const char *s2 );
162
 
163
extern int
164
_mesa_strncmp( const char *s1, const char *s2, size_t n );
165
 
166
extern int
167
_mesa_atoi( const char *s );
168
 
169
extern int
170
_mesa_sprintf( char *str, const char *fmt, ... );
171
 
172
extern void
173
_mesa_printf( const char *fmtString, ... );
174
 
175
 
176
extern void
177
_mesa_warning( __GLcontext *gc, const char *fmtString, ... );
178
 
179
extern void
180
_mesa_problem( const __GLcontext *ctx, const char *s );
181
 
182
extern void
183
_mesa_error( __GLcontext *ctx, GLenum error, const char *fmtString, ... );
184
 
185
extern void
186
_mesa_debug( const __GLcontext *ctx, const char *fmtString, ... );
187
 
188
 
189
extern void
190
_mesa_init_default_imports( __GLimports *imports, void *driverCtx );
191
 
192
 
193
#endif /* IMPORTS_H */
194