00001 #ifndef foomemoryhfoo
00002 #define foomemoryhfoo
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <sys/types.h>
00028 #include <stdlib.h>
00029 #include <limits.h>
00030 #include <assert.h>
00031 #include <pulse/cdecl.h>
00032
00037 PA_C_DECL_BEGIN
00038
00040 void* pa_xmalloc(size_t l);
00041
00043 void *pa_xmalloc0(size_t l);
00044
00046 void *pa_xrealloc(void *ptr, size_t size);
00047
00049 void pa_xfree(void *p);
00050
00052 char *pa_xstrdup(const char *s);
00053
00055 char *pa_xstrndup(const char *s, size_t l);
00056
00058 void* pa_xmemdup(const void *p, size_t l);
00059
00061 static inline void* pa_xnew_internal(unsigned n, size_t k) {
00062 assert(n < INT_MAX/k);
00063 return pa_xmalloc(n*k);
00064 }
00065
00067 #define pa_xnew(type, n) ((type*) pa_xnew_internal((n), sizeof(type)))
00068
00070 static inline void* pa_xnew0_internal(unsigned n, size_t k) {
00071 assert(n < INT_MAX/k);
00072 return pa_xmalloc0(n*k);
00073 }
00074
00076 #define pa_xnew0(type, n) ((type*) pa_xnew0_internal((n), sizeof(type)))
00077
00078 PA_C_DECL_END
00079
00080 #endif