[postgis-commits] svn - r3094 - trunk/liblwgeom/examples
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Mon Oct 13 06:03:23 PDT 2008
Author: mcayland
Date: 2008-10-13 06:03:23 -0700 (Mon, 13 Oct 2008)
New Revision: 3094
Modified:
trunk/liblwgeom/examples/unparser.c
Log:
Move the liblwgeom unparser example over to the dynptarray API which is the proper way to alter point arrays in memory.
Modified: trunk/liblwgeom/examples/unparser.c
===================================================================
--- trunk/liblwgeom/examples/unparser.c 2008-10-13 11:36:17 UTC (rev 3093)
+++ trunk/liblwgeom/examples/unparser.c 2008-10-13 13:03:23 UTC (rev 3094)
@@ -45,8 +45,8 @@
LWGEOM *lwgeom;
uchar *serialized_lwgeom;
- POINTARRAY *pa;
- POINT2D point2d;
+ DYNPTARRAY *dpa;
+ POINT4D point4d;
POINTARRAY **rings;
LWPOINT *testpoint;
@@ -58,12 +58,13 @@
* Construct a geometry equivalent to POINT(0 51)
*/
- pa = ptarray_construct(0, 0, 0);
- point2d.x = 0;
- point2d.y = 51;
- pa = ptarray_addPoint(pa, (uchar *)&point2d, 2, 0);
+ dpa = dynptarray_create(10, 2);
+ point4d.x = 0;
+ point4d.y = 51;
- testpoint = lwpoint_construct(-1, NULL, pa);
+ dynptarray_addPoint4d(dpa, &point4d, 0);
+
+ testpoint = lwpoint_construct(-1, NULL, dpa->pa);
/* Generate the LWGEOM from LWPOINT, then serialize it ready for the parser */
lwgeom = lwpoint_as_lwgeom(testpoint);
@@ -79,26 +80,27 @@
lwfree(lwg_unparser_result.wkoutput);
lwfree(serialized_lwgeom);
pfree_point(testpoint);
+ lwfree(dpa);
/*
* Construct a geometry equivalent to LINESTRING(0 0, 2 2, 4 1)
*/
- pa = ptarray_construct(0, 0, 0);
- point2d.x = 0;
- point2d.y = 0;
- pa = ptarray_addPoint(pa, (uchar *)&point2d, 2, 0);
+ dpa = dynptarray_create(10, 2);
+ point4d.x = 0;
+ point4d.y = 0;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 2;
- point2d.y = 2;
- pa = ptarray_addPoint(pa, (uchar *)&point2d, 2, 1);
+ point4d.x = 2;
+ point4d.y = 2;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 4;
- point2d.y = 1;
- pa = ptarray_addPoint(pa, (uchar *)&point2d, 2, 2);
+ point4d.x = 4;
+ point4d.y = 1;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- testline = lwline_construct(-1, NULL, pa);
+ testline = lwline_construct(-1, NULL, dpa->pa);
/* Generate the LWGEOM from LWLINE, then serialize it ready for the parser */
lwgeom = lwline_as_lwgeom(testline);
@@ -114,9 +116,9 @@
lwfree(lwg_unparser_result.wkoutput);
lwfree(serialized_lwgeom);
pfree_line(testline);
+ lwfree(dpa);
-
/*
* Construct a geometry equivalent to POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)(3 3, 3 6, 6 6, 6 3, 3 3))
*/
@@ -125,50 +127,55 @@
rings = lwalloc(sizeof(POINTARRAY) * 2);
/* Construct the first ring */
- rings[0] = ptarray_construct(0, 0, 0);
- point2d.x = 0;
- point2d.y = 0;
- rings[0] = ptarray_addPoint(rings[0], (uchar *)&point2d, 2, 0);
+ dpa = dynptarray_create(10, 2);
+ point4d.x = 0;
+ point4d.y = 0;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 0;
- point2d.y = 10;
- rings[0] = ptarray_addPoint(rings[0], (uchar *)&point2d, 2, 1);
+ point4d.x = 0;
+ point4d.y = 10;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 10;
- point2d.y = 10;
- rings[0] = ptarray_addPoint(rings[0], (uchar *)&point2d, 2, 2);
+ point4d.x = 10;
+ point4d.y = 10;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 10;
- point2d.y = 0;
- rings[0] = ptarray_addPoint(rings[0], (uchar *)&point2d, 2, 3);
+ point4d.x = 10;
+ point4d.y = 0;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 0;
- point2d.y = 0;
- rings[0] = ptarray_addPoint(rings[0], (uchar *)&point2d, 2, 4);
-
+ point4d.x = 0;
+ point4d.y = 0;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
+ rings[0] = dpa->pa;
+ lwfree(dpa);
+
/* Construct the second ring */
- rings[1] = ptarray_construct(0, 0, 0);
- point2d.x = 3;
- point2d.y = 3;
- rings[1] = ptarray_addPoint(rings[1], (uchar *)&point2d, 2, 0);
+ dpa = dynptarray_create(10, 2);
+ point4d.x = 3;
+ point4d.y = 3;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 3;
- point2d.y = 6;
- rings[1] = ptarray_addPoint(rings[1], (uchar *)&point2d, 2, 1);
+ point4d.x = 3;
+ point4d.y = 6;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 6;
- point2d.y = 6;
- rings[1] = ptarray_addPoint(rings[1], (uchar *)&point2d, 2, 2);
+ point4d.x = 6;
+ point4d.y = 6;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 6;
- point2d.y = 3;
- rings[1] = ptarray_addPoint(rings[1], (uchar *)&point2d, 2, 3);
+ point4d.x = 6;
+ point4d.y = 3;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
- point2d.x = 3;
- point2d.y = 3;
- rings[1] = ptarray_addPoint(rings[1], (uchar *)&point2d, 2, 4);
+ point4d.x = 3;
+ point4d.y = 3;
+ dynptarray_addPoint4d(dpa, &point4d, 0);
+ rings[1] = dpa->pa;
+ lwfree(dpa);
+
testpoly = lwpoly_construct(-1, NULL, 2, rings);
/* Generate the LWGEOM from LWPOLY, then serialize it ready for the parser */
@@ -185,4 +192,5 @@
lwfree(lwg_unparser_result.wkoutput);
lwfree(serialized_lwgeom);
pfree_polygon(testpoly);
+
}
More information about the postgis-commits
mailing list