H:/Class/11756/HLab/sphinxbase-0.4/include/ckd_alloc.h File Reference

Sphinx's memory allocation/deallocation routines. More...

#include <stdlib.h>
#include <setjmp.h>
#include <sphinxbase_export.h>
#include <prim_type.h>

Go to the source code of this file.

Defines

#define ckd_calloc(n, sz)   __ckd_calloc__((n),(sz),__FILE__,__LINE__)
#define ckd_malloc(sz)   __ckd_malloc__((sz),__FILE__,__LINE__)
#define ckd_realloc(ptr, sz)   __ckd_realloc__(ptr,(sz),__FILE__,__LINE__)
#define ckd_salloc(ptr)   __ckd_salloc__(ptr,__FILE__,__LINE__)
#define ckd_calloc_2d(d1, d2, sz)   __ckd_calloc_2d__((d1),(d2),(sz),__FILE__,__LINE__)
#define ckd_calloc_3d(d1, d2, d3, sz)   __ckd_calloc_3d__((d1),(d2),(d3),(sz),__FILE__,__LINE__)
#define ckd_alloc_2d_ptr(d1, d2, bf, sz)   __ckd_alloc_2d_ptr((d1), (d2), (bf), (sz), __FILE__, __LINE__)
#define ckd_free_2d_ptr(bf)   ckd_free(bf)
#define ckd_alloc_3d_ptr(d1, d2, d3, bf, sz)   __ckd_alloc_3d_ptr((d1), (d2), (d3), (bf), (sz), __FILE__, __LINE__)
#define ckd_free_3d_ptr(bf)   ckd_free_2d(bf)

Functions

jmp_buf * ckd_set_jump (jmp_buf *env, int abort)
void ckd_fail (char *format,...)
SPHINXBASE_EXPORT void * __ckd_calloc__ (size_t n_elem, size_t elem_size, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_malloc__ (size_t size, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_realloc__ (void *ptr, size_t new_size, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT char * __ckd_salloc__ (const char *origstr, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_calloc_2d__ (size_t d1, size_t d2, size_t elemsize, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_calloc_3d__ (size_t d1, size_t d2, size_t d3, size_t elemsize, const char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_alloc_3d_ptr (size_t d1, size_t d2, size_t d3, void *store, size_t elem_size, char *caller_file, int caller_line)
SPHINXBASE_EXPORT void * __ckd_alloc_2d_ptr (size_t d1, size_t d2, void *store, size_t elem_size, char *caller_file, int caller_line)
SPHINXBASE_EXPORT void ckd_free (void *ptr)
SPHINXBASE_EXPORT void ckd_free_2d (void *ptr)
SPHINXBASE_EXPORT void ckd_free_3d (void *ptr)

Detailed Description

Sphinx's memory allocation/deallocation routines.

Implementation of efficient memory allocation deallocation for multiple dimensional arrays.


Define Documentation

#define ckd_alloc_2d_ptr ( d1,
d2,
bf,
sz   )     __ckd_alloc_2d_ptr((d1), (d2), (bf), (sz), __FILE__, __LINE__)

Macro for __ckd_alloc_2d_ptr__

#define ckd_alloc_3d_ptr ( d1,
d2,
d3,
bf,
sz   )     __ckd_alloc_3d_ptr((d1), (d2), (d3), (bf), (sz), __FILE__, __LINE__)

Macro for __ckd_alloc_3d_ptr__

#define ckd_calloc ( n,
sz   )     __ckd_calloc__((n),(sz),__FILE__,__LINE__)

Macros to simplify the use of above functions. One should use these, rather than target functions directly. Macro for __ckd_calloc__

#define ckd_calloc_2d ( d1,
d2,
sz   )     __ckd_calloc_2d__((d1),(d2),(sz),__FILE__,__LINE__)

Macro for __ckd_calloc_2d__

#define ckd_calloc_3d ( d1,
d2,
d3,
sz   )     __ckd_calloc_3d__((d1),(d2),(d3),(sz),__FILE__,__LINE__)

Macro for __ckd_calloc_3d__

#define ckd_free_2d_ptr ( bf   )     ckd_free(bf)

Free only the pointer arrays allocated with ckd_alloc_2d_ptr().

#define ckd_free_3d_ptr ( bf   )     ckd_free_2d(bf)

Free only the pointer arrays allocated with ckd_alloc_3d_ptr().

#define ckd_malloc ( sz   )     __ckd_malloc__((sz),__FILE__,__LINE__)

Macro for __ckd_malloc__

#define ckd_realloc ( ptr,
sz   )     __ckd_realloc__(ptr,(sz),__FILE__,__LINE__)

Macro for __ckd_realloc__

#define ckd_salloc ( ptr   )     __ckd_salloc__(ptr,__FILE__,__LINE__)

Macro for __ckd_salloc__


Function Documentation

SPHINXBASE_EXPORT void* __ckd_alloc_2d_ptr ( size_t  d1,
size_t  d2,
void *  store,
size_t  elem_size,
char *  caller_file,
int  caller_line 
)

Overlay a s-D array over a previously allocated storage area.

SPHINXBASE_EXPORT void* __ckd_alloc_3d_ptr ( size_t  d1,
size_t  d2,
size_t  d3,
void *  store,
size_t  elem_size,
char *  caller_file,
int  caller_line 
)

Overlay a 3-D array over a previously allocated storage area.

SPHINXBASE_EXPORT void* __ckd_calloc_2d__ ( size_t  d1,
size_t  d2,
size_t  elemsize,
const char *  caller_file,
int  caller_line 
)

Allocate a 2-D array and return ptr to it (ie, ptr to vector of ptrs). The data area is allocated in one block so it can also be treated as a 1-D array.

SPHINXBASE_EXPORT void* __ckd_calloc_3d__ ( size_t  d1,
size_t  d2,
size_t  d3,
size_t  elemsize,
const char *  caller_file,
int  caller_line 
)

Allocate a 3-D array and return ptr to it. The data area is allocated in one block so it can also be treated as a 1-D array.

SPHINXBASE_EXPORT void* __ckd_calloc__ ( size_t  n_elem,
size_t  elem_size,
const char *  caller_file,
int  caller_line 
)
SPHINXBASE_EXPORT void* __ckd_malloc__ ( size_t  size,
const char *  caller_file,
int  caller_line 
)
SPHINXBASE_EXPORT void* __ckd_realloc__ ( void *  ptr,
size_t  new_size,
const char *  caller_file,
int  caller_line 
)
SPHINXBASE_EXPORT char* __ckd_salloc__ ( const char *  origstr,
const char *  caller_file,
int  caller_line 
)

Like strdup, except that if an error occurs it prints a diagnostic message and exits.

void ckd_fail ( char *  format,
  ... 
)

Fail (with a message) according to behaviour specified by ckd_set_jump().

SPHINXBASE_EXPORT void ckd_free ( void *  ptr  ) 

Test and free a 1-D array

SPHINXBASE_EXPORT void ckd_free_2d ( void *  ptr  ) 

Free a 2-D array (ptr) previously allocated by ckd_calloc_2d

SPHINXBASE_EXPORT void ckd_free_3d ( void *  ptr  ) 

Free a 3-D array (ptr) previously allocated by ckd_calloc_3d

jmp_buf* ckd_set_jump ( jmp_buf *  env,
int  abort 
)

Control behaviour of the program when allocation fails.

Although your program is probably toast when memory allocation fails, it is also probably a good idea to be able to catch these errors and alert the user in some way. Either that, or you might want the program to call abort() so that you can debug the failed code. This function allows you to control that behaviour.

Parameters:
env Pointer to a jmp_buf initialized with setjmp(), or NULL to remove a previously set jump target.
abort If non-zero, the program will call abort() when allocation fails rather than exiting or calling longjmp().
Returns:
Pointer to a previously set jmp_buf, if any.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines
Generated on Sat May 8 14:21:41 2010 for HLab by  doxygen 1.6.3