PostGIS  2.2.8dev-r@@SVN_REVISION@@

◆ ptarray_clone_deep()

POINTARRAY* ptarray_clone_deep ( const POINTARRAY in)

Deep clone a pointarray (also clones serialized pointlist)

Definition at line 634 of file ptarray.c.

References POINTARRAY::flags, FLAGS_SET_READONLY, lwalloc(), LWDEBUG, POINTARRAY::maxpoints, POINTARRAY::npoints, ptarray_point_size(), and POINTARRAY::serialized_pointlist.

Referenced by _lwt_AddFaceSplit(), _lwt_EdgeMotionArea(), _lwt_HealEdges(), lwcurvepoly_construct_from_lwpoly(), lwcurvepoly_stroke(), LWGEOM_dump_rings(), lwline_clone_deep(), lwmcurve_stroke(), lwmsurface_stroke(), lwpoly_clone_deep(), lwpoly_from_lwlines(), lwtriangle_from_lwline(), parse_gml_coord(), parse_gml_pos(), parse_gml_poslist(), parse_kml_coordinates(), and ptarray_remove_repeated_points_minpoints().

635 {
636  POINTARRAY *out = lwalloc(sizeof(POINTARRAY));
637  size_t size;
638 
639  LWDEBUG(3, "ptarray_clone_deep called.");
640 
641  out->flags = in->flags;
642  out->npoints = in->npoints;
643  out->maxpoints = in->npoints;
644 
645  FLAGS_SET_READONLY(out->flags, 0);
646 
647  size = in->npoints * ptarray_point_size(in);
648  out->serialized_pointlist = lwalloc(size);
649  memcpy(out->serialized_pointlist, in->serialized_pointlist, size);
650 
651  return out;
652 }
uint8_t * serialized_pointlist
Definition: liblwgeom.h:350
int ptarray_point_size(const POINTARRAY *pa)
Definition: ptarray.c:54
int npoints
Definition: liblwgeom.h:355
#define LWDEBUG(level, msg)
Definition: lwgeom_log.h:50
uint8_t flags
Definition: liblwgeom.h:353
int maxpoints
Definition: liblwgeom.h:356
void * lwalloc(size_t size)
Definition: lwutil.c:199
#define FLAGS_SET_READONLY(flags, value)
Definition: liblwgeom.h:134
Here is the call graph for this function:
Here is the caller graph for this function: