This file provides wrappers for all the standard C library functions like malloc(), free(), printf(), getenv(), etc.
#include "compiler.h"
#include "glheader.h"
Data Structures | |
| union | fi_type |
| Sometimes we treat GLfloats as GLints. More... | |
Defines | |
| #define | ADD_POINTERS(A, B) ( (GLubyte *) (A) + (uintptr_t) (B) ) |
| #define | MAX_GLUSHORT 0xffff |
| #define | MAX_GLUINT 0xffffffff |
| #define | DEG2RAD (M_PI/180.0) |
| #define | SQRTF(X) (float) sqrt((float) (X)) |
| #define | INV_SQRTF(X) (1.0F / SQRTF(X)) |
| #define | LOG2(x) ((GLfloat) (log(x) * 1.442695F)) |
| #define | IS_INF_OR_NAN(x) (!finite(x)) |
| #define | IS_NEGATIVE(x) (x < 0.0F) |
| #define | DIFFERENT_SIGNS(x, y) ((x) * (y) <= 0.0F && (x) - (y) != 0.0F) |
| #define | CEILF(x) ((GLfloat) ceil(x)) |
| #define | FLOORF(x) ((GLfloat) floor(x)) |
| #define | FABSF(x) ((GLfloat) fabs(x)) |
| #define | LOGF(x) ((GLfloat) log(x)) |
| #define | EXPF(x) ((GLfloat) exp(x)) |
| #define | LDEXPF(x, y) ((GLfloat) ldexp(x,y)) |
| #define | FREXPF(x, y) ((GLfloat) frexp(x,y)) |
| #define | IROUND(f) ((int) (((f) >= 0.0F) ? ((f) + 0.5F) : ((f) - 0.5F))) |
| #define | IROUND64(f) ((GLint64) (((f) >= 0.0F) ? ((f) + 0.5F) : ((f) - 0.5F))) |
| #define | IROUND_POS(f) (IROUND(f)) |
| #define | IFLOOR(x) ifloor(x) |
| #define | ICEIL(x) iceil(x) |
| #define | UNCLAMPED_FLOAT_TO_UBYTE(ub, f) ub = ((GLubyte) IROUND(CLAMP((f), 0.0F, 1.0F) * 255.0F)) |
| #define | CLAMPED_FLOAT_TO_UBYTE(ub, f) ub = ((GLubyte) IROUND((f) * 255.0F)) |
| #define | MALLOC(BYTES) _mesa_malloc(BYTES) |
| Memory macros. | |
| #define | CALLOC(BYTES) _mesa_calloc(BYTES) |
Allocate and zero BYTES bytes. | |
| #define | MALLOC_STRUCT(T) (struct T *) _mesa_malloc(sizeof(struct T)) |
Allocate a structure of type T. | |
| #define | CALLOC_STRUCT(T) (struct T *) _mesa_calloc(sizeof(struct T)) |
Allocate and zero a structure of type T. | |
| #define | FREE(PTR) _mesa_free(PTR) |
| Free memory. | |
| #define | ALIGN_MALLOC(BYTES, N) _mesa_align_malloc(BYTES, N) |
Allocate BYTES aligned at N bytes. | |
| #define | ALIGN_CALLOC(BYTES, N) _mesa_align_calloc(BYTES, N) |
Allocate and zero BYTES bytes aligned at N bytes. | |
| #define | ALIGN_MALLOC_STRUCT(T, N) (struct T *) _mesa_align_malloc(sizeof(struct T), N) |
Allocate a structure of type T aligned at N bytes. | |
| #define | ALIGN_CALLOC_STRUCT(T, N) (struct T *) _mesa_align_calloc(sizeof(struct T), N) |
Allocate and zero a structure of type T aligned at N bytes. | |
| #define | ALIGN_FREE(PTR) _mesa_align_free(PTR) |
| Free aligned memory. | |
| #define | MEMCPY(DST, SRC, BYTES) _mesa_memcpy(DST, SRC, BYTES) |
Copy BYTES bytes from SRC into DST. | |
| #define | MEMSET(DST, VAL, N) _mesa_memset(DST, VAL, N) |
Set N bytes in DST to VAL. | |
Functions | |
| static INLINE int | ifloor (float f) |
| static INLINE int | iceil (float f) |
| static INLINE int | _mesa_is_pow_two (int x) |
| Is x a power of two? | |
| static INLINE GLboolean | _mesa_little_endian (void) |
| Return 1 if this is a little endian machine, 0 if big endian. | |
| void * | _mesa_malloc (size_t bytes) |
| Wrapper around malloc(). | |
| void * | _mesa_calloc (size_t bytes) |
| Wrapper around calloc(). | |
| void | _mesa_free (void *ptr) |
| Wrapper around free(). | |
| void * | _mesa_align_malloc (size_t bytes, unsigned long alignment) |
| Allocate aligned memory. | |
| void * | _mesa_align_calloc (size_t bytes, unsigned long alignment) |
| Same as _mesa_align_malloc(), but using _mesa_calloc() instead of _mesa_malloc(). | |
| void | _mesa_align_free (void *ptr) |
| Free memory which was allocated with either _mesa_align_malloc() or _mesa_align_calloc(). | |
| void * | _mesa_align_realloc (void *oldBuffer, size_t oldSize, size_t newSize, unsigned long alignment) |
| Reallocate memory, with alignment. | |
| void * | _mesa_exec_malloc (GLuint size) |
| void | _mesa_exec_free (void *addr) |
| void * | _mesa_realloc (void *oldBuffer, size_t oldSize, size_t newSize) |
| Reallocate memory. | |
| void * | _mesa_memcpy (void *dest, const void *src, size_t n) |
| memcpy wrapper | |
| void | _mesa_memset (void *dst, int val, size_t n) |
| Wrapper around memset(). | |
| void | _mesa_memset16 (unsigned short *dst, unsigned short val, size_t n) |
| Fill memory with a constant 16bit word. | |
| void | _mesa_bzero (void *dst, size_t n) |
| Wrapper around either memset() or bzero(). | |
| int | _mesa_memcmp (const void *s1, const void *s2, size_t n) |
| Wrapper around memcmp(). | |
| double | _mesa_sin (double a) |
| Wrapper around sin(). | |
| float | _mesa_sinf (float a) |
| Single precision wrapper around sin(). | |
| double | _mesa_cos (double a) |
| Wrapper around cos(). | |
| float | _mesa_asinf (float x) |
| Single precision wrapper around asin(). | |
| float | _mesa_atanf (float x) |
| Single precision wrapper around atan(). | |
| double | _mesa_sqrtd (double x) |
| Wrapper around sqrt(). | |
| float | _mesa_sqrtf (float x) |
| Single precision square root. | |
| float | _mesa_inv_sqrtf (float x) |
| inv_sqrt - A single precision 1/sqrt routine for IEEE format floats. | |
| void | _mesa_init_sqrt_table (void) |
| double | _mesa_pow (double x, double y) |
| Wrapper around pow(). | |
| int | _mesa_ffs (int32_t i) |
| Find the first bit set in a word. | |
| int | _mesa_ffsll (int64_t i) |
| Find position of first bit set in given value. | |
| unsigned int | _mesa_bitcount (unsigned int n) |
| Return number of bits set in given GLuint. | |
| GLhalfARB | _mesa_float_to_half (float f) |
| Convert a 4-byte float to a 2-byte half float. | |
| float | _mesa_half_to_float (GLhalfARB h) |
| Convert a 2-byte half float to a 4-byte float. | |
| void * | _mesa_bsearch (const void *key, const void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)) |
| Wrapper for bsearch(). | |
| char * | _mesa_getenv (const char *var) |
| Wrapper for getenv(). | |
| char * | _mesa_strstr (const char *haystack, const char *needle) |
| Wrapper around strstr(). | |
| char * | _mesa_strncat (char *dest, const char *src, size_t n) |
| Wrapper around strncat(). | |
| char * | _mesa_strcpy (char *dest, const char *src) |
| Wrapper around strcpy(). | |
| char * | _mesa_strncpy (char *dest, const char *src, size_t n) |
| Wrapper around strncpy(). | |
| size_t | _mesa_strlen (const char *s) |
| Wrapper around strlen(). | |
| int | _mesa_strcmp (const char *s1, const char *s2) |
| Wrapper around strcmp(). | |
| int | _mesa_strncmp (const char *s1, const char *s2, size_t n) |
| Wrapper around strncmp(). | |
| char * | _mesa_strdup (const char *s) |
| Implemented using _mesa_malloc() and _mesa_strcpy. | |
| int | _mesa_atoi (const char *s) |
| Wrapper around atoi(). | |
| double | _mesa_strtod (const char *s, char **end) |
| Wrapper around strtod(). | |
| unsigned int | _mesa_str_checksum (const char *str) |
| Compute simple checksum/hash for a string. | |
| int | _mesa_sprintf (char *str, const char *fmt,...) |
| Wrapper around vsprintf(). | |
| int | _mesa_snprintf (char *str, size_t size, const char *fmt,...) |
| Wrapper around vsnprintf(). | |
| void | _mesa_printf (const char *fmtString,...) |
| Wrapper around printf(), using vsprintf() for the formatting. | |
| void | _mesa_fprintf (FILE *f, const char *fmtString,...) |
| Wrapper around fprintf(), using vsprintf() for the formatting. | |
| int | _mesa_vsprintf (char *str, const char *fmt, va_list args) |
| Wrapper around vsprintf(). | |
| void | _mesa_warning (__GLcontext *gc, const char *fmtString,...) |
| void | _mesa_problem (const __GLcontext *ctx, const char *fmtString,...) |
| void | _mesa_error (__GLcontext *ctx, GLenum error, const char *fmtString,...) |
| void | _mesa_debug (const __GLcontext *ctx, const char *fmtString,...) |
| void | _mesa_exit (int status) |
| Wrapper for exit(). | |
| #define ADD_POINTERS | ( | A, | |||
| B | ) | ( (GLubyte *) (A) + (uintptr_t) (B) ) |
| #define ALIGN_CALLOC | ( | BYTES, | |||
| N | ) | _mesa_align_calloc(BYTES, N) |
Allocate and zero BYTES bytes aligned at N bytes.
| #define ALIGN_CALLOC_STRUCT | ( | T, | |||
| N | ) | (struct T *) _mesa_align_calloc(sizeof(struct T), N) |
Allocate and zero a structure of type T aligned at N bytes.
| #define ALIGN_FREE | ( | PTR | ) | _mesa_align_free(PTR) |
Free aligned memory.
| #define ALIGN_MALLOC | ( | BYTES, | |||
| N | ) | _mesa_align_malloc(BYTES, N) |
Allocate BYTES aligned at N bytes.
| #define ALIGN_MALLOC_STRUCT | ( | T, | |||
| N | ) | (struct T *) _mesa_align_malloc(sizeof(struct T), N) |
Allocate a structure of type T aligned at N bytes.
| #define CALLOC | ( | BYTES | ) | _mesa_calloc(BYTES) |
Allocate and zero BYTES bytes.
| #define CALLOC_STRUCT | ( | T | ) | (struct T *) _mesa_calloc(sizeof(struct T)) |
Allocate and zero a structure of type T.
| #define CEILF | ( | x | ) | ((GLfloat) ceil(x)) |
| #define CLAMPED_FLOAT_TO_UBYTE | ( | ub, | |||
| f | ) | ub = ((GLubyte) IROUND((f) * 255.0F)) |
| #define DEG2RAD (M_PI/180.0) |
| #define DIFFERENT_SIGNS | ( | x, | |||
| y | ) | ((x) * (y) <= 0.0F && (x) - (y) != 0.0F) |
| #define EXPF | ( | x | ) | ((GLfloat) exp(x)) |
| #define FABSF | ( | x | ) | ((GLfloat) fabs(x)) |
| #define FLOORF | ( | x | ) | ((GLfloat) floor(x)) |
| #define FREE | ( | PTR | ) | _mesa_free(PTR) |
Free memory.
| #define FREXPF | ( | x, | |||
| y | ) | ((GLfloat) frexp(x,y)) |
| #define ICEIL | ( | x | ) | iceil(x) |
| #define IFLOOR | ( | x | ) | ifloor(x) |
| #define INV_SQRTF | ( | X | ) | (1.0F / SQRTF(X)) |
| #define IROUND | ( | f | ) | ((int) (((f) >= 0.0F) ? ((f) + 0.5F) : ((f) - 0.5F))) |
| #define IROUND64 | ( | f | ) | ((GLint64) (((f) >= 0.0F) ? ((f) + 0.5F) : ((f) - 0.5F))) |
| #define IROUND_POS | ( | f | ) | (IROUND(f)) |
| #define IS_INF_OR_NAN | ( | x | ) | (!finite(x)) |
| #define IS_NEGATIVE | ( | x | ) | (x < 0.0F) |
| #define LDEXPF | ( | x, | |||
| y | ) | ((GLfloat) ldexp(x,y)) |
| #define LOG2 | ( | x | ) | ((GLfloat) (log(x) * 1.442695F)) |
| #define LOGF | ( | x | ) | ((GLfloat) log(x)) |
| #define MALLOC | ( | BYTES | ) | _mesa_malloc(BYTES) |
Memory macros.
Allocate BYTES bytes
| #define MALLOC_STRUCT | ( | T | ) | (struct T *) _mesa_malloc(sizeof(struct T)) |
Allocate a structure of type T.
| #define MAX_GLUINT 0xffffffff |
| #define MAX_GLUSHORT 0xffff |
| #define MEMCPY | ( | DST, | |||
| SRC, | |||||
| BYTES | ) | _mesa_memcpy(DST, SRC, BYTES) |
Copy BYTES bytes from SRC into DST.
| #define MEMSET | ( | DST, | |||
| VAL, | |||||
| N | ) | _mesa_memset(DST, VAL, N) |
Set N bytes in DST to VAL.
| #define SQRTF | ( | X | ) | (float) sqrt((float) (X)) |
| #define UNCLAMPED_FLOAT_TO_UBYTE | ( | ub, | |||
| f | ) | ub = ((GLubyte) IROUND(CLAMP((f), 0.0F, 1.0F) * 255.0F)) |
| void* _mesa_align_calloc | ( | size_t | bytes, | |
| unsigned long | alignment | |||
| ) |
Same as _mesa_align_malloc(), but using _mesa_calloc() instead of _mesa_malloc().
| void _mesa_align_free | ( | void * | ptr | ) |
Free memory which was allocated with either _mesa_align_malloc() or _mesa_align_calloc().
| ptr | pointer to the memory to be freed. The actual address to free is stored in the word immediately before the address the client sees. |
| void* _mesa_align_malloc | ( | size_t | bytes, | |
| unsigned long | alignment | |||
| ) |
Allocate aligned memory.
| bytes | number of bytes to allocate. | |
| alignment | alignment (must be greater than zero). |
| void* _mesa_align_realloc | ( | void * | oldBuffer, | |
| size_t | oldSize, | |||
| size_t | newSize, | |||
| unsigned long | alignment | |||
| ) |
Reallocate memory, with alignment.
| float _mesa_asinf | ( | float | x | ) |
Single precision wrapper around asin().
| float _mesa_atanf | ( | float | x | ) |
Single precision wrapper around atan().
| int _mesa_atoi | ( | const char * | s | ) |
Wrapper around atoi().
| unsigned int _mesa_bitcount | ( | unsigned int | n | ) |
Return number of bits set in given GLuint.
| void* _mesa_bsearch | ( | const void * | key, | |
| const void * | base, | |||
| size_t | nmemb, | |||
| size_t | size, | |||
| int(*)(const void *, const void *) | compar | |||
| ) |
Wrapper for bsearch().
| void _mesa_bzero | ( | void * | dst, | |
| size_t | n | |||
| ) |
Wrapper around either memset() or bzero().
| void* _mesa_calloc | ( | size_t | bytes | ) |
Wrapper around calloc().
| double _mesa_cos | ( | double | a | ) |
Wrapper around cos().
| void _mesa_debug | ( | const __GLcontext * | ctx, | |
| const char * | fmtString, | |||
| ... | ||||
| ) |
| void _mesa_error | ( | __GLcontext * | ctx, | |
| GLenum | error, | |||
| const char * | fmtString, | |||
| ... | ||||
| ) |
| void _mesa_exec_free | ( | void * | addr | ) |
| void* _mesa_exec_malloc | ( | GLuint | size | ) |
| void _mesa_exit | ( | int | status | ) |
Wrapper for exit().
| int _mesa_ffs | ( | int32_t | i | ) |
Find the first bit set in a word.
| int _mesa_ffsll | ( | int64_t | val | ) |
Find position of first bit set in given value.
XXX Warning: this function can only be used on 64-bit systems!
| GLhalfARB _mesa_float_to_half | ( | float | val | ) |
Convert a 4-byte float to a 2-byte half float.
Based on code from: http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/008786.html
| void _mesa_fprintf | ( | FILE * | f, | |
| const char * | fmtString, | |||
| ... | ||||
| ) |
Wrapper around fprintf(), using vsprintf() for the formatting.
| void _mesa_free | ( | void * | ptr | ) |
Wrapper around free().
| char* _mesa_getenv | ( | const char * | var | ) |
Wrapper for getenv().
| float _mesa_half_to_float | ( | GLhalfARB | val | ) |
Convert a 2-byte half float to a 4-byte float.
Based on code from: http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/008786.html
| void _mesa_init_sqrt_table | ( | void | ) |
| float _mesa_inv_sqrtf | ( | float | n | ) |
inv_sqrt - A single precision 1/sqrt routine for IEEE format floats.
written by Josh Vanderhoof, based on newsgroup posts by James Van Buskirk and Vesa Karvonen.
| static INLINE int _mesa_is_pow_two | ( | int | x | ) | [static] |
Is x a power of two?
| static INLINE GLboolean _mesa_little_endian | ( | void | ) | [static] |
Return 1 if this is a little endian machine, 0 if big endian.
| void* _mesa_malloc | ( | size_t | bytes | ) |
Wrapper around malloc().
| int _mesa_memcmp | ( | const void * | s1, | |
| const void * | s2, | |||
| size_t | n | |||
| ) |
Wrapper around memcmp().
| void* _mesa_memcpy | ( | void * | dest, | |
| const void * | src, | |||
| size_t | n | |||
| ) |
memcpy wrapper
| void _mesa_memset | ( | void * | dst, | |
| int | val, | |||
| size_t | n | |||
| ) |
Wrapper around memset().
| void _mesa_memset16 | ( | unsigned short * | dst, | |
| unsigned short | val, | |||
| size_t | n | |||
| ) |
Fill memory with a constant 16bit word.
| dst | destination pointer. | |
| val | value. | |
| n | number of words. |
| double _mesa_pow | ( | double | x, | |
| double | y | |||
| ) |
Wrapper around pow().
| void _mesa_printf | ( | const char * | fmtString, | |
| ... | ||||
| ) |
Wrapper around printf(), using vsprintf() for the formatting.
| void _mesa_problem | ( | const __GLcontext * | ctx, | |
| const char * | fmtString, | |||
| ... | ||||
| ) |
| void* _mesa_realloc | ( | void * | oldBuffer, | |
| size_t | oldSize, | |||
| size_t | newSize | |||
| ) |
Reallocate memory.
| double _mesa_sin | ( | double | a | ) |
Wrapper around sin().
| float _mesa_sinf | ( | float | a | ) |
Single precision wrapper around sin().
| int _mesa_snprintf | ( | char * | str, | |
| size_t | size, | |||
| const char * | fmt, | |||
| ... | ||||
| ) |
Wrapper around vsnprintf().
| int _mesa_sprintf | ( | char * | str, | |
| const char * | fmt, | |||
| ... | ||||
| ) |
Wrapper around vsprintf().
| double _mesa_sqrtd | ( | double | x | ) |
Wrapper around sqrt().
| float _mesa_sqrtf | ( | float | x | ) |
Single precision square root.
| unsigned int _mesa_str_checksum | ( | const char * | str | ) |
Compute simple checksum/hash for a string.
| int _mesa_strcmp | ( | const char * | s1, | |
| const char * | s2 | |||
| ) |
Wrapper around strcmp().
| char* _mesa_strcpy | ( | char * | dest, | |
| const char * | src | |||
| ) |
Wrapper around strcpy().
| char* _mesa_strdup | ( | const char * | s | ) |
Implemented using _mesa_malloc() and _mesa_strcpy.
Note that NULL is handled accordingly.
| size_t _mesa_strlen | ( | const char * | s | ) |
Wrapper around strlen().
| char* _mesa_strncat | ( | char * | dest, | |
| const char * | src, | |||
| size_t | n | |||
| ) |
Wrapper around strncat().
| int _mesa_strncmp | ( | const char * | s1, | |
| const char * | s2, | |||
| size_t | n | |||
| ) |
Wrapper around strncmp().
| char* _mesa_strncpy | ( | char * | dest, | |
| const char * | src, | |||
| size_t | n | |||
| ) |
Wrapper around strncpy().
| char* _mesa_strstr | ( | const char * | haystack, | |
| const char * | needle | |||
| ) |
Wrapper around strstr().
| double _mesa_strtod | ( | const char * | s, | |
| char ** | end | |||
| ) |
Wrapper around strtod().
| int _mesa_vsprintf | ( | char * | str, | |
| const char * | fmt, | |||
| va_list | args | |||
| ) |
Wrapper around vsprintf().
| void _mesa_warning | ( | __GLcontext * | gc, | |
| const char * | fmtString, | |||
| ... | ||||
| ) |
| static INLINE int iceil | ( | float | f | ) | [static] |
| static INLINE int ifloor | ( | float | f | ) | [static] |
1.5.4