PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ lwgeom_to_wkb_varlena()

lwvarlena_t* lwgeom_to_wkb_varlena ( const LWGEOM geom,
uint8_t  variant 
)

Definition at line 851 of file lwout_wkb.c.

852 {
853  size_t b_size = lwgeom_to_wkb_size(geom, variant);
854  /* Hex string takes twice as much space as binary, but No NULL ending in varlena */
855  if (variant & WKB_HEX)
856  {
857  b_size = 2 * b_size;
858  }
859 
861  int written_size = lwgeom_to_wkb_write_buf(geom, variant, (uint8_t *)buffer->data);
862  if (written_size != (ptrdiff_t)b_size)
863  {
864  char *wkt = lwgeom_to_wkt(geom, WKT_EXTENDED, 15, NULL);
865  lwerror("Output WKB is not the same size as the allocated buffer. Variant: %u, Geom: %s", variant, wkt);
866  lwfree(wkt);
867  lwfree(buffer);
868  return NULL;
869  }
870  LWSIZE_SET(buffer->size, written_size + LWVARHDRSZ);
871  return buffer;
872 }
static uint8_t variant
Definition: cu_in_twkb.c:26
#define LWVARHDRSZ
Definition: liblwgeom.h:311
#define WKT_EXTENDED
Definition: liblwgeom.h:2186
#define WKB_HEX
Definition: liblwgeom.h:2180
void lwfree(void *mem)
Definition: lwutil.c:242
char * lwgeom_to_wkt(const LWGEOM *geom, uint8_t variant, int precision, size_t *size_out)
WKT emitter function.
Definition: lwout_wkt.c:708
#define LWSIZE_SET(varsize, len)
Definition: liblwgeom.h:325
void * lwalloc(size_t size)
Definition: lwutil.c:227
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:190
static size_t lwgeom_to_wkb_size(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:676
static ptrdiff_t lwgeom_to_wkb_write_buf(const LWGEOM *geom, uint8_t variant, uint8_t *buffer)
Convert LWGEOM to a char* in WKB format.
Definition: lwout_wkb.c:797
Datum buffer(PG_FUNCTION_ARGS)

References buffer(), lwalloc(), lwerror(), lwfree(), lwgeom_to_wkb_size(), lwgeom_to_wkb_write_buf(), lwgeom_to_wkt(), LWSIZE_SET, LWVARHDRSZ, variant, WKB_HEX, and WKT_EXTENDED.

Referenced by cu_wkb_in(), geography_send(), LWGEOM_asBinary(), lwgeom_to_hexwkb_varlena(), RASTER_asRaster(), RASTER_clip(), RASTER_setPixelValuesGeomval(), rt_raster_gdal_polygonize(), and WKBFromLWGEOM().

Here is the call graph for this function:
Here is the caller graph for this function: