Mir 1.0
Mir application programming interface
Memory handling routines

Data Structures

struct  mirkl_arr_t_
 Multidimensional array. More...
 

Typedefs

typedef struct mirkl_arr_t_ mirkl_arr_t
 Multidimensional array.
 

Functions

mirkl_error_tmirkl_mem_calloc (mirkl_size_t nels, mirkl_size_t elsize, void **mem)
 
mirkl_error_tmirkl_mem_malloc (mirkl_size_t totsize, void **mem)
 
mirkl_error_tmirkl_mem_realloc (mirkl_size_t newsize, void **mem)
 
void mirkl_mem_move (void *dest, const void *src, mirkl_size_t n)
 
void mirkl_mem_copy (void *dest, const void *src, mirkl_size_t n)
 
void mirkl_mem_free (void *mem)
 
mirkl_error_tmirkl_mem_vector_alloc (void **v, mirkl_size_t elsize, int nl, int nh)
 
mirkl_error_tmirkl_mem_matrix_alloc (void ***mat, mirkl_size_t elsize, int nrl, int nrh, int ncl, int nch)
 
void mirkl_mem_matrix_free (void **m, mirkl_size_t elsize, int nrl, int nrh, int ncl, int nch)
 
void mirkl_mem_vector_free (void *v, mirkl_size_t elsize, int nl, int nh)
 
mirkl_error_tmirkl_mem_array_alloc (mirkl_arr_t **arr, mirkl_size_t elsize, unsigned int dim_first,...)
 Allocates multi-dimensional array structure. More...
 
mirkl_error_tmirkl_mem_array_valloc (mirkl_arr_t **arr, mirkl_size_t elsize, unsigned int dim_first, va_list arg_buffer)
 Same as mirkl_mem_array_alloc but accepts va_list instead of variable number of arguments.
 
void mirkl_mem_array_free (mirkl_arr_t *arr)
 Destroying array structure. More...
 
mirkl_error_tmirkl_mem_array_copytoel (mirkl_arr_t *arr, const void *eldata, mirkl_size_t elsize, unsigned int ndim, unsigned int *npos)
 Set value of an element of array. More...
 
mirkl_error_tmirkl_mem_array_copyfromel (mirkl_arr_t *arr, void *eldata, mirkl_size_t elsize, unsigned int ndim, unsigned int *npos)
 Get value of an element of array. More...
 
mirkl_error_tmirkl_mem_array_allset (mirkl_arr_t *arr, int val, mirkl_size_t elsize)
 Set all elements of an array to one value. More...
 

Detailed Description

Function Documentation

◆ mirkl_mem_array_alloc()

mirkl_error_t * mirkl_mem_array_alloc ( mirkl_arr_t **  arr,
mirkl_size_t  elsize,
unsigned int  dim_first,
  ... 
)

Allocates multi-dimensional array structure.

Last argument must by zero. Example of allocating 4-dimensional integer array equvivalent to int a[10][10][10][10].

error = mirkl_mem_array_alloc(&arr, sizeof(int), 10, 10, 10, 10, 0);
if(error) {
mirkl_error_clear(mirkl_error_handle(error, mirkl_error_stdhandler, NULL));
exit(1);
}
void mirkl_error_clear(mirkl_error_t *error)
Free the memory used by error, as well as all ancestors and descendants of error.
mirkl_error_t * mirkl_mem_array_alloc(mirkl_arr_t **arr, mirkl_size_t elsize, unsigned int dim_first,...)
Allocates multi-dimensional array structure.

◆ mirkl_mem_array_allset()

mirkl_error_t * mirkl_mem_array_allset ( mirkl_arr_t arr,
int  val,
mirkl_size_t  elsize 
)

Set all elements of an array to one value.

// Zero all elements
error = mirkl_mem_array_allset(arr, 0, sizeof(double));
if(error) {
mirkl_error_clear(mirkl_error_handle(error, mirkl_error_stdhandler, NULL));
exit(1);
}
mirkl_error_t * mirkl_mem_array_allset(mirkl_arr_t *arr, int val, mirkl_size_t elsize)
Set all elements of an array to one value.

◆ mirkl_mem_array_copyfromel()

mirkl_error_t * mirkl_mem_array_copyfromel ( mirkl_arr_t arr,
void *  eldata,
mirkl_size_t  elsize,
unsigned int  ndim,
unsigned int *  npos 
)

Get value of an element of array.

Parameters are the same as in mirkl_mem_array_copytoel()

◆ mirkl_mem_array_copytoel()

mirkl_error_t * mirkl_mem_array_copytoel ( mirkl_arr_t arr,
const void *  eldata,
mirkl_size_t  elsize,
unsigned int  ndim,
unsigned int *  npos 
)

Set value of an element of array.

Copies external data to the memory of an element.

Parameters
[in]arrArray structure.
[in]eldataData to be copied.
[in]elsizeSize of data.
[in]ndimNumber of dimensions in array.
[in]nposAn array of indices indicating position of the element.

◆ mirkl_mem_array_free()

void mirkl_mem_array_free ( mirkl_arr_t arr)

Destroying array structure.

Parameters
[in]arrPointer to the array structure to be destroyed. Not valid after calling this function.