PostGIS  2.5.0dev-r@@SVN_REVISION@@
static uint8_t* lwpoly_to_wkb_buf ( const LWPOLY poly,
uint8_t buf,
uint8_t  variant 
)
static

Definition at line 570 of file lwout_wkb.c.

References empty_to_wkb_buf(), endian_to_wkb_buf(), integer_to_wkb_buf(), lwgeom_is_empty(), lwgeom_wkb_needs_srid(), lwgeom_wkb_type(), LWPOLY::nrings, ptarray_to_wkb_buf(), LWPOLY::rings, LWPOLY::srid, and WKB_EXTENDED.

Referenced by lwgeom_to_wkb_buf().

571 {
572  uint32_t i;
573 
574  /* Only process empty at this level in the EXTENDED case */
575  if ( (variant & WKB_EXTENDED) && lwgeom_is_empty((LWGEOM*)poly) )
576  return empty_to_wkb_buf((LWGEOM*)poly, buf, variant);
577 
578  /* Set the endian flag */
579  buf = endian_to_wkb_buf(buf, variant);
580  /* Set the geometry type */
582  /* Set the optional SRID for extended variant */
583  if ( lwgeom_wkb_needs_srid((LWGEOM*)poly, variant) )
584  buf = integer_to_wkb_buf(poly->srid, buf, variant);
585  /* Set the number of rings */
586  buf = integer_to_wkb_buf(poly->nrings, buf, variant);
587 
588  for ( i = 0; i < poly->nrings; i++ )
589  {
590  buf = ptarray_to_wkb_buf(poly->rings[i], buf, variant);
591  }
592 
593  return buf;
594 }
static uint8_t * empty_to_wkb_buf(const LWGEOM *geom, uint8_t *buf, uint8_t variant)
Definition: lwout_wkb.c:315
static int lwgeom_wkb_needs_srid(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:63
uint8_t variant
Definition: cu_in_twkb.c:26
static uint32_t lwgeom_wkb_type(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:82
static uint8_t * integer_to_wkb_buf(const int ival, uint8_t *buf, uint8_t variant)
Definition: lwout_wkb.c:196
uint32_t nrings
Definition: liblwgeom.h:454
unsigned int uint32_t
Definition: uthash.h:78
POINTARRAY ** rings
Definition: liblwgeom.h:456
#define WKB_EXTENDED
Definition: liblwgeom.h:2061
int32_t srid
Definition: liblwgeom.h:453
static uint8_t * ptarray_to_wkb_buf(const POINTARRAY *pa, uint8_t *buf, uint8_t variant)
Definition: lwout_wkb.c:371
static uint8_t * endian_to_wkb_buf(uint8_t *buf, uint8_t variant)
Definition: lwout_wkb.c:164
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:1386

Here is the call graph for this function:

Here is the caller graph for this function: