PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ lwgeom_to_wkb_varlena()

lwvarlena_t * lwgeom_to_wkb_varlena ( const LWGEOM geom,
uint8_t  variant 
)
extern

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:2221
char * lwgeom_to_wkt(const LWGEOM *geom, uint8_t variant, int precision, size_t *size_out)
WKT emitter function.
Definition lwout_wkt.c:708
void * lwalloc(size_t size)
Definition lwutil.c:227
#define WKB_HEX
Definition liblwgeom.h:2215
void lwfree(void *mem)
Definition lwutil.c:248
#define LWSIZE_SET(varsize, len)
Definition liblwgeom.h:325
void void lwerror(const char *fmt,...) __attribute__((format(printf
Write a notice out to the error handler.
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(), LWGEOM::data, 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: