/******************************************************************************** * Copyright: (C) 2012 Guo Wenxue * All rights reserved. * * Filename: cp_array.h * Description: This head file is for the dynaic array implement * * Version: 1.0.0(12/20/2012~) * Author: Guo Wenxue * ChangeLog: 1, Release initial version on "12/20/2012 01:49:11 PM" * ********************************************************************************/ #ifndef __CP_ARRAY_H #define __CP_ARRAY_H #define CP_ARRAY_FLAG_MALLOC (1<<0) typedef struct _CP_ARRAY { unsigned char flag; int size; int items; void **data; } CP_ARRAY; #define cp_array_is_full(arr) ( (arr)->size-1==(arr)->items ? 1 :0 ) #define cp_array_is_empty(arr) ( 0==(arr)->items ? 1 : 0) #define cp_array_count(arr) ( (arr)->items ) #define cp_array_size(arr) ( (arr)->size-1 ) #define cp_list_array_for_each(arr, i, entry) for(i=0,entry=arr->data[i]; isize; ++i,entry=isize?arr->data[i]:NULL) CP_ARRAY *cp_array_init(CP_ARRAY *array, int size); void cp_array_term(CP_ARRAY *array); int cp_array_add(CP_ARRAY *array, void *data); void cp_array_rm_byindex(CP_ARRAY *array, int index); int cp_array_rm_bydata(CP_ARRAY *array, void *data); void cp_array_travel(CP_ARRAY *array); #endif /* __CP_ARRAY_H */