summaryrefslogtreecommitdiff
path: root/map.h
blob: e8b8b657566bb96223509c635d74f38ee054937d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*

    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 VIDOOM_MAP_H

#define VIDOOM_MAP_H

/* Opaque types for the map.  NULL is the null map.
*/
struct VIDOOM_Map;
typedef struct VIDOOM_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 */