1 /*
2 * (C) 2001 by Argonne National Laboratory.
3 * See COPYRIGHT in top-level directory.
4 */
5
6 #include <stdio.h>
7 #if HAVE_STDLIB_H
8 #include <stdlib.h>
9 #endif
10 #include "lists.h"
11
Strings_CreateList(initialLen)12 xpand_list_Strings *Strings_CreateList(initialLen)
13 int initialLen;
14 {
15 xpand_list_Strings *tempPtr;
16
17 if (initialLen < 1) {
18 initialLen = 10;
19 }
20 tempPtr = (xpand_list_Strings *) malloc(sizeof(xpand_list_Strings));
21 if (tempPtr) {
22 tempPtr->list = (char **) malloc(sizeof(char *) * initialLen);
23 if (!tempPtr->list) {
24 return 0;
25 }
26 tempPtr->nused = 0;
27 tempPtr->size = initialLen;
28 } else {
29 fprintf( stderr, "Could not allocate memory for expanding list\n");
30 }
31 return tempPtr;
32 }
33
34
Strings_AddItem(listPtr,newItem)35 int Strings_AddItem(listPtr, newItem)
36 xpand_list_Strings *listPtr;
37 char *newItem;
38 {
39 if (listPtr->nused == listPtr->size) {
40 if (listPtr->size < 1)
41 listPtr->size = 1;
42 listPtr->size *= 2;
43 listPtr->list = (char **) realloc(listPtr->list,
44 sizeof(char *) * listPtr->size);
45 if (!listPtr->list) {
46 return 1;
47 }
48 }
49 listPtr->list[(listPtr->nused)++] = newItem;
50 return 0;
51 }
52
53
Strings_ShrinkToFit(listPtr)54 int Strings_ShrinkToFit(listPtr)
55 xpand_list_Strings *listPtr;
56 {
57 listPtr->size = listPtr->nused;
58 if (!listPtr->size)
59 listPtr->size = 1;
60 listPtr->list = (char **) realloc(listPtr->list,
61 sizeof(char *) * listPtr->size);
62 if (!listPtr->list) {
63 return 1;
64 }
65 return 0;
66 }
67
68
String_CreateList(initialLen)69 xpand_list_String *String_CreateList(initialLen)
70 int initialLen;
71 {
72 xpand_list_String *tempPtr;
73
74 if (initialLen < 1) {
75 initialLen = 10;
76 }
77 tempPtr = (xpand_list_String *) malloc(sizeof(xpand_list_String));
78 if (tempPtr) {
79 tempPtr->list = (char *) malloc(sizeof(char) * initialLen);
80 if (!tempPtr->list) {
81 return 0;
82 }
83 tempPtr->nused = 0;
84 tempPtr->size = initialLen;
85 } else {
86 fprintf( stderr, "Could not allocate memory for expanding list\n");
87 }
88 return tempPtr;
89 }
90
91
String_AddItem(listPtr,newItem)92 int String_AddItem(listPtr, newItem)
93 xpand_list_String *listPtr;
94 char newItem;
95 {
96 if (listPtr->nused == listPtr->size) {
97 if (listPtr->size < 1)
98 listPtr->size = 1;
99 listPtr->size *= 2;
100 listPtr->list = (char *) realloc(listPtr->list,
101 sizeof(char) * listPtr->size);
102 if (!listPtr->list) {
103 return 1;
104 }
105 }
106 listPtr->list[(listPtr->nused)++] = newItem;
107 return 0;
108 }
109
110
String_ShrinkToFit(listPtr)111 int String_ShrinkToFit(listPtr)
112 xpand_list_String *listPtr;
113 {
114 listPtr->size = listPtr->nused;
115 if (!listPtr->size)
116 listPtr->size = 1;
117 listPtr->list = (char *) realloc(listPtr->list,
118 sizeof(char) * listPtr->size);
119 if (!listPtr->list) {
120 return 1;
121 }
122 return 0;
123 }
124
125
Int_CreateList(initialLen)126 xpand_list_Int *Int_CreateList(initialLen)
127 int initialLen;
128 {
129 xpand_list_Int *tempPtr;
130
131 if (initialLen < 1) {
132 initialLen = 10;
133 }
134 tempPtr = (xpand_list_Int *) malloc(sizeof(xpand_list_Int));
135 if (tempPtr) {
136 tempPtr->list = (int *) malloc(sizeof(int) * initialLen);
137 if (!tempPtr->list) {
138 return 0;
139 }
140 tempPtr->nused = 0;
141 tempPtr->size = initialLen;
142 } else {
143 fprintf( stderr, "Could not allocate memory for expanding list\n");
144 }
145 return tempPtr;
146 }
147
148
Int_AddItem(listPtr,newItem)149 int Int_AddItem(listPtr, newItem)
150 xpand_list_Int *listPtr;
151 int newItem;
152 {
153 if (listPtr->nused == listPtr->size) {
154 if (listPtr->size < 1)
155 listPtr->size = 1;
156 listPtr->size *= 2;
157 listPtr->list = (int *) realloc(listPtr->list,
158 sizeof(int) * listPtr->size);
159 if (!listPtr->list) {
160 return 1;
161 }
162 }
163 listPtr->list[(listPtr->nused)++] = newItem;
164 return 0;
165 }
166
167
Int_ShrinkToFit(listPtr)168 int Int_ShrinkToFit(listPtr)
169 xpand_list_Int *listPtr;
170 {
171 listPtr->size = listPtr->nused;
172 if (!listPtr->size)
173 listPtr->size = 1;
174 listPtr->list = (int *) realloc(listPtr->list,
175 sizeof(int) * listPtr->size);
176 if (!listPtr->list) {
177 return 1;
178 }
179 return 0;
180 }
181
182
183