PostGIS  2.5.7dev-r@@SVN_REVISION@@

◆ lwpoly_to_wkb_size()

static size_t lwpoly_to_wkb_size ( const LWPOLY poly,
uint8_t  variant 
)
static

Definition at line 547 of file lwout_wkb.c.

548 {
549  /* endian flag + type number + number of rings */
550  size_t size = WKB_BYTE_SIZE + WKB_INT_SIZE + WKB_INT_SIZE;
551  uint32_t i = 0;
552 
553  /* Only process empty at this level in the EXTENDED case */
554  if ( (variant & WKB_EXTENDED) && lwgeom_is_empty((LWGEOM*)poly) )
555  return empty_to_wkb_size((LWGEOM*)poly, variant);
556 
557  /* Extended WKB needs space for optional SRID integer */
558  if ( lwgeom_wkb_needs_srid((LWGEOM*)poly, variant) )
559  size += WKB_INT_SIZE;
560 
561  for ( i = 0; i < poly->nrings; i++ )
562  {
563  /* Size of ring point array */
564  size += ptarray_to_wkb_size(poly->rings[i], variant);
565  }
566 
567  return size;
568 }
static uint8_t variant
Definition: cu_in_twkb.c:26
#define WKB_EXTENDED
Definition: liblwgeom.h:2068
int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)
Definition: lwgeom.c:1393
#define WKB_BYTE_SIZE
#define WKB_INT_SIZE
static int lwgeom_wkb_needs_srid(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:63
static size_t ptarray_to_wkb_size(const POINTARRAY *pa, uint8_t variant)
Definition: lwout_wkb.c:353
static size_t empty_to_wkb_size(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:291
unsigned int uint32_t
Definition: uthash.h:78

References empty_to_wkb_size(), lwgeom_is_empty(), lwgeom_wkb_needs_srid(), LWPOLY::nrings, ptarray_to_wkb_size(), LWPOLY::rings, variant, WKB_BYTE_SIZE, WKB_EXTENDED, and WKB_INT_SIZE.

Referenced by lwgeom_to_wkb_size().

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