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 #include <sys/types.h>
00026 #include <stdlib.h>
00027 #include <limits.h>
00028 #include <assert.h>
00029 #include <pulse/cdecl.h>
00030
00035 PA_C_DECL_BEGIN
00036
00038 void* pa_xmalloc(size_t l);
00039
00041 void *pa_xmalloc0(size_t l);
00042
00044 void *pa_xrealloc(void *ptr, size_t size);
00045
00047 void pa_xfree(void *p);
00048
00050 char *pa_xstrdup(const char *s);
00051
00053 char *pa_xstrndup(const char *s, size_t l);
00054
00056 void* pa_xmemdup(const void *p, size_t l);
00057
00059 static inline void* pa_xnew_internal(unsigned n, size_t k) {
00060 assert(n < INT_MAX/k);
00061 return pa_xmalloc(n*k);
00062 }
00063
00065 #define pa_xnew(type, n) ((type*) pa_xnew_internal((n), sizeof(type)))
00066
00068 static inline void* pa_xnew0_internal(unsigned n, size_t k) {
00069 assert(n < INT_MAX/k);
00070 return pa_xmalloc0(n*k);
00071 }
00072
00074 #define pa_xnew0(type, n) ((type*) pa_xnew0_internal((n), sizeof(type)))
00075
00076 PA_C_DECL_END
00077
00078 #endif