unsigned char type; // encodes ndims, type, bbox presence,
// srid presence
char data[1];
-} LWGEOM;
+} PG_LWGEOM;
/*
* Construct a full LWGEOM type (including size header)
* 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
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
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
typedef struct
{
+ int type; // POLYGONTYPE
int32 SRID;
char ndims;
int nrings;
// 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);
// 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;
// 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))
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
}
-//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));
POINTARRAY *pa[1];
LWPOLY *poly;
int wantbbox = 0;
- LWGEOM *result;
+ PG_LWGEOM *result;
char *ser;
// Assign coordinates to POINT2D array
// 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);
}
POINTARRAY *pa[1];
LWPOLY *poly;
int wantbbox = 0;
- LWGEOM *result;
+ PG_LWGEOM *result;
char *ser;
// Assign coordinates to POINT2D array
// 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);
}
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));
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) )
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));
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
{
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;
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;
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;
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;
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;
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;
/***********************************************************
*
* $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(<geometry>,[<int4>]) funx.
* Added LWGEOM typedef and SERIALIZED_FORM(LWGEOM) macro.
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;
// 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);
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;
int newlinesnum=0;
char **newpolys;
int newpolysnum=0;
- LWGEOM *result;
+ PG_LWGEOM *result;
char *serialized;
// no lines, no points... return input
// copy 2 (see above)
- result = LWGEOM_construct(serialized,
+ result = PG_LWGEOM_construct(serialized,
lwgeom_getSRID(geom), lwgeom_hasBBOX(geom->type));
PG_RETURN_POINTER(result);
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;
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 */
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;
}
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;
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
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;
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));
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));
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;
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;
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;
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;
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;
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);
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;
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),
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;
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);
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;
// 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);
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);
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;
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);
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))
{
Datum LWGEOM_maxdistance2d_linestring(PG_FUNCTION_ARGS)
{
- LWGEOM *geom1;
- LWGEOM *geom2;
+ PG_LWGEOM *geom1;
+ PG_LWGEOM *geom2;
LWLINE *line1;
LWLINE *line2;
double maxdist = 0;
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
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);
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
{
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;
// 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) )
{
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);
ArrayType *array;
int nelems, nbytes;
Datum datum;
- LWGEOM *geom;
+ PG_LWGEOM *geom;
ArrayType *result;
Pointer **pointers;
MemoryContext oldcontext;
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);
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...
}
/* 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]);
// 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);
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
// 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);
}
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));
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
// 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);
}
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);
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;
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);
}
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;
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);
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 )
{
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 )
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);
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;
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]);
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 );
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 );
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);
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);
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);
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 );
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 );
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);
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);
-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);
PG_FUNCTION_INFO_V1(isvalid);
Datum isvalid(PG_FUNCTION_ARGS)
{
- LWGEOM *geom1;
+ PG_LWGEOM *geom1;
bool result;
Geometry *g1;
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);
}
-// 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;
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);
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;
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);
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;
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);
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;
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);
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;
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);
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;
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);
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;
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);
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;
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);
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;
//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);
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;
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);
PG_FUNCTION_INFO_V1(issimple);
Datum issimple(PG_FUNCTION_ARGS)
{
- LWGEOM *geom;
+ PG_LWGEOM *geom;
Geometry *g1;
int result;
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);
PG_FUNCTION_INFO_V1(isring);
Datum isring(PG_FUNCTION_ARGS)
{
- LWGEOM*geom;
+ PG_LWGEOM*geom;
Geometry *g1;
int result;
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)
{
}
-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 ...
//-----=POSTGIS2GEOS=
Geometry *
-POSTGIS2GEOS(LWGEOM *geom)
+POSTGIS2GEOS(PG_LWGEOM *geom)
{
LWPOINT *point;
LWLINE *line;
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
PG_FUNCTION_INFO_V1(LWGEOM_asGML);
Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
{
- LWGEOM *geom;
+ PG_LWGEOM *geom;
char *gml;
char *result;
int len;
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) )
/**********************************************************************
* $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.
*
// 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)
{
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;
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);
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);
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;
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();
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);
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;
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);
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));
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; i<inspected->ngeometries; i++)
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);
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;
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; i<inspected->ngeometries; i++)
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);
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; i<inspected->ngeometries; i++)
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);
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; i<inspected->ngeometries; i++)
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; i<inspected->ngeometries; i++)
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);
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; i<inspected->ngeometries; i++)
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);
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; i<inspected->ngeometries; i++)
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);
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 )
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; i<inspected->ngeometries; i++)
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;
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;
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;
#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);
PG_FUNCTION_INFO_V1(assvg_geometry);
Datum assvg_geometry(PG_FUNCTION_ARGS)
{
- LWGEOM *geom;
+ PG_LWGEOM *geom;
char *svg;
char *result;
int len;
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) )
//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;
/**********************************************************************
* $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().
*
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;
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);