BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __SFI_MEMORY_H__ 00003 #define __SFI_MEMORY_H__ 00004 00005 #include <sfi/sfitypes.hh> 00006 00007 G_BEGIN_DECLS 00008 00009 00010 /* --- macros --- */ 00011 #define sfi_new_struct(type, n) ((type*) sfi_alloc_memblock (sizeof (type) * (n))) 00012 #define sfi_new_struct0(type, n) ((type*) sfi_alloc_memblock0 (sizeof (type) * (n))) 00013 #define sfi_delete_struct(type, mem) (sfi_delete_structs (type, 1, (mem))) 00014 #ifndef __GNUC__ 00015 # define sfi_delete_structs(type, n, mem) (sfi_free_memblock (sizeof (type) * (n), (mem))) 00016 #else /* provide typesafety if possible */ 00017 # define sfi_delete_structs(type, n, mem) ({ \ 00018 type *__typed_pointer = (mem); \ 00019 sfi_free_memblock (sizeof (type) * (n), __typed_pointer); \ 00020 }) 00021 #endif 00022 #define SFI_ALIGNED_SIZE(size,align) ((align) > 0 ? _SFI_INTERN_ALIGN (((gsize) (size)), ((gsize) (align))) : (gsize) (size)) 00023 #define _SFI_INTERN_ALIGN(s, a) (((s + (a - 1)) / a) * a) 00024 #define SFI_STD_ALIGN (MAX (MAX (sizeof (float), sizeof (int)), sizeof (void*))) 00025 00026 00027 /* --- implementation --- */ 00028 gpointer sfi_alloc_memblock (gsize size); 00029 gpointer sfi_alloc_memblock0 (gsize size); 00030 void sfi_free_memblock (gsize size, 00031 gpointer memblock); 00032 void sfi_alloc_report (void); 00033 gulong sfi_alloc_upper_power2 (const gulong number); 00034 void _sfi_free_node_list (gpointer mem, 00035 gsize node_size); 00036 G_END_DECLS 00037 #endif /* __SFI_MEMORY_H__ */ 00038 /* vim:set ts=8 sts=2 sw=2: */