1
1
openmpi/src/lam/lfc/array.h
Jeff Squyres 2b77e55d5b Make inlines be static
This commit was SVN r231.
2004-01-10 22:52:54 +00:00

89 строки
1.9 KiB
C

/*
* $HEADER$
*/
#ifndef LAM_ARRAY_H
#define LAM_ARRAY_H
#include "lam_config.h"
#include "lam/types.h"
#include "lam/lfc/object.h"
/*
*
* Available Classes
*
*/
extern lam_class_info_t lam_array_cls;
/*
*
* Arrray interface
*
*/
typedef int (*lam_arr_cmp_fn)(lam_object_t *, lam_object_t *);
typedef struct lam_array
{
lam_object_t super;
lam_object_t **arr_items;
size_t arr_length;
size_t arr_size;
} lam_array_t;
void lam_arr_init(lam_array_t *arr);
void lam_arr_destroy(lam_array_t *arr);
/* initializes array with fixed length.
* lam_arr_init() must have been called first.
*/
bool lam_arr_init_with(lam_array_t *arr, size_t length);
bool lam_arr_append_item(lam_array_t *arr, lam_object_t *item);
static inline lam_object_t *lam_arr_get_item(lam_array_t *arr, int index);
static inline lam_object_t *lam_arr_get_item(lam_array_t *arr, int index)
{
if ( (index >=0) && (index < arr->arr_length) )
{
return arr->arr_items[index];
}
return NULL;
}
static inline size_t lam_arr_get_size(lam_array_t *arr);
static inline size_t lam_arr_get_size(lam_array_t *arr)
{
return arr->arr_size;
}
int lam_arr_index_of_item_matching(lam_array_t *arr, lam_object_t *item,
lam_arr_cmp_fn cmp_fn);
void lam_arr_remove_all(lam_array_t *arr);
void lam_arr_remove_item(lam_array_t *arr, int index);
void lam_arr_remove_item_matching(lam_array_t *arr, lam_object_t *item,
lam_arr_cmp_fn cmp_fn);
void lam_arr_set_item(lam_array_t *arr, lam_object_t *item, int index);
static inline lam_object_t **lam_arr_get_c_array(lam_array_t *arr,
size_t *size);
static inline lam_object_t **lam_arr_get_c_array(lam_array_t *arr,
size_t *size)
{
*size = arr->arr_size;
return arr->arr_items;
}
#endif /* LAM_ARRAY_H */