Remove array.[ch]
This commit was SVN r718.
Этот коммит содержится в:
родитель
5198b6aa81
Коммит
9e9405811e
@ -18,7 +18,6 @@ headers = \
|
||||
|
||||
liblfc_la_SOURCES = \
|
||||
$(headers) \
|
||||
array.c \
|
||||
lam_hash_table.c \
|
||||
lam_list.c \
|
||||
lam_object.c \
|
||||
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "lam/lfc/array.h"
|
||||
|
||||
#define ARR_BLK_SZ 20
|
||||
|
||||
|
||||
lam_class_info_t lam_array_t_class_info = {
|
||||
"lam_array_t",
|
||||
CLASS_INFO(lam_object_t),
|
||||
(lam_construct_t) lam_arr_construct,
|
||||
(lam_destruct_t) lam_arr_destruct
|
||||
};
|
||||
|
||||
/*
|
||||
*
|
||||
* lam_list_t interface
|
||||
*
|
||||
*/
|
||||
|
||||
void lam_arr_construct(lam_array_t *arr)
|
||||
{
|
||||
OBJ_CONSTRUCT_SUPER(arr, lam_object_t);
|
||||
arr->arr_items = NULL;
|
||||
arr->arr_size = 0;
|
||||
arr->arr_length = 0;
|
||||
}
|
||||
|
||||
void lam_arr_destruct(lam_array_t *arr)
|
||||
{
|
||||
lam_arr_remove_all(arr);
|
||||
free(arr->arr_items);
|
||||
OBJ_DESTRUCT_SUPER(arr, lam_object_t);
|
||||
}
|
||||
|
||||
bool lam_arr_construct_with(lam_array_t *arr, size_t length)
|
||||
{
|
||||
/* initializes array with fixed length.
|
||||
lam_arr_construct() must have been called first. */
|
||||
if ( arr->arr_items )
|
||||
{
|
||||
lam_arr_remove_all(arr);
|
||||
}
|
||||
|
||||
arr->arr_items = malloc(sizeof(lam_object_t *)*length);
|
||||
if ( arr->arr_items )
|
||||
{
|
||||
arr->arr_length = length;
|
||||
bzero(arr->arr_items, sizeof(lam_object_t *)*length);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool lam_arr_append_item(lam_array_t *arr, lam_object_t *item)
|
||||
{
|
||||
if ( arr->arr_size == arr->arr_length )
|
||||
{
|
||||
arr->arr_items = (lam_object_t **)realloc(arr->arr_items,
|
||||
sizeof(lam_object_t *)*(arr->arr_length + ARR_BLK_SZ));
|
||||
if ( arr->arr_items )
|
||||
{
|
||||
arr->arr_length += ARR_BLK_SZ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
arr->arr_items[arr->arr_size++] = item;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void lam_arr_remove_all(lam_array_t *arr)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for ( i = 0; i < arr->arr_size; i++ )
|
||||
{
|
||||
OBJ_RELEASE(arr->arr_items[i]);
|
||||
arr->arr_items[i] = NULL;
|
||||
}
|
||||
arr->arr_size = 0;
|
||||
}
|
||||
|
||||
|
||||
void lam_arr_remove_item(lam_array_t *arr, int index)
|
||||
{
|
||||
if ( (index >=0) && (index < arr->arr_length) )
|
||||
{
|
||||
arr->arr_items[index] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void lam_arr_set_item(lam_array_t *arr, lam_object_t *item, int index)
|
||||
{
|
||||
if ( (index >=0) && (index < arr->arr_length) )
|
||||
{
|
||||
arr->arr_items[index] = item;
|
||||
}
|
||||
}
|
||||
|
@ -1,95 +0,0 @@
|
||||
/*
|
||||
* $HEADER$
|
||||
*/
|
||||
|
||||
#ifndef LAM_ARRAY_H
|
||||
#define LAM_ARRAY_H
|
||||
|
||||
#include "lam_config.h"
|
||||
#include "lam/types.h"
|
||||
#include "lam/lfc/lam_object.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* Available Classes
|
||||
*
|
||||
*/
|
||||
|
||||
extern lam_class_info_t lam_array_t_class_info;
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* Array interface
|
||||
*
|
||||
*/
|
||||
|
||||
typedef int (*lam_arr_cmp_fn)(lam_object_t *, lam_object_t *);
|
||||
|
||||
struct lam_array_t
|
||||
{
|
||||
lam_object_t super;
|
||||
lam_object_t **arr_items;
|
||||
size_t arr_length;
|
||||
size_t arr_size;
|
||||
};
|
||||
typedef struct lam_array_t lam_array_t;
|
||||
|
||||
|
||||
#if defined(c_plusplus) || defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
void lam_arr_construct(lam_array_t *arr);
|
||||
void lam_arr_destruct(lam_array_t *arr);
|
||||
|
||||
/* initializes array with fixed length.
|
||||
* lam_arr_construct() must have been called first.
|
||||
*/
|
||||
bool lam_arr_construct_with(lam_array_t *arr, size_t length);
|
||||
|
||||
bool lam_arr_append_item(lam_array_t *arr, lam_object_t *item);
|
||||
|
||||
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);
|
||||
#if defined(c_plusplus) || defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline lam_object_t *lam_arr_get_item(lam_array_t *arr, size_t index);
|
||||
static inline lam_object_t *lam_arr_get_item(lam_array_t *arr, size_t 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;
|
||||
}
|
||||
|
||||
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 */
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user