From: Sandro Santilli Date: Wed, 29 Sep 2004 06:31:42 +0000 (+0000) Subject: Changed LWGEOM to PG_LWGEOM. X-Git-Tag: pgis_1_0_0RC1~364 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e1ce40dcd9517fe87d2119e331712a0f2220f249;p=postgis Changed LWGEOM to PG_LWGEOM. Changed LWGEOM_construct to PG_LWGEOM_construct. git-svn-id: http://svn.osgeo.org/postgis/trunk@908 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/lwgeom/lwgeom.h b/lwgeom/lwgeom.h index d926b0ec5..2848b1eff 100644 --- a/lwgeom/lwgeom.h +++ b/lwgeom/lwgeom.h @@ -228,7 +228,7 @@ typedef struct { unsigned char type; // encodes ndims, type, bbox presence, // srid presence char data[1]; -} LWGEOM; +} PG_LWGEOM; /* * Construct a full LWGEOM type (including size header) @@ -239,12 +239,12 @@ typedef struct { * If you request bbox (wantbbox=1) it will be extracted or computed * from the serialized form. */ -extern LWGEOM *LWGEOM_construct(char *serialized, int SRID, int wantbbox); +extern PG_LWGEOM *PG_LWGEOM_construct(char *serialized, int SRID, int wantbbox); /* * Use this macro to extract the char * required - * by most functions from an LWGEOM struct. - * (which is an LWGEOM w/out int32 size casted to char *) + * by most functions from an PG_LWGEOM struct. + * (which is an PG_LWGEOM w/out int32 size casted to char *) */ #define SERIALIZED_FORM(x) ((char *)(x))+4 @@ -265,9 +265,10 @@ extern int lwgeom_size_subgeom(const char *serialized_form, int geom_number); typedef struct { - char ndims; // 2=2d, 3=3d, 4=4d, 5=undef - int SRID; // spatial ref sys - POINTARRAY *point; // hide 2d/3d (this will be an array of 1 point) + int type; // POINTTYPE + char ndims; // 2=2d, 3=3d, 4=4d, 5=undef + int SRID; // spatial ref sys + POINTARRAY *point; // hide 2d/3d (this will be an array of 1 point) } LWPOINT; // "light-weight point" // construct a new point. point will NOT be copied @@ -302,6 +303,7 @@ extern POINT3D lwpoint_getPoint3d(const LWPOINT *point); typedef struct { + int type; // LINETYPE char ndims; // 2=2d, 3=3d, 4=4d, 5=undef int SRID; // spatial ref sys -1=none POINTARRAY *points; // array of POINT3D @@ -335,6 +337,7 @@ extern BOX3D *lwline_findbbox(LWLINE *line); typedef struct { + int type; // POLYGONTYPE int32 SRID; char ndims; int nrings; @@ -515,9 +518,9 @@ int lwgeom_empty_length(int SRID); // get the SRID from the LWGEOM // none present => -1 -extern int lwgeom_getSRID(LWGEOM *lwgeom); +extern int lwgeom_getSRID(PG_LWGEOM *lwgeom); extern int lwgeom_getsrid(char *serialized); -extern LWGEOM *lwgeom_setSRID(LWGEOM *lwgeom, int32 newSRID); +extern PG_LWGEOM *lwgeom_setSRID(PG_LWGEOM *lwgeom, int32 newSRID); //get bounding box of LWGEOM (automatically calls the sub-geometries bbox generators) extern BOX3D *lw_geom_getBB(char *serialized_form); diff --git a/lwgeom/lwgeom_api.c b/lwgeom/lwgeom_api.c index a1dd2c1f3..9d39bd58c 100644 --- a/lwgeom/lwgeom_api.c +++ b/lwgeom/lwgeom_api.c @@ -2792,7 +2792,7 @@ int lwgeom_getsrid(char *serialized) // get the SRID from the LWGEOM // none present => -1 -int lwgeom_getSRID(LWGEOM *lwgeom) +int lwgeom_getSRID(PG_LWGEOM *lwgeom) { unsigned char type = lwgeom->type; char *loc = lwgeom->data; @@ -2810,12 +2810,12 @@ int lwgeom_getSRID(LWGEOM *lwgeom) // Set the SRID of a LWGEOM // Returns a newly allocated LWGEOM object. // Allocation will be done using the palloc. -LWGEOM *lwgeom_setSRID(LWGEOM *lwgeom, int32 newSRID) +PG_LWGEOM *lwgeom_setSRID(PG_LWGEOM *lwgeom, int32 newSRID) { unsigned char type = lwgeom->type; int bbox_offset=0; //0=no bbox, otherwise sizeof(BOX2DFLOAT4) int len,len_new,len_left; - LWGEOM *result; + PG_LWGEOM *result; char *loc_new, *loc_old; if (lwgeom_hasBBOX(type)) @@ -2863,14 +2863,14 @@ LWGEOM *lwgeom_setSRID(LWGEOM *lwgeom, int32 newSRID) return result; } -LWGEOM * -LWGEOM_construct(char *ser, int SRID, int wantbbox) +PG_LWGEOM * +PG_LWGEOM_construct(char *ser, int SRID, int wantbbox) { int size; char *iptr, *optr, *eptr; int wantsrid = 0; BOX2DFLOAT4 box; - LWGEOM *result; + PG_LWGEOM *result; size = lwgeom_size(ser); eptr = ser+size; // end of subgeom diff --git a/lwgeom/lwgeom_box2dfloat4.c b/lwgeom/lwgeom_box2dfloat4.c index b9581c596..5f2a1be86 100644 --- a/lwgeom/lwgeom_box2dfloat4.c +++ b/lwgeom/lwgeom_box2dfloat4.c @@ -97,11 +97,11 @@ Datum BOX2DFLOAT4_out(PG_FUNCTION_ARGS) } -//convert a LWGEOM to BOX2D +//convert a PG_LWGEOM to BOX2D PG_FUNCTION_INFO_V1(LWGEOM_to_BOX2DFLOAT4); Datum LWGEOM_to_BOX2DFLOAT4(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX2DFLOAT4 *result; result = palloc(sizeof(BOX2DFLOAT4)); @@ -424,7 +424,7 @@ Datum BOX2DFLOAT4_to_LWGEOM(PG_FUNCTION_ARGS) POINTARRAY *pa[1]; LWPOLY *poly; int wantbbox = 0; - LWGEOM *result; + PG_LWGEOM *result; char *ser; // Assign coordinates to POINT2D array @@ -446,8 +446,8 @@ Datum BOX2DFLOAT4_to_LWGEOM(PG_FUNCTION_ARGS) // Serialize polygon ser = lwpoly_serialize(poly); - // Construct LWGEOM - result = LWGEOM_construct(ser, -1, wantbbox); + // Construct PG_LWGEOM + result = PG_LWGEOM_construct(ser, -1, wantbbox); PG_RETURN_POINTER(result); } diff --git a/lwgeom/lwgeom_box3d.c b/lwgeom/lwgeom_box3d.c index 61e656f27..3d136843e 100644 --- a/lwgeom/lwgeom_box3d.c +++ b/lwgeom/lwgeom_box3d.c @@ -162,7 +162,7 @@ Datum BOX3D_to_LWGEOM(PG_FUNCTION_ARGS) POINTARRAY *pa[1]; LWPOLY *poly; int wantbbox = 0; - LWGEOM *result; + PG_LWGEOM *result; char *ser; // Assign coordinates to POINT2D array @@ -184,8 +184,8 @@ Datum BOX3D_to_LWGEOM(PG_FUNCTION_ARGS) // Serialize polygon ser = lwpoly_serialize(poly); - // Construct LWGEOM - result = LWGEOM_construct(ser, -1, wantbbox); + // Construct PG_LWGEOM + result = PG_LWGEOM_construct(ser, -1, wantbbox); PG_RETURN_POINTER(result); } @@ -216,11 +216,11 @@ Datum BOX3D_expand(PG_FUNCTION_ARGS) PG_RETURN_POINTER(result); } -//convert a LWGEOM to BOX3D +//convert a PG_LWGEOM to BOX3D PG_FUNCTION_INFO_V1(LWGEOM_to_BOX3D); Datum LWGEOM_to_BOX3D(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX3D *result; result = lw_geom_getBB(SERIALIZED_FORM(lwgeom)); @@ -277,7 +277,7 @@ Datum BOX3D_combine(PG_FUNCTION_ARGS) Pointer box3d_ptr = PG_GETARG_POINTER(0); Pointer geom_ptr = PG_GETARG_POINTER(1); BOX3D *a,*b; - LWGEOM *lwgeom; + PG_LWGEOM *lwgeom; BOX3D *box, *result; if ( (box3d_ptr == NULL) && (geom_ptr == NULL) ) @@ -289,7 +289,7 @@ Datum BOX3D_combine(PG_FUNCTION_ARGS) if (box3d_ptr == NULL) { - lwgeom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + lwgeom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); box = lw_geom_getBB(SERIALIZED_FORM(lwgeom)); if ( ! box ) PG_RETURN_NULL(); // must be the empty geom memcpy(result, box, sizeof(BOX3D)); @@ -303,7 +303,7 @@ Datum BOX3D_combine(PG_FUNCTION_ARGS) PG_RETURN_POINTER(result); } - lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); box = lw_geom_getBB(SERIALIZED_FORM(lwgeom)); if ( ! box ) // must be the empty geom { diff --git a/lwgeom/lwgeom_btree.c b/lwgeom/lwgeom_btree.c index 4c99dd7e6..0a582b8f4 100644 --- a/lwgeom/lwgeom_btree.c +++ b/lwgeom/lwgeom_btree.c @@ -30,8 +30,8 @@ Datum lwgeom_cmp(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(lwgeom_lt); Datum lwgeom_lt(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -87,8 +87,8 @@ Datum lwgeom_lt(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(lwgeom_le); Datum lwgeom_le(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -167,8 +167,8 @@ Datum lwgeom_le(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(lwgeom_eq); Datum lwgeom_eq(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -227,8 +227,8 @@ Datum lwgeom_eq(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(lwgeom_ge); Datum lwgeom_ge(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -299,8 +299,8 @@ Datum lwgeom_ge(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(lwgeom_gt); Datum lwgeom_gt(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -367,8 +367,8 @@ Datum lwgeom_gt(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(lwgeom_cmp); Datum lwgeom_cmp(PG_FUNCTION_ARGS) { - LWGEOM *geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); BOX2DFLOAT4 box1; BOX2DFLOAT4 box2; @@ -447,6 +447,10 @@ Datum lwgeom_cmp(PG_FUNCTION_ARGS) /*********************************************************** * * $Log$ + * Revision 1.4 2004/09/29 06:31:42 strk + * Changed LWGEOM to PG_LWGEOM. + * Changed LWGEOM_construct to PG_LWGEOM_construct. + * * Revision 1.3 2004/08/20 14:08:41 strk * Added Geom{etry,}FromWkb(,[]) funx. * Added LWGEOM typedef and SERIALIZED_FORM(LWGEOM) macro. diff --git a/lwgeom/lwgeom_chip.c b/lwgeom/lwgeom_chip.c index a8dcc93df..9d543929d 100644 --- a/lwgeom/lwgeom_chip.c +++ b/lwgeom/lwgeom_chip.c @@ -159,7 +159,7 @@ PG_FUNCTION_INFO_V1(CHIP_to_LWGEOM); Datum CHIP_to_LWGEOM(PG_FUNCTION_ARGS) { CHIP *chip = (CHIP *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *result; POINT2D *pts = palloc(sizeof(POINT2D)*5); POINTARRAY *pa[1]; LWPOLY *poly; @@ -185,8 +185,8 @@ Datum CHIP_to_LWGEOM(PG_FUNCTION_ARGS) // Serialize polygon ser = lwpoly_serialize(poly); - // Construct LWGEOM - result = LWGEOM_construct(ser, chip->SRID, wantbbox); + // Construct PG_LWGEOM + result = PG_LWGEOM_construct(ser, chip->SRID, wantbbox); PG_RETURN_POINTER(result); diff --git a/lwgeom/lwgeom_functions_analytic.c b/lwgeom/lwgeom_functions_analytic.c index db83e183b..23d9418ca 100644 --- a/lwgeom/lwgeom_functions_analytic.c +++ b/lwgeom/lwgeom_functions_analytic.c @@ -255,7 +255,7 @@ elog(NOTICE, "simplify_polygon3d: simplified polygon with %d rings", norings); PG_FUNCTION_INFO_V1(LWGEOM_simplify2d); Datum LWGEOM_simplify2d(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_EXPLODED *exp = lwgeom_explode(SERIALIZED_FORM(geom)); double dist = PG_GETARG_FLOAT8(1); int i; @@ -263,7 +263,7 @@ Datum LWGEOM_simplify2d(PG_FUNCTION_ARGS) int newlinesnum=0; char **newpolys; int newpolysnum=0; - LWGEOM *result; + PG_LWGEOM *result; char *serialized; // no lines, no points... return input @@ -321,7 +321,7 @@ Datum LWGEOM_simplify2d(PG_FUNCTION_ARGS) // copy 2 (see above) - result = LWGEOM_construct(serialized, + result = PG_LWGEOM_construct(serialized, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); PG_RETURN_POINTER(result); @@ -346,7 +346,7 @@ Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(LWGEOM_line_interpolate_point); Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); double distance = PG_GETARG_FLOAT8(1); LWLINE *line; LWPOINT *point; @@ -383,7 +383,7 @@ Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS) point = lwpoint_construct(line->ndims, line->SRID, opa); srl = lwpoint_serialize(point); pfree_point(point); - PG_RETURN_POINTER(LWGEOM_construct(srl, line->SRID, 0)); + PG_RETURN_POINTER(PG_LWGEOM_construct(srl, line->SRID, 0)); } /* Interpolate a point on the line */ @@ -413,7 +413,7 @@ Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS) point = lwpoint_construct(line->ndims, line->SRID, opa); srl = lwpoint_serialize(point); pfree_point(point); - PG_RETURN_POINTER(LWGEOM_construct(srl, line->SRID, 0)); + PG_RETURN_POINTER(PG_LWGEOM_construct(srl, line->SRID, 0)); } tlength += slength; } @@ -425,7 +425,7 @@ Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS) point = lwpoint_construct(line->ndims, line->SRID, opa); srl = lwpoint_serialize(point); pfree_point(point); - PG_RETURN_POINTER(LWGEOM_construct(srl, line->SRID, 0)); + PG_RETURN_POINTER(PG_LWGEOM_construct(srl, line->SRID, 0)); } /*********************************************************************** * --jsunday@rochgrp.com; diff --git a/lwgeom/lwgeom_functions_basic.c b/lwgeom/lwgeom_functions_basic.c index 40a706d0b..72fe7a508 100644 --- a/lwgeom/lwgeom_functions_basic.c +++ b/lwgeom/lwgeom_functions_basic.c @@ -847,7 +847,7 @@ lwpoly_forceRHR(const LWPOLY *ipoly) PG_FUNCTION_INFO_V1(LWGEOM_mem_size); Datum LWGEOM_mem_size(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 size = geom->size; int32 computed_size = lwgeom_size(SERIALIZED_FORM(geom)); computed_size += 4; // varlena size @@ -1033,7 +1033,7 @@ lwgeom_translate_recursive(char *serialized, PG_FUNCTION_INFO_V1(LWGEOM_summary); Datum LWGEOM_summary(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *result; text *mytext; @@ -1177,7 +1177,7 @@ lwgeom_nrings_recursive(char *serialized) PG_FUNCTION_INFO_V1(LWGEOM_npoints); Datum LWGEOM_npoints(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 npoints = 0; npoints = lwgeom_npoints(SERIALIZED_FORM(geom)); @@ -1189,7 +1189,7 @@ Datum LWGEOM_npoints(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_nrings); Datum LWGEOM_nrings(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 nrings = 0; nrings = lwgeom_nrings_recursive(SERIALIZED_FORM(geom)); @@ -1204,7 +1204,7 @@ Datum LWGEOM_nrings(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_area_polygon); Datum LWGEOM_area_polygon(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWPOLY *poly; double area = 0.0; @@ -1233,7 +1233,7 @@ Datum LWGEOM_area_polygon(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_length2d_linestring); Datum LWGEOM_length2d_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWLINE *line; double dist = 0.0; @@ -1262,7 +1262,7 @@ Datum LWGEOM_length2d_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_length_linestring); Datum LWGEOM_length_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWLINE *line; double dist = 0.0; @@ -1288,7 +1288,7 @@ Datum LWGEOM_length_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_perimeter_poly); Datum LWGEOM_perimeter_poly(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); double ret = 0.0; int i; @@ -1314,7 +1314,7 @@ Datum LWGEOM_perimeter_poly(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_perimeter2d_poly); Datum LWGEOM_perimeter2d_poly(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); double ret = 0.0; int i; @@ -1795,15 +1795,15 @@ elog(NOTICE, " elem %d size: %d (tot: %d)", i, size, totsize); PG_FUNCTION_INFO_V1(LWGEOM_force_2d); Datum LWGEOM_force_2d(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int32 size = 0; // already 2d if ( lwgeom_ndims(geom->type) == 2 ) PG_RETURN_POINTER(geom); // allocate a larger for safety and simplicity - result = (LWGEOM *) palloc(geom->size); + result = (PG_LWGEOM *) palloc(geom->size); lwgeom_force2d_recursive(SERIALIZED_FORM(geom), SERIALIZED_FORM(result), &size); @@ -1821,8 +1821,8 @@ Datum LWGEOM_force_2d(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_force_3d); Datum LWGEOM_force_3d(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int olddims; int32 size = 0; @@ -1832,10 +1832,10 @@ Datum LWGEOM_force_3d(PG_FUNCTION_ARGS) if ( olddims == 3 ) PG_RETURN_POINTER(geom); if ( olddims > 3 ) { - result = (LWGEOM *) palloc(geom->size); + result = (PG_LWGEOM *) palloc(geom->size); } else { // allocate double as memory a larger for safety - result = (LWGEOM *) palloc(geom->size*1.5); + result = (PG_LWGEOM *) palloc(geom->size*1.5); } lwgeom_force3d_recursive(SERIALIZED_FORM(geom), @@ -1854,8 +1854,8 @@ Datum LWGEOM_force_3d(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_force_4d); Datum LWGEOM_force_4d(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int olddims; int32 size = 0; @@ -1865,7 +1865,7 @@ Datum LWGEOM_force_4d(PG_FUNCTION_ARGS) if ( olddims == 4 ) PG_RETURN_POINTER(geom); // allocate double as memory a larger for safety - result = (LWGEOM *) palloc(geom->size*2); + result = (PG_LWGEOM *) palloc(geom->size*2); lwgeom_force4d_recursive(SERIALIZED_FORM(geom), SERIALIZED_FORM(result), &size); @@ -1883,8 +1883,8 @@ Datum LWGEOM_force_4d(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_force_collection); Datum LWGEOM_force_collection(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int oldtype; int32 size = 0; char *iptr, *optr; @@ -1898,7 +1898,7 @@ Datum LWGEOM_force_collection(PG_FUNCTION_ARGS) // alread a multi*, just make it a collection if ( oldtype > 3 ) { - result = (LWGEOM *)palloc(geom->size); + result = (PG_LWGEOM *)palloc(geom->size); result->size = geom->size; result->type = TYPE_SETTYPE(geom->type, COLLECTIONTYPE); memcpy(result->data, geom->data, geom->size-5); @@ -1910,7 +1910,7 @@ Datum LWGEOM_force_collection(PG_FUNCTION_ARGS) size = geom->size+5; // 4 for numgeoms, 1 for type - result = (LWGEOM *)palloc(size); // 4 for numgeoms, 1 for type + result = (PG_LWGEOM *)palloc(size); // 4 for numgeoms, 1 for type result->size = size; result->type = TYPE_SETTYPE(geom->type, COLLECTIONTYPE); @@ -1957,8 +1957,8 @@ Datum LWGEOM_force_collection(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_force_multi); Datum LWGEOM_force_multi(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int oldtype, newtype; int32 size = 0; char *iptr, *optr; @@ -1976,7 +1976,7 @@ Datum LWGEOM_force_multi(PG_FUNCTION_ARGS) size = geom->size+5; // 4 for numgeoms, 1 for type - result = (LWGEOM *)palloc(size); // 4 for numgeoms, 1 for type + result = (PG_LWGEOM *)palloc(size); // 4 for numgeoms, 1 for type result->size = size; result->type = TYPE_SETTYPE(geom->type, newtype); @@ -2023,16 +2023,16 @@ Datum LWGEOM_force_multi(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_mindistance2d); Datum LWGEOM_mindistance2d(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; double mindist; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); if (lwgeom_getSRID(geom1) != lwgeom_getSRID(geom2)) { @@ -2058,8 +2058,8 @@ PG_FUNCTION_INFO_V1(LWGEOM_maxdistance2d_linestring); Datum LWGEOM_maxdistance2d_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; LWLINE *line1; LWLINE *line2; double maxdist = 0; @@ -2068,11 +2068,11 @@ Datum LWGEOM_maxdistance2d_linestring(PG_FUNCTION_ARGS) elog(ERROR, "This function is unimplemented yet"); PG_RETURN_NULL(); - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); line1 = lwline_deserialize(SERIALIZED_FORM(geom1)); if ( line1 == NULL ) PG_RETURN_NULL(); // not a linestring - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); line2 = lwline_deserialize(SERIALIZED_FORM(geom2)); if ( line2 == NULL ) PG_RETURN_NULL(); // not a linestring @@ -2097,7 +2097,7 @@ Datum LWGEOM_maxdistance2d_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_translate); Datum LWGEOM_translate(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); double xoff = PG_GETARG_FLOAT8(1); double yoff = PG_GETARG_FLOAT8(2); double zoff = PG_GETARG_FLOAT8(3); @@ -2110,14 +2110,14 @@ Datum LWGEOM_translate(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_inside_circle_point); Datum LWGEOM_inside_circle_point(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; double cx = PG_GETARG_FLOAT8(1); double cy = PG_GETARG_FLOAT8(2); double rr = PG_GETARG_FLOAT8(3); LWPOINT *point; POINT2D *pt; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); point = lwpoint_deserialize(SERIALIZED_FORM(geom)); if ( point == NULL ) PG_RETURN_NULL(); // not a point @@ -2174,7 +2174,7 @@ Datum LWGEOM_collect(PG_FUNCTION_ARGS) { Pointer geom1_ptr = PG_GETARG_POINTER(0); Pointer geom2_ptr = PG_GETARG_POINTER(1); - LWGEOM *geom1, *geom2, *result; + PG_LWGEOM *geom1, *geom2, *result; LWGEOM_EXPLODED *exp1, *exp2, *expcoll; char *serialized_result; int wantbbox = 0; @@ -2189,19 +2189,19 @@ Datum LWGEOM_collect(PG_FUNCTION_ARGS) // return a copy of the second geom if only first geom is null if (geom1_ptr == NULL) { - geom2 = (LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(1)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(1)); PG_RETURN_POINTER(geom2); } // return a copy of the first geom if only second geom is null if (geom2_ptr == NULL) { - geom1 = (LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); PG_RETURN_POINTER(geom1); } - geom1 = (LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(1)); if ( lwgeom_getSRID(geom1) != lwgeom_getSRID(geom2) ) { @@ -2259,10 +2259,10 @@ Datum LWGEOM_collect(PG_FUNCTION_ARGS) elog(NOTICE, "Serialized lwexploded"); #endif - // And create LWGEOM type (could provide a _buf version of + // And create PG_LWGEOM type (could provide a _buf version of // the serializer instead) //size = lwgeom_size(serialized_result); - result = LWGEOM_construct(serialized_result, + result = PG_LWGEOM_construct(serialized_result, lwgeom_getsrid(serialized_result), wantbbox); pfree(serialized_result); @@ -2290,7 +2290,7 @@ Datum LWGEOM_accum(PG_FUNCTION_ARGS) ArrayType *array; int nelems, nbytes; Datum datum; - LWGEOM *geom; + PG_LWGEOM *geom; ArrayType *result; Pointer **pointers; MemoryContext oldcontext; @@ -2324,7 +2324,7 @@ Datum LWGEOM_accum(PG_FUNCTION_ARGS) oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt); /* Make a DETOASTED copy of input geometry */ - geom = (LWGEOM *)PG_DETOAST_DATUM_COPY(datum); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM_COPY(datum); //elog(NOTICE, "geom_accum: adding %p (nelems=%d)", geom, nelems); @@ -2373,8 +2373,8 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS) Datum datum; ArrayType *array; int nelems, srid=-1; - LWGEOM **geoms; - LWGEOM *result=NULL, *geom; + PG_LWGEOM **geoms; + PG_LWGEOM *result=NULL, *geom; LWGEOM_EXPLODED *exploded=NULL; int i; int wantbbox = 0; // don't compute a bounding box... @@ -2407,7 +2407,7 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS) } /* Get pointer to GEOMETRY pointers array */ - geoms = (LWGEOM **)ARR_DATA_PTR(array); + geoms = (PG_LWGEOM **)ARR_DATA_PTR(array); /* Return the only present element of a 1-element array */ if ( nelems == 1 ) PG_RETURN_POINTER(geoms[0]); @@ -2494,10 +2494,10 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS) // now we could release all memory associated with geometries // in the array.... TODO. - // Create LWGEOM type (could provide a _buf version of + // Create PG_LWGEOM type (could provide a _buf version of // the serializer instead) //size = lwgeom_size(serialized_result); - result = LWGEOM_construct(serialized_result, + result = PG_LWGEOM_construct(serialized_result, lwgeom_getsrid(serialized_result), wantbbox); pfree(serialized_result); @@ -2510,14 +2510,14 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_expand); Datum LWGEOM_expand(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); double d = PG_GETARG_FLOAT8(1); BOX2DFLOAT4 box; POINT2D *pts = palloc(sizeof(POINT2D)*5); POINTARRAY *pa[1]; LWPOLY *poly; int SRID; - LWGEOM *result; + PG_LWGEOM *result; char *ser; // get geometry box @@ -2552,8 +2552,8 @@ Datum LWGEOM_expand(PG_FUNCTION_ARGS) // Serialize polygon ser = lwpoly_serialize(poly); - // Construct LWGEOM - result = LWGEOM_construct(ser, SRID, lwgeom_hasBBOX(geom->type)); + // Construct PG_LWGEOM + result = PG_LWGEOM_construct(ser, SRID, lwgeom_hasBBOX(geom->type)); PG_RETURN_POINTER(result); } @@ -2562,7 +2562,7 @@ Datum LWGEOM_expand(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_to_BOX); Datum LWGEOM_to_BOX(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX2DFLOAT4 box2d; BOX *result = (BOX *)palloc(sizeof(BOX)); @@ -2581,13 +2581,13 @@ Datum LWGEOM_to_BOX(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_envelope); Datum LWGEOM_envelope(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); BOX2DFLOAT4 box; POINT2D *pts = palloc(sizeof(POINT2D)*5); POINTARRAY *pa[1]; LWPOLY *poly; int SRID; - LWGEOM *result; + PG_LWGEOM *result; char *ser; // get bounding box @@ -2619,8 +2619,8 @@ Datum LWGEOM_envelope(PG_FUNCTION_ARGS) // Serialize polygon ser = lwpoly_serialize(poly); - // Construct LWGEOM - result = LWGEOM_construct(ser, SRID, lwgeom_hasBBOX(geom->type)); + // Construct PG_LWGEOM + result = PG_LWGEOM_construct(ser, SRID, lwgeom_hasBBOX(geom->type)); PG_RETURN_POINTER(result); } @@ -2628,7 +2628,7 @@ Datum LWGEOM_envelope(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_isempty); Datum LWGEOM_isempty(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if ( lwgeom_getnumgeometries(SERIALIZED_FORM(geom)) == 0 ) PG_RETURN_BOOL(TRUE); @@ -2641,14 +2641,14 @@ Datum centroid(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(centroid); Datum centroid(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int type = lwgeom_getType(geom->type); int ndims = lwgeom_ndims(geom->type); int SRID = lwgeom_getSRID(geom); LWGEOM_EXPLODED *exp = lwgeom_explode(SERIALIZED_FORM(geom)); LWPOLY *poly; LWPOINT *point; - LWGEOM *result; + PG_LWGEOM *result; POINTARRAY *ring, *pa; POINT3D *p, cent; int i,j,k; @@ -2697,8 +2697,8 @@ Datum centroid(PG_FUNCTION_ARGS) pfree_point(point); pfree_POINTARRAY(pa); - // Construct output LWGEOM - result = LWGEOM_construct(srl, poly->SRID, wantbbox); + // Construct output PG_LWGEOM + result = PG_LWGEOM_construct(srl, poly->SRID, wantbbox); PG_RETURN_POINTER(result); } @@ -2777,9 +2777,9 @@ segmentize2d_ptarray(POINTARRAY *ipa, double dist) PG_FUNCTION_INFO_V1(LWGEOM_segmentize2d); Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); double dist = PG_GETARG_FLOAT8(1); - LWGEOM *result = NULL; + PG_LWGEOM *result = NULL; int type = lwgeom_getType(geom->type); LWGEOM_EXPLODED *exp; int i, j; @@ -2810,7 +2810,7 @@ Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS) pfree_exploded(exp); // Construct return value - result = LWGEOM_construct(srl, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(srl, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); PG_RETURN_POINTER(result); @@ -2820,14 +2820,14 @@ Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_reverse); Datum LWGEOM_reverse(PG_FUNCTION_ARGS) { - LWGEOM *geom; - LWGEOM *result = NULL; + PG_LWGEOM *geom; + PG_LWGEOM *result = NULL; LWGEOM_EXPLODED *exp; int size; int wantbbox; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if ( lwgeom_getType(geom->type) == COLLECTIONTYPE ) { @@ -2872,14 +2872,14 @@ Datum LWGEOM_reverse(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_forceRHR_poly); Datum LWGEOM_forceRHR_poly(PG_FUNCTION_ARGS) { - LWGEOM *geom; - LWGEOM *result = NULL; + PG_LWGEOM *geom; + PG_LWGEOM *result = NULL; LWGEOM_EXPLODED *exp; int size; int wantbbox; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if ( lwgeom_getType(geom->type) != POLYGONTYPE && lwgeom_getType(geom->type) != MULTIPOLYGONTYPE ) diff --git a/lwgeom/lwgeom_geos.c b/lwgeom/lwgeom_geos.c index 70fd7b4dd..cce20d8f9 100644 --- a/lwgeom/lwgeom_geos.c +++ b/lwgeom/lwgeom_geos.c @@ -100,9 +100,9 @@ extern Geometry *PostGIS2GEOS_multipoint(LWPOINT *const *const geoms, uint32 nge extern Geometry *PostGIS2GEOS_collection(Geometry **geoms, int ngeoms, int SRID, bool is3d); void NOTICE_MESSAGE(char *msg); -LWGEOM *GEOS2POSTGIS(Geometry *geom, char want3d); -Geometry * POSTGIS2GEOS(LWGEOM *g); -void errorIfGeometryCollection(LWGEOM *g1, LWGEOM *g2); +PG_LWGEOM *GEOS2POSTGIS(Geometry *geom, char want3d); +Geometry * POSTGIS2GEOS(PG_LWGEOM *g); +void errorIfGeometryCollection(PG_LWGEOM *g1, PG_LWGEOM *g2); char *PointFromGeometry(Geometry *g, char want3d); char *LineFromGeometry(Geometry *g, char want3d); char *PolyFromGeometry(Geometry *g, char want3d); @@ -144,7 +144,7 @@ Datum unite_garray(PG_FUNCTION_ARGS) ArrayType *array; int is3d = 0; int nelems, i; - LWGEOM **geoms, *result, *pgis_geom; + PG_LWGEOM **geoms, *result, *pgis_geom; Geometry *g1, *g2, *geos_result; #ifdef DEBUG static int call=1; @@ -169,7 +169,7 @@ Datum unite_garray(PG_FUNCTION_ARGS) if ( nelems == 0 ) PG_RETURN_NULL(); - geoms = (LWGEOM **)ARR_DATA_PTR(array); + geoms = (PG_LWGEOM **)ARR_DATA_PTR(array); /* One-element union is the element itself */ if ( nelems == 1 ) PG_RETURN_POINTER(geoms[0]); @@ -228,18 +228,18 @@ Datum unite_garray(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(geomunion); Datum geomunion(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; int is3d; Geometry *g1,*g2,*g3; - LWGEOM *result; + PG_LWGEOM *result; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); is3d = ( lwgeom_ndims(geom1->type) > 2 ) || ( lwgeom_ndims(geom2->type) > 2 ); @@ -320,18 +320,18 @@ Datum geomunion(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(symdifference); Datum symdifference(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2,*g3; - LWGEOM *result; + PG_LWGEOM *result; int is3d; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); is3d = ( lwgeom_ndims(geom1->type) > 2 ) || ( lwgeom_ndims(geom2->type) > 2 ); @@ -407,15 +407,15 @@ Datum symdifference(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(boundary); Datum boundary(PG_FUNCTION_ARGS) { - LWGEOM *geom1; + PG_LWGEOM *geom1; Geometry *g1,*g3; - LWGEOM *result; + PG_LWGEOM *result; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); @@ -479,15 +479,15 @@ Datum boundary(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(convexhull); Datum convexhull(PG_FUNCTION_ARGS) { - LWGEOM *geom1; + PG_LWGEOM *geom1; Geometry *g1,*g3; - LWGEOM *result; + PG_LWGEOM *result; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); @@ -543,16 +543,16 @@ Datum convexhull(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(buffer); Datum buffer(PG_FUNCTION_ARGS) { - LWGEOM *geom1; + PG_LWGEOM *geom1; double size; Geometry *g1,*g3; - LWGEOM *result; + PG_LWGEOM *result; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); size = PG_GETARG_FLOAT8(1); initGEOS(MAXIMUM_ALIGNOF); @@ -614,18 +614,18 @@ Datum buffer(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(intersection); Datum intersection(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2,*g3; - LWGEOM *result; + PG_LWGEOM *result; int is3d; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); is3d = ( lwgeom_ndims(geom1->type) > 2 ) || ( lwgeom_ndims(geom2->type) > 2 ); @@ -721,18 +721,18 @@ Datum intersection(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(difference); Datum difference(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2,*g3; - LWGEOM *result; + PG_LWGEOM *result; int is3d; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); is3d = ( lwgeom_ndims(geom1->type) > 2 ) || ( lwgeom_ndims(geom2->type) > 2 ); @@ -807,15 +807,15 @@ Datum difference(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(pointonsurface); Datum pointonsurface(PG_FUNCTION_ARGS) { - LWGEOM *geom1; + PG_LWGEOM *geom1; Geometry *g1,*g3; - LWGEOM *result; + PG_LWGEOM *result; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); @@ -876,14 +876,14 @@ Datum pointonsurface(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(centroid); Datum centroid(PG_FUNCTION_ARGS) { - LWGEOM *geom, *result; + PG_LWGEOM *geom, *result; Geometry *geosgeom, *geosresult; #ifdef PROFILE profstart(PROF_QRUN); #endif - geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); @@ -941,7 +941,7 @@ Datum centroid(PG_FUNCTION_ARGS) -void errorIfGeometryCollection(LWGEOM *g1, LWGEOM *g2) +void errorIfGeometryCollection(PG_LWGEOM *g1, PG_LWGEOM *g2) { int t1 = lwgeom_getType(g1->type); int t2 = lwgeom_getType(g2->type); @@ -953,7 +953,7 @@ void errorIfGeometryCollection(LWGEOM *g1, LWGEOM *g2) PG_FUNCTION_INFO_V1(isvalid); Datum isvalid(PG_FUNCTION_ARGS) { - LWGEOM *geom1; + PG_LWGEOM *geom1; bool result; Geometry *g1; @@ -961,7 +961,7 @@ Datum isvalid(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); initGEOS(MAXIMUM_ALIGNOF); @@ -998,14 +998,14 @@ Datum isvalid(PG_FUNCTION_ARGS) } -// overlaps(LWGEOM g1,LWGEOM g2) +// overlaps(PG_LWGEOM g1,PG_LWGEOM g2) // returns if GEOS::g1->overlaps(g2) returns true // throws an error (elog(ERROR,...)) if GEOS throws an error PG_FUNCTION_INFO_V1(overlaps); Datum overlaps(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1014,8 +1014,8 @@ Datum overlaps(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1079,8 +1079,8 @@ Datum overlaps(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(contains); Datum contains(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1089,8 +1089,8 @@ Datum contains(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1154,8 +1154,8 @@ Datum contains(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(within); Datum within(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1164,8 +1164,8 @@ Datum within(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1230,8 +1230,8 @@ Datum within(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(crosses); Datum crosses(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1240,8 +1240,8 @@ Datum crosses(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1306,8 +1306,8 @@ Datum crosses(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(intersects); Datum intersects(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1316,8 +1316,8 @@ Datum intersects(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1379,8 +1379,8 @@ Datum intersects(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(touches); Datum touches(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1389,8 +1389,8 @@ Datum touches(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1454,8 +1454,8 @@ Datum touches(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(disjoint); Datum disjoint(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1464,8 +1464,8 @@ Datum disjoint(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1528,8 +1528,8 @@ Datum disjoint(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(relate_pattern); Datum relate_pattern(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; char *patt; bool result; Geometry *g1,*g2; @@ -1538,8 +1538,8 @@ Datum relate_pattern(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1593,8 +1593,8 @@ Datum relate_pattern(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(relate_full); Datum relate_full(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; char *relate_str; int len; @@ -1606,8 +1606,8 @@ Datum relate_full(PG_FUNCTION_ARGS) //elog(NOTICE,"in relate_full()"); - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1687,8 +1687,8 @@ Datum relate_full(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(geomequals); Datum geomequals(PG_FUNCTION_ARGS) { - LWGEOM *geom1; - LWGEOM *geom2; + PG_LWGEOM *geom1; + PG_LWGEOM *geom2; Geometry *g1,*g2; bool result; const BOX2DFLOAT4 *box1, *box2; @@ -1697,8 +1697,8 @@ Datum geomequals(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); errorIfGeometryCollection(geom1,geom2); @@ -1760,7 +1760,7 @@ Datum geomequals(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(issimple); Datum issimple(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; Geometry *g1; int result; @@ -1768,7 +1768,7 @@ Datum issimple(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if (lwgeom_getnumgeometries(SERIALIZED_FORM(geom)) == 0) PG_RETURN_BOOL(true); @@ -1811,7 +1811,7 @@ Datum issimple(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(isring); Datum isring(PG_FUNCTION_ARGS) { - LWGEOM*geom; + PG_LWGEOM*geom; Geometry *g1; int result; @@ -1819,7 +1819,7 @@ Datum isring(PG_FUNCTION_ARGS) profstart(PROF_QRUN); #endif - geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if (lwgeom_getType(geom->type) != LINETYPE) { @@ -2096,10 +2096,10 @@ addToExploded_recursive(Geometry *geom, LWGEOM_EXPLODED *exp) } -LWGEOM * +PG_LWGEOM * GEOS2POSTGIS(Geometry *geom, char want3d) { - LWGEOM *result; + PG_LWGEOM *result; LWGEOM_EXPLODED *oexp; int SRID; int wantbbox = 0; // might as well be 1 ... @@ -2132,7 +2132,7 @@ GEOS2POSTGIS(Geometry *geom, char want3d) //-----=POSTGIS2GEOS= Geometry * -POSTGIS2GEOS(LWGEOM *geom) +POSTGIS2GEOS(PG_LWGEOM *geom) { LWPOINT *point; LWLINE *line; @@ -2227,13 +2227,13 @@ POSTGIS2GEOS(LWGEOM *geom) PG_FUNCTION_INFO_V1(GEOSnoop); Datum GEOSnoop(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; Geometry *geosgeom; - LWGEOM *result; + PG_LWGEOM *result; initGEOS(MAXIMUM_ALIGNOF); - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); #ifdef DEBUG_CONVERTER elog(NOTICE, "GEOSnoop: IN: %s", unparse_WKT((char *)geom, malloc, free)); #endif diff --git a/lwgeom/lwgeom_gml.c b/lwgeom/lwgeom_gml.c index e48374b3f..9ac138d0d 100644 --- a/lwgeom/lwgeom_gml.c +++ b/lwgeom/lwgeom_gml.c @@ -48,7 +48,7 @@ unsigned int precision; PG_FUNCTION_INFO_V1(LWGEOM_asGML); Datum LWGEOM_asGML(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; char *gml; char *result; int len; @@ -59,7 +59,7 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS) if ( PG_ARGISNULL(0) ) PG_RETURN_NULL(); - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); // Get precision (if provided) if ( PG_NARGS() > 1 && ! PG_ARGISNULL(1) ) @@ -513,6 +513,10 @@ getSRSbySRID(int SRID) /********************************************************************** * $Log$ + * Revision 1.3 2004/09/29 06:31:42 strk + * Changed LWGEOM to PG_LWGEOM. + * Changed LWGEOM_construct to PG_LWGEOM_construct. + * * Revision 1.2 2004/09/23 15:09:07 strk * Modified GML output as suggested by Martin Daly. * diff --git a/lwgeom/lwgeom_inout.c b/lwgeom/lwgeom_inout.c index 99a2d1601..9445aa407 100644 --- a/lwgeom/lwgeom_inout.c +++ b/lwgeom/lwgeom_inout.c @@ -62,7 +62,7 @@ typedef struct Well_known_bin { // LWGEOM_in( 'SRID=99;POINT(0 0)') // LWGEOM_in( 'POINT(0 0)') --> assumes SRID=-1 // LWGEOM_in( 'SRID=99;0101000000000000000000F03F000000000000004') -// returns a LWGEOM object +// returns a PG_LWGEOM object PG_FUNCTION_INFO_V1(LWGEOM_in); Datum LWGEOM_in(PG_FUNCTION_ARGS) { @@ -475,8 +475,8 @@ unsigned char parse_hex(char *str) PG_FUNCTION_INFO_V1(LWGEOM_addBBOX); Datum LWGEOM_addBBOX(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; BOX2DFLOAT4 box; unsigned char old_type; int size; diff --git a/lwgeom/lwgeom_ogc.c b/lwgeom/lwgeom_ogc.c index fb52d3c80..23f8eb143 100644 --- a/lwgeom/lwgeom_ogc.c +++ b/lwgeom/lwgeom_ogc.c @@ -72,7 +72,7 @@ char line_is_closed(LWLINE *line); PG_FUNCTION_INFO_V1(LWGEOM_getSRID); Datum LWGEOM_getSRID(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int srid = lwgeom_getSRID (lwgeom); PG_RETURN_INT32(srid); @@ -82,9 +82,9 @@ Datum LWGEOM_getSRID(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_setSRID); Datum LWGEOM_setSRID(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int newSRID = PG_GETARG_INT32(1); - LWGEOM *result; + PG_LWGEOM *result; result = lwgeom_setSRID(lwgeom, newSRID); @@ -95,7 +95,7 @@ Datum LWGEOM_setSRID(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_getTYPE); Datum LWGEOM_getTYPE(PG_FUNCTION_ARGS) { - LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *lwgeom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *text_ob = palloc(20+4); char *result = text_ob+4; int32 size; @@ -177,7 +177,7 @@ lwgeom_numpoints_linestring_recursive(char *serialized) PG_FUNCTION_INFO_V1(LWGEOM_numpoints_linestring); Datum LWGEOM_numpoints_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int32 ret; ret = lwgeom_numpoints_linestring_recursive(SERIALIZED_FORM(geom)); if ( ret == -1 ) PG_RETURN_NULL(); @@ -187,7 +187,7 @@ Datum LWGEOM_numpoints_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_numgeometries_collection); Datum LWGEOM_numgeometries_collection(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int type; char *serialized = SERIALIZED_FORM(geom); @@ -205,8 +205,8 @@ Datum LWGEOM_numgeometries_collection(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_geometryn_collection); Datum LWGEOM_geometryn_collection(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *result; + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *result; int type = lwgeom_getType(geom->type); int32 idx; char *serialized; @@ -231,10 +231,10 @@ Datum LWGEOM_geometryn_collection(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - // we have it, not it's time to make an LWGEOM + // we have it, not it's time to make an PG_LWGEOM // Here is the actual of the line - result = LWGEOM_construct(subgeom, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); + result = PG_LWGEOM_construct(subgeom, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); //elog(NOTICE, "geomtryN about to return"); PG_RETURN_POINTER(result); @@ -287,7 +287,7 @@ lwgeom_dimension_recursive(char *serialized) PG_FUNCTION_INFO_V1(LWGEOM_dimension); Datum LWGEOM_dimension(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); int dimension; dimension = lwgeom_dimension_recursive(SERIALIZED_FORM(geom)); @@ -307,13 +307,13 @@ Datum LWGEOM_dimension(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_exteriorring_polygon); Datum LWGEOM_exteriorring_polygon(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWPOLY *poly = NULL; POINTARRAY *extring; LWLINE *line; char *serializedline; - LWGEOM *result; + PG_LWGEOM *result; int i; for (i=0; ingeometries; i++) @@ -334,7 +334,7 @@ Datum LWGEOM_exteriorring_polygon(PG_FUNCTION_ARGS) serializedline = lwline_serialize(line); // And we construct the line (copy again) - result = LWGEOM_construct(serializedline, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(serializedline, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); pfree(serializedline); @@ -349,7 +349,7 @@ Datum LWGEOM_exteriorring_polygon(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_numinteriorrings_polygon); Datum LWGEOM_numinteriorrings_polygon(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWPOLY *poly = NULL; int32 result; @@ -375,21 +375,21 @@ Datum LWGEOM_numinteriorrings_polygon(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_interiorringn_polygon); Datum LWGEOM_interiorringn_polygon(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; int32 wanted_index; LWGEOM_INSPECTED *inspected; LWPOLY *poly = NULL; POINTARRAY *ring; LWLINE *line; char *serializedline; - LWGEOM *result; + PG_LWGEOM *result; int i; wanted_index = PG_GETARG_INT32(1); if ( wanted_index < 0 ) PG_RETURN_NULL(); // index out of range - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -417,7 +417,7 @@ Datum LWGEOM_interiorringn_polygon(PG_FUNCTION_ARGS) serializedline = lwline_serialize(line); // And we construct the line (copy again) - result = LWGEOM_construct(serializedline, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(serializedline, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); pfree(serializedline); @@ -432,21 +432,21 @@ Datum LWGEOM_interiorringn_polygon(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_pointn_linestring); Datum LWGEOM_pointn_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; int32 wanted_index; LWGEOM_INSPECTED *inspected; LWLINE *line = NULL; POINTARRAY *pts; LWPOINT *point; char *serializedpoint; - LWGEOM *result; + PG_LWGEOM *result; int i; wanted_index = PG_GETARG_INT32(1); if ( wanted_index < 0 ) PG_RETURN_NULL(); // index out of range - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -477,7 +477,7 @@ Datum LWGEOM_pointn_linestring(PG_FUNCTION_ARGS) serializedpoint = lwpoint_serialize(point); // And we construct the line (copy again) - result = LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); pfree(point); @@ -491,13 +491,13 @@ Datum LWGEOM_pointn_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_x_point); Datum LWGEOM_x_point(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWPOINT *point = NULL; POINT3D *p; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -520,13 +520,13 @@ Datum LWGEOM_x_point(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_y_point); Datum LWGEOM_y_point(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWPOINT *point = NULL; POINT3D *p; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -550,13 +550,13 @@ Datum LWGEOM_y_point(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_z_point); Datum LWGEOM_z_point(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWPOINT *point = NULL; POINT3D *p; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); // if there's no Z return 0 if ( lwgeom_ndims(geom->type) < 3 ) PG_RETURN_FLOAT8(0.0); @@ -584,16 +584,16 @@ Datum LWGEOM_z_point(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_startpoint_linestring); Datum LWGEOM_startpoint_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWLINE *line = NULL; POINTARRAY *pts; LWPOINT *point; char *serializedpoint; - LWGEOM *result; + PG_LWGEOM *result; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -619,7 +619,7 @@ Datum LWGEOM_startpoint_linestring(PG_FUNCTION_ARGS) serializedpoint = lwpoint_serialize(point); // And we construct the line (copy again) - result = LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); pfree(point); @@ -634,16 +634,16 @@ Datum LWGEOM_startpoint_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_endpoint_linestring); Datum LWGEOM_endpoint_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWLINE *line = NULL; POINTARRAY *pts; LWPOINT *point; char *serializedpoint; - LWGEOM *result; + PG_LWGEOM *result; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) @@ -670,7 +670,7 @@ Datum LWGEOM_endpoint_linestring(PG_FUNCTION_ARGS) serializedpoint = lwpoint_serialize(point); // And we construct the line (copy again) - result = LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), + result = PG_LWGEOM_construct(serializedpoint, lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type)); pfree(point); @@ -684,9 +684,9 @@ Datum LWGEOM_endpoint_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_from_text); Datum LWGEOM_from_text(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0)); int32 SRID; - LWGEOM *result = NULL; + PG_LWGEOM *result = NULL; // read user-requested SRID if any if ( PG_NARGS() > 1 ) @@ -753,13 +753,13 @@ char line_is_closed(LWLINE *line) PG_FUNCTION_INFO_V1(LWGEOM_isclosed_linestring); Datum LWGEOM_isclosed_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; LWGEOM_INSPECTED *inspected; LWLINE *line = NULL; int linesfound=0; int i; - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); for (i=0; ingeometries; i++) diff --git a/lwgeom/lwgeom_spheroid.c b/lwgeom/lwgeom_spheroid.c index 261a49fae..fe33a7438 100644 --- a/lwgeom/lwgeom_spheroid.c +++ b/lwgeom/lwgeom_spheroid.c @@ -333,7 +333,7 @@ double lwgeom_pointarray_length2d_ellipse(POINTARRAY *pts, SPHEROID *sphere) PG_FUNCTION_INFO_V1(LWGEOM_length2d_ellipsoid_linestring); Datum LWGEOM_length2d_ellipsoid_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(1); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWLINE *line; @@ -366,7 +366,7 @@ Datum LWGEOM_length2d_ellipsoid_linestring(PG_FUNCTION_ARGS) PG_FUNCTION_INFO_V1(LWGEOM_length_ellipsoid_linestring); Datum LWGEOM_length_ellipsoid_linestring(PG_FUNCTION_ARGS) { - LWGEOM *geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); SPHEROID *sphere = (SPHEROID *) PG_GETARG_POINTER(1); LWGEOM_INSPECTED *inspected = lwgeom_inspect(SERIALIZED_FORM(geom)); LWLINE *line; @@ -483,8 +483,8 @@ PG_FUNCTION_INFO_V1(distance_ellipsoid); Datum LWGEOM_distance_ellipsoid_point(PG_FUNCTION_ARGS) { SPHEROID *sphere = (SPHEROID *)PG_GETARG_POINTER(2); - LWGEOM *geom1 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); - LWGEOM *geom2 = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); + PG_LWGEOM *geom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + PG_LWGEOM *geom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1)); LWPOINT *point1, *point2; POINT2D *p1, *p2; diff --git a/lwgeom/lwgeom_svg.c b/lwgeom/lwgeom_svg.c index 9c300ca72..b6a4f1a23 100644 --- a/lwgeom/lwgeom_svg.c +++ b/lwgeom/lwgeom_svg.c @@ -21,7 +21,7 @@ #include "lwgeom.h" Datum assvg_geometry(PG_FUNCTION_ARGS); -char *geometry_to_svg(LWGEOM *geometry, int svgrel, int precision); +char *geometry_to_svg(PG_LWGEOM *geometry, int svgrel, int precision); void print_svg_coords(char *result, POINT2D *pt, int precision); void print_svg_circle(char *result, POINT2D *pt, int precision); void print_svg_path_abs(char *result, POINTARRAY *pa, int precision); @@ -36,7 +36,7 @@ void print_svg_path_rel(char *result, POINTARRAY *pa, int precision); PG_FUNCTION_INFO_V1(assvg_geometry); Datum assvg_geometry(PG_FUNCTION_ARGS) { - LWGEOM *geom; + PG_LWGEOM *geom; char *svg; char *result; int len; @@ -45,7 +45,7 @@ Datum assvg_geometry(PG_FUNCTION_ARGS) if ( PG_ARGISNULL(0) ) PG_RETURN_NULL(); - geom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); // check for relative path notation if ( PG_NARGS() > 1 && ! PG_ARGISNULL(1) ) @@ -71,7 +71,7 @@ Datum assvg_geometry(PG_FUNCTION_ARGS) //takes a GEOMETRY and returns a SVG representation -char *geometry_to_svg(LWGEOM *geometry, int svgrel, int precision) +char *geometry_to_svg(PG_LWGEOM *geometry, int svgrel, int precision) { char *result; LWGEOM_INSPECTED *inspected; @@ -251,6 +251,10 @@ print_svg_path_rel(char *result, POINTARRAY *pa, int precision) /********************************************************************** * $Log$ + * Revision 1.2 2004/09/29 06:31:42 strk + * Changed LWGEOM to PG_LWGEOM. + * Changed LWGEOM_construct to PG_LWGEOM_construct. + * * Revision 1.1 2004/09/13 13:32:01 strk * Added AsSVG(). * diff --git a/lwgeom/lwgeom_transform.c b/lwgeom/lwgeom_transform.c index f254b8ca3..78443ee39 100644 --- a/lwgeom/lwgeom_transform.c +++ b/lwgeom/lwgeom_transform.c @@ -239,8 +239,8 @@ lwgeom_transform_recursive(char *geom, PJ *inpj, PJ *outpj) PG_FUNCTION_INFO_V1(transform_geom); Datum transform_geom(PG_FUNCTION_ARGS) { - LWGEOM *geom; - LWGEOM *result=NULL; + PG_LWGEOM *geom; + PG_LWGEOM *result=NULL; PJ *input_pj,*output_pj; char *input_proj4, *output_proj4; text *input_proj4_text; @@ -254,7 +254,7 @@ Datum transform_geom(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); + geom = (PG_LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); if (lwgeom_getSRID(geom) == -1) { PG_FREE_IF_COPY(geom, 0);