1595 ArrayType *array = NULL;
1597 const LWLINE *shell = NULL;
1598 const LWLINE **holes = NULL;
1604 POSTGIS_DEBUG(2,
"LWGEOM_makepoly called.");
1607 pglwg1 = PG_GETARG_GSERIALIZED_P(0);
1610 lwpgerror(
"Shell is not a line");
1617 array = PG_GETARG_ARRAYTYPE_P(1);
1618 nholes = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
1620 for (i = 0; i < nholes; i++)
1622 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
1623 #pragma GCC diagnostic push
1624 #pragma GCC diagnostic ignored "-Wsign-compare"
1627 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
1628 #pragma GCC diagnostic pop
1631 offset += INTALIGN(VARSIZE(g));
1634 lwpgerror(
"Hole %d is not a line", i);
1646 PG_FREE_IF_COPY(pglwg1, 0);
1648 for (i = 0; i < nholes; i++)
1653 PG_RETURN_POINTER(
result);
char result[OUT_DOUBLE_BUFFER_SIZE]
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
uint32_t gserialized_get_type(const GSERIALIZED *g)
Extract the geometry type from the serialized form (it hides in the anonymous data area,...
LWLINE * lwgeom_as_lwline(const LWGEOM *lwgeom)
char * lwgeom_summary(const LWGEOM *lwgeom, int offset)
void * lwalloc(size_t size)
LWPOLY * lwpoly_from_lwlines(const LWLINE *shell, uint32_t nholes, const LWLINE **holes)
void lwline_free(LWLINE *line)