home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mesa5.zip / mesa5src.zip / imports.h < prev    next >
C/C++ Source or Header  |  2002-10-30  |  7KB  |  195 lines

  1. /* $Id: imports.h,v 1.8 2002/10/30 19:49:29 brianp 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.  
  195.