294{
297 char *hexwkb;
298 size_t hexwkb_size;
300 text *result;
302 size_t text_size;
303
304
305 if ( (PG_NARGS()>1) && (!PG_ARGISNULL(1)) )
306 {
307 type = PG_GETARG_TEXT_P(1);
308
309 if ( ! strncmp(VARDATA(type), "xdr", 3) ||
310 ! strncmp(VARDATA(type), "XDR", 3) )
311 {
313 }
314 else
315 {
317 }
318 }
319
320
324
325
326 text_size = hexwkb_size - 1 + VARHDRSZ;
327 result = palloc(text_size);
328 memcpy(VARDATA(result), hexwkb, hexwkb_size - 1);
329 SET_VARSIZE(result, text_size);
330
331
333 PG_FREE_IF_COPY(geom, 0);
334 PG_RETURN_TEXT_P(result);
335}
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
char * lwgeom_to_hexwkb(const LWGEOM *geom, uint8_t variant, size_t *size_out)
void lwgeom_free(LWGEOM *geom)