| /* |
| * $Id: arraylist.h,v 1.4 2006/01/26 02:16:28 mclark Exp $ |
| * |
| * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd. |
| * Michael Clark <michael@metaparadigm.com> |
| * |
| * This library is free software; you can redistribute it and/or modify |
| * it under the terms of the MIT license. See COPYING for details. |
| * |
| */ |
| |
| #ifndef _arraylist_h_ |
| #define _arraylist_h_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define ARRAY_LIST_DEFAULT_SIZE 32 |
| |
| typedef void (array_list_free_fn) (void *data); |
| |
| struct array_list |
| { |
| void **array; |
| int length; |
| int size; |
| array_list_free_fn *free_fn; |
| }; |
| |
| extern struct array_list* |
| array_list_new(array_list_free_fn *free_fn); |
| |
| extern void |
| array_list_free(struct array_list *al); |
| |
| extern void* |
| array_list_get_idx(struct array_list *al, int i); |
| |
| extern int |
| array_list_put_idx(struct array_list *al, int i, void *data); |
| |
| extern int |
| array_list_add(struct array_list *al, void *data); |
| |
| extern int |
| array_list_length(struct array_list *al); |
| |
| extern void |
| array_list_sort(struct array_list *arr, int(*compar)(const void *, const void *)); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |