/* $Id: dynarray.h 1434 2005-08-02 20:18:31Z mipsator $ */
/*
* Copyright (c) 2003-2005 Damien Couderc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* - Neither the name of the copyright holder(s) nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef _PMK_DYNARRAY_H_
#define _PMK_DYNARRAY_H_
#include "compat/pmk_stdbool.h"
/*************
* constants *
************************************************************************/
#ifndef DYNARY_AUTO_GROW
#define DYNARY_AUTO_GROW 4
#endif
/**********************************
* type and structure definitions *
***********************************************************************/
typedef struct {
int nbcell,
nextidx;
void (*freeobj)(void *),
**pary;
} dynary;
/************************
* functions prototypes *
***********************************************************************/
dynary *da_init(void);
dynary *da_init_adv(void (*)(void *));
bool da_resize(dynary *, size_t);
size_t da_size(dynary *);
size_t da_usize(dynary *);
bool da_push(dynary *, void *);
void *da_pop(dynary *);
void *da_shift(dynary *);
void *da_idx(dynary *, int);
void da_destroy(dynary *);
bool da_find(dynary *, char *);
void da_sort(dynary *);
#endif /* _PMK_DYNARRAY_H_ */
syntax highlighted by Code2HTML, v. 0.9.1