BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
sfimemory.hh
Go to the documentation of this file.
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: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines