495{
496 LWGEOM** split_vector=NULL;
498 size_t split_vector_capacity;
499 size_t split_vector_size=0;
500 size_t i,j;
501
502 split_vector_capacity=8;
503 split_vector =
lwalloc(split_vector_capacity *
sizeof(
LWGEOM*));
504 if ( ! split_vector )
505 {
506 lwerror(
"Out of virtual memory");
507 return NULL;
508 }
509
510 for (i=0; i<lwcoll_in->
ngeoms; ++i)
511 {
514
515 if ( ! split ) return NULL;
516
518
519 assert(col);
520
521
522 if ( split_vector_size + col->
ngeoms > split_vector_capacity )
523 {
524
525 split_vector_capacity += col->
ngeoms;
527 split_vector_capacity *
sizeof(
LWGEOM*));
528 if ( ! split_vector )
529 {
530 lwerror(
"Out of virtual memory");
531 return NULL;
532 }
533 }
534
535 for (j=0; j<col->
ngeoms; ++j)
536 {
538 split_vector[split_vector_size++] = col->
geoms[j];
539 }
542 }
543
544
546 NULL, split_vector_size, split_vector);
547
549}
LWCOLLECTION * lwcollection_construct(uint8_t type, int32_t srid, GBOX *bbox, uint32_t ngeoms, LWGEOM **geoms)
void * lwrealloc(void *mem, size_t size)
LWCOLLECTION * lwgeom_as_lwcollection(const LWGEOM *lwgeom)
void * lwalloc(size_t size)
#define SRID_UNKNOWN
Unknown SRID value.
LWGEOM * lwgeom_split(const LWGEOM *lwgeom_in, const LWGEOM *blade_in)
void void lwerror(const char *fmt,...) __attribute__((format(printf
Write a notice out to the error handler.