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