]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - tools/quake2/qdata_heretic2/qcommon/arrayedlist.h
25bf5483ee3c54785cb5a5bea0960332822ff631
[xonotic/netradiant.git] / tools / quake2 / qdata_heretic2 / qcommon / arrayedlist.h
1 /*
2    Copyright (C) 1999-2006 Id Software, Inc. and contributors.
3    For a list of contributors, see the accompanying CONTRIBUTORS file.
4
5    This file is part of GtkRadiant.
6
7    GtkRadiant is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    GtkRadiant is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GtkRadiant; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 #ifndef _ARRAYEDLIST_H
23 #define _ARRAYEDLIST_H
24
25 #include <assert.h>
26
27 typedef struct ArrayedListNode_s
28 {
29         int data;
30         int next;
31         int inUse;
32 } ArrayedListNode_t;
33
34 #define ARRAYEDLISTNODE_NULL -1
35
36 static
37 #ifdef _WIN32
38 _inline
39 #else
40 inline
41 #endif
42 int GetFreeNode( ArrayedListNode_t *nodeArray, int max ){
43         int i;
44
45         for ( i = 0; i < max; ++i )
46         {
47                 if ( !nodeArray[i].inUse ) {
48                         nodeArray[i].inUse = 1;
49                         return i;
50                 }
51         }
52
53         assert( 0 );
54         return -1;
55 }
56
57 static
58 #ifdef _WIN32
59 _inline
60 #else
61 inline
62 #endif
63 void FreeNode( ArrayedListNode_t *nodeArray, int index ){
64         nodeArray[index].inUse = 0;
65 }
66
67 #endif //_ARRAYEDLIST_H