]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - tools/quake2/qdata_heretic2/qcommon/arrayedlist.h
Centralise compile checks
[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 GDEF_ATTRIBUTE_INLINE int GetFreeNode( ArrayedListNode_t *nodeArray, int max ){
37         int i;
38
39         for ( i = 0; i < max; ++i )
40         {
41                 if ( !nodeArray[i].inUse ) {
42                         nodeArray[i].inUse = 1;
43                         return i;
44                 }
45         }
46
47         assert( 0 );
48         return -1;
49 }
50
51 static GDEF_ATTRIBUTE_INLINE void FreeNode( ArrayedListNode_t *nodeArray, int index ){
52         nodeArray[index].inUse = 0;
53 }
54
55 #endif //_ARRAYEDLIST_H