/* viDOOM - level editor for DOOM Copyright (C) 2000 Ian Cowburn (ianc@noddybox.demon.co.uk) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------- Provides a dynamic sort-of-array type $Id$ */ #ifndef _MAP_H #define _MAP_H /* Opaque types for the map. NULL is the null map. */ struct _Map; typedef struct _Map *Map; /* Create a new Map that handles objects of type_size */ Map MapNew(int type_size); /* Copy a Map */ Map MapCopy(Map m); /* Destroy a Map object */ Map MapClear(Map m); /* Destroy all elements in a Map */ Map MapEmpty(Map m); /* Return number of elements in the Map */ int MapSize(Map m); /* Get the element from index no */ void *MapElem(Map m,int no); /* Add an element at position no. no==-1 positions the element at the end */ void MapAdd(Map m,int no,void *data); /* Find and element, searching using the passed predicate function. Function should return TRUE for found, FALSE for not found. Note the fist void* passed to the predicate will be of the type stored in the Map. The second argument will be whatever was passed as data. Returns NULL if the entry cannot be found. */ void *MapFindElem(Map m,int (*pred)(void *, void *),void *data); #endif /* END OF FILE */