5 |
|
* Quadtree-specific set operations with unsorted sets. |
6 |
|
*/ |
7 |
|
|
8 |
+ |
#include <string.h> |
9 |
+ |
|
10 |
|
#include "standard.h" |
11 |
|
#include "sm_flag.h" |
12 |
|
#include "object.h" |
23 |
|
OBJECT **qtsettab= NULL; /* quadtree leaf node table */ |
24 |
|
QUADTREE qtnumsets=0; /* number of used set indices */ |
25 |
|
static int qtfreesets = EMPTY; /* free set index list */ |
26 |
< |
int4 *qtsetflag = NULL; |
26 |
> |
int32 *qtsetflag = NULL; |
27 |
|
static int qtallocsets =0; |
28 |
|
|
29 |
|
qtclearsetflags() |
32 |
|
if(!qtsetflag) |
33 |
|
return; |
34 |
|
|
35 |
< |
bzero((char *)qtsetflag,FLAG_BYTES(qtallocsets)); |
35 |
> |
memset((char *)qtsetflag, '\0', FLAG_BYTES(qtallocsets)); |
36 |
|
} |
37 |
|
|
38 |
|
|
48 |
|
osi = qtfreesets; |
49 |
|
qtfreesets = (int)qtsettab[osi]; |
50 |
|
} else if ((osi = qtnumsets++) % QTSETIBLK == 0) { |
51 |
< |
qtsettab = (OBJECT **)realloc((char *)qtsettab, |
51 |
> |
qtsettab = (OBJECT **)realloc((void *)qtsettab, |
52 |
|
(unsigned)(osi+QTSETIBLK)*sizeof(OBJECT *)); |
53 |
|
if (qtsettab == NULL) |
54 |
|
goto memerr; |
55 |
< |
qtsetflag = (int4 *)realloc((char *)qtsetflag, |
55 |
> |
qtsetflag = (int32 *)realloc((void *)qtsetflag, |
56 |
|
FLAG_BYTES(osi+ QTSETIBLK)); |
57 |
|
if (qtsetflag == NULL) |
58 |
|
goto memerr; |
59 |
|
if(qtallocsets) |
60 |
< |
bzero((char *)((char *)(qtsetflag)+FLAG_BYTES(qtallocsets)), |
60 |
> |
memset((char *)((char *)(qtsetflag)+FLAG_BYTES(qtallocsets)), '\0', |
61 |
|
FLAG_BYTES(osi+QTSETIBLK)-FLAG_BYTES(qtallocsets)); |
62 |
|
else |
63 |
< |
bzero((char *)(qtsetflag),FLAG_BYTES(osi +QTSETIBLK)); |
63 |
> |
memset((char *)(qtsetflag), '\0', FLAG_BYTES(osi +QTSETIBLK)); |
64 |
|
|
65 |
|
qtallocsets = osi + QTSETIBLK; |
66 |
|
} |
128 |
|
} |
129 |
|
deletuelem(qtsettab[lf], id); |
130 |
|
if (QTONTHRESH(qtsettab[lf][0])) |
131 |
< |
qtsettab[lf] = (OBJECT *)realloc((char *)qtsettab[lf], |
131 |
> |
qtsettab[lf] = (OBJECT *)realloc((void *)qtsettab[lf], |
132 |
|
QTNODESIZ(qtsettab[lf][0])*sizeof(OBJECT)); |
133 |
|
return(qt); |
134 |
|
} |
163 |
|
} |
164 |
|
deletelem(qtsettab[lf], id); |
165 |
|
if (QTONTHRESH(qtsettab[lf][0])) |
166 |
< |
qtsettab[lf] = (OBJECT *)realloc((char *)qtsettab[lf], |
166 |
> |
qtsettab[lf] = (OBJECT *)realloc((void *)qtsettab[lf], |
167 |
|
QTNODESIZ(qtsettab[lf][0])*sizeof(OBJECT)); |
168 |
|
return(qt); |
169 |
|
} |
200 |
|
return(qt); |
201 |
|
} |
202 |
|
if (QTONTHRESH(qtsettab[lf][0])) { |
203 |
< |
qtsettab[lf] = (OBJECT *)realloc((char *)qtsettab[lf], |
203 |
> |
qtsettab[lf] = (OBJECT *)realloc((void *)qtsettab[lf], |
204 |
|
QTNODESIZ(qtsettab[lf][0]+1)*sizeof(OBJECT)); |
205 |
|
if (qtsettab[lf] == NULL) |
206 |
|
error(SYSTEM, "out of memory in qtaddelem"); |
232 |
|
osize = os[0]; |
233 |
|
if((i=compress_set(os)) < osize) |
234 |
|
{ |
235 |
< |
qtsettab[lf] = (OBJECT *)realloc((char *)qtsettab[lf], |
235 |
> |
qtsettab[lf] = (OBJECT *)realloc((void *)qtsettab[lf], |
236 |
|
QTNODESIZ(i+1)*sizeof(OBJECT)); |
237 |
|
if (qtsettab[lf] == NULL) |
238 |
|
error(SYSTEM, "out of memory in qtaddelem"); |
264 |
|
lf = QT_SET_INDEX(qt); |
265 |
|
#endif |
266 |
|
if (QTONTHRESH(qtsettab[lf][0])) { |
267 |
< |
qtsettab[lf] = (OBJECT *)realloc((char *)qtsettab[lf], |
267 |
> |
qtsettab[lf] = (OBJECT *)realloc((void *)qtsettab[lf], |
268 |
|
QTNODESIZ(qtsettab[lf][0]+1)*sizeof(OBJECT)); |
269 |
|
if (qtsettab[lf] == NULL) |
270 |
|
error(SYSTEM, "out of memory in qtaddelem"); |