OSMesa16 updates (Eric Plante), added _mesa_strtof()
[mesa.git] / src / mesa / main / imports.h
index 9363c4163e13b68e411536a4ec25375dd9cef136..85834cbe78364a1cd739bf0150d8b2ded4c7369a 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: imports.h,v 1.5 2002/10/15 15:36:26 brianp Exp $ */
+/* $Id: imports.h,v 1.10 2003/01/14 03:00:54 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  4.1
+ * Version:  5.1
  *
  * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
  *
  */
 
 
+/*
+ * This file provides wrappers for all the standard C library functions
+ * like malloc, free, printf, getenv, etc.
+ */
+
+
 #ifndef IMPORTS_H
 #define IMPORTS_H
 
 
-#include "glheader.h"
+#define MALLOC(BYTES)      _mesa_malloc(BYTES)
+#define CALLOC(BYTES)      _mesa_calloc(BYTES)
+#define MALLOC_STRUCT(T)   (struct T *) _mesa_malloc(sizeof(struct T))
+#define CALLOC_STRUCT(T)   (struct T *) _mesa_calloc(sizeof(struct T))
+#define FREE(PTR)          _mesa_free(PTR)
+
+#define ALIGN_MALLOC(BYTES, N)     _mesa_align_malloc(BYTES, N)
+#define ALIGN_CALLOC(BYTES, N)     _mesa_align_calloc(BYTES, N)
+#define ALIGN_MALLOC_STRUCT(T, N)  (struct T *) _mesa_align_malloc(sizeof(struct T), N)
+#define ALIGN_CALLOC_STRUCT(T, N)  (struct T *) _mesa_align_calloc(sizeof(struct T), N)
+#define ALIGN_FREE(PTR)            _mesa_align_free(PTR)
+
+#define MEMCPY( DST, SRC, BYTES)   _mesa_memcpy(DST, SRC, BYTES)
+#define MEMSET( DST, VAL, N )      _mesa_memset(DST, VAL, N)
+extern void _mesa_memset16( GLushort *dst, GLushort val, size_t n );
+
+#define MEMSET16( DST, VAL, N ) \
+        _mesa_memset16( (GLushort *) (DST), (GLushort) (VAL), (size_t) (N) )
+
+
+/* MACs and BeOS don't support static larger than 32kb, so... */
+#if defined(macintosh) && !defined(__MRC__)
+/*extern char *AGLAlloc(int size);*/
+/*extern void AGLFree(char* ptr);*/
+#  define DEFARRAY(TYPE,NAME,SIZE)                     TYPE *NAME = (TYPE*)_mesa_alloc(sizeof(TYPE)*(SIZE))
+#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)             TYPE (*NAME)[SIZE2] = (TYPE(*)[SIZE2])_mesa_alloc(sizeof(TYPE)*(SIZE1)*(SIZE2))
+#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)      TYPE (*NAME)[SIZE2][SIZE3] = (TYPE(*)[SIZE2][SIZE3])_mesa_alloc(sizeof(TYPE)*(SIZE1)*(SIZE2)*(SIZE3))
+
+#  define CHECKARRAY(NAME,CMD)                         do {if (!(NAME)) {CMD;}} while (0)
+#  define UNDEFARRAY(NAME)                             do {if ((NAME)) {_mesa_free((char*)NAME);}  }while (0)
+#elif defined(__BEOS__)
+#  define DEFARRAY(TYPE,NAME,SIZE)                     TYPE *NAME = (TYPE*)_mesa_malloc(sizeof(TYPE)*(SIZE))
+#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)             TYPE (*NAME)[SIZE2] = (TYPE(*)[SIZE2])_mesa_malloc(sizeof(TYPE)*(SIZE1)*(SIZE2))
+#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)      TYPE (*NAME)[SIZE2][SIZE3] = (TYPE(*)[SIZE2][SIZE3])_mesa_malloc(sizeof(TYPE)*(SIZE1)*(SIZE2)*(SIZE3))
+#  define CHECKARRAY(NAME,CMD)                         do {if (!(NAME)) {CMD;}} while (0)
+#  define UNDEFARRAY(NAME)                             do {if ((NAME)) {_mesa_free((char*)NAME);}  }while (0)
+#else
+#  define DEFARRAY(TYPE,NAME,SIZE)                     TYPE NAME[SIZE]
+#  define DEFMARRAY(TYPE,NAME,SIZE1,SIZE2)             TYPE NAME[SIZE1][SIZE2]
+#  define DEFMNARRAY(TYPE,NAME,SIZE1,SIZE2,SIZE3)      TYPE NAME[SIZE1][SIZE2][SIZE3]
+#  define CHECKARRAY(NAME,CMD)                         do {} while(0)
+#  define UNDEFARRAY(NAME)
+#endif
+
+
+#ifdef MESA_EXTERNAL_BUFFERALLOC
+/*
+ * If you want Mesa's depth/stencil/accum/etc buffers to be allocated
+ * with a specialized allocator you can define MESA_EXTERNAL_BUFFERALLOC
+ * and implement _ext_mesa_alloc/free_pixelbuffer() in your app.
+ * Contributed by Gerk Huisma (gerk@five-d.demon.nl).
+ */
+extern void *_ext_mesa_alloc_pixelbuffer( unsigned int size );
+extern void _ext_mesa_free_pixelbuffer( void *pb );
+
+#define MESA_PBUFFER_ALLOC(BYTES)  (void *) _ext_mesa_alloc_pixelbuffer(BYTES)
+#define MESA_PBUFFER_FREE(PTR)     _ext_mesa_free_pixelbuffer(PTR)
+#else
+/* Default buffer allocation uses the aligned allocation routines: */
+#define MESA_PBUFFER_ALLOC(BYTES)  (void *) _mesa_align_malloc(BYTES, 512)
+#define MESA_PBUFFER_FREE(PTR)     _mesa_align_free(PTR)
+#endif
+
 
+extern void *
+_mesa_malloc( size_t bytes );
 
-extern int CAPI
-_mesa_sprintf(__GLcontext *gc, char *str, const char *fmt, ...);
+extern void *
+_mesa_calloc( size_t bytes );
 
 extern void
-_mesa_warning(__GLcontext *gc, const char *fmtString, ...);
+_mesa_free( void *ptr );
+
+extern void *
+_mesa_align_malloc( size_t bytes, unsigned long alignment );
+
+extern void *
+_mesa_align_calloc( size_t bytes, unsigned long alignment );
 
 extern void
-_mesa_fatal(__GLcontext *gc, char *str);
+_mesa_align_free( void *ptr );
+
+extern void *
+_mesa_memcpy( void *dest, const void *src, size_t n );
 
 extern void
-_mesa_problem( const __GLcontext *ctx, const char *s );
+_mesa_memset( void *dst, int val, size_t n );
 
 extern void
-_mesa_error( __GLcontext *ctx, GLenum error, const char *fmtString, ... );
+_mesa_memset16( unsigned short *dst, unsigned short val, size_t n );
 
 extern void
-_mesa_debug( const __GLcontext *ctx, const char *fmtString, ... );
+_mesa_bzero( void *dst, size_t n );
+
+
+extern double
+_mesa_sin(double a);
+
+extern double
+_mesa_cos(double a);
+
+extern double
+_mesa_sqrt(double x);
+
+extern double
+_mesa_pow(double x, double y);
+
+
+extern char *
+_mesa_getenv( const char *var );
+
+extern char *
+_mesa_strstr( const char *haystack, const char *needle );
+
+extern char *
+_mesa_strncat( char *dest, const char *src, size_t n );
+
+extern char *
+_mesa_strcpy( char *dest, const char *src );
+
+extern char *
+_mesa_strncpy( char *dest, const char *src, size_t n );
+
+extern size_t
+_mesa_strlen( const char *s );
+
+extern int
+_mesa_strcmp( const char *s1, const char *s2 );
+
+extern int
+_mesa_strncmp( const char *s1, const char *s2, size_t n );
+
+extern char *
+_mesa_strdup( const char *s );
+
+extern int
+_mesa_atoi( const char *s );
+
+extern float
+_mesa_strtof( const char *s, const char **end );
+
+extern int
+_mesa_sprintf( char *str, const char *fmt, ... );
 
 extern void
-_mesa_printf( const __GLcontext *ctx, const char *fmtString, ... );
+_mesa_printf( const char *fmtString, ... );
 
-extern int CAPI
-_mesa_fprintf(__GLcontext *gc, void *stream, const char *fmt, ...);
 
-extern void * CAPI
-_mesa_fopen(__GLcontext *gc, const char *path, const char *mode);
+extern void
+_mesa_warning( __GLcontext *gc, const char *fmtString, ... );
 
-extern int CAPI
-_mesa_fclose(__GLcontext *gc, void *stream);
+extern void
+_mesa_problem( const __GLcontext *ctx, const char *fmtString, ... );
 
-extern char * CAPI
-_mesa_getenv(__GLcontext *gc, const char *var);
+extern void
+_mesa_error( __GLcontext *ctx, GLenum error, const char *fmtString, ... );
 
 extern void
-_mesa_init_default_imports(__GLimports *imports, void *driverCtx);
+_mesa_debug( const __GLcontext *ctx, const char *fmtString, ... );
 
 
-#endif
+extern void
+_mesa_init_default_imports( __GLimports *imports, void *driverCtx );
+
+
+#endif /* IMPORTS_H */
+