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