FUNC: KEEPING FUNCTION: [envelope(geometry)]
FUNC: KEEPING FUNCTION: [equals(geometry, geometry)]
-FUNC: KEEPING FUNCTION: [expand(geometry, double precision)]
-FUNC: KEEPING FUNCTION: [expand(box3d, double precision)]
-
FUNC: KEEPING FUNCTION: [isempty(geometry)]
FUNC: KEEPING FUNCTION: [segmentize(geometry, double precision)]
FUNC: KEEPING FUNCTION: [unite_garray(geometry[])]
FNCAST: KEEPING FNCAST geometry(chip) (see CAST)
--- BOX3D
-FUNC: KEEPING FUNCTION: [xmax(box3d)]
-FUNC: KEEPING FUNCTION: [xmin(box3d)]
-FUNC: KEEPING FUNCTION: [ymax(box3d)]
-FUNC: KEEPING FUNCTION: [ymin(box3d)]
-FUNC: KEEPING FUNCTION: [zmax(box3d)]
-FUNC: KEEPING FUNCTION: [zmin(box3d)]
FNCAST: KEEPING FNCAST box3dtobox(box3d) (see CAST)
FNCAST: KEEPING FNCAST geometry(box3d) (see CAST)
FUNC: KEEPING FUNCTION: [box3d(geometry)]
Datum LWGEOM_to_BOX2DFLOAT4(PG_FUNCTION_ARGS);
Datum BOX2DFLOAT4_expand(PG_FUNCTION_ARGS);
Datum BOX2DFLOAT4_to_BOX3D(PG_FUNCTION_ARGS);
+Datum BOX2DFLOAT4_xmin(PG_FUNCTION_ARGS);
+Datum BOX2DFLOAT4_ymin(PG_FUNCTION_ARGS);
+Datum BOX2DFLOAT4_xmax(PG_FUNCTION_ARGS);
+Datum BOX2DFLOAT4_ymax(PG_FUNCTION_ARGS);
PG_RETURN_POINTER(result);
}
+
+PG_FUNCTION_INFO_V1(BOX2DFLOAT4_xmin);
+Datum BOX2DFLOAT4_xmin(PG_FUNCTION_ARGS)
+{
+ BOX2DFLOAT4 *box = (BOX2DFLOAT4 *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT4(box->xmin);
+}
+
+PG_FUNCTION_INFO_V1(BOX2DFLOAT4_ymin);
+Datum BOX2DFLOAT4_ymin(PG_FUNCTION_ARGS)
+{
+ BOX2DFLOAT4 *box = (BOX2DFLOAT4 *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT4(box->ymin);
+}
+
+PG_FUNCTION_INFO_V1(BOX2DFLOAT4_xmax);
+Datum BOX2DFLOAT4_xmax(PG_FUNCTION_ARGS)
+{
+ BOX2DFLOAT4 *box = (BOX2DFLOAT4 *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT4(box->xmax);
+}
+
+PG_FUNCTION_INFO_V1(BOX2DFLOAT4_ymax);
+Datum BOX2DFLOAT4_ymax(PG_FUNCTION_ARGS)
+{
+ BOX2DFLOAT4 *box = (BOX2DFLOAT4 *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT4(box->ymax);
+}
Datum BOX3D_expand(PG_FUNCTION_ARGS);
Datum BOX3D_to_BOX2DFLOAT4(PG_FUNCTION_ARGS);
+Datum BOX3D_xmin(PG_FUNCTION_ARGS);
+Datum BOX3D_ymin(PG_FUNCTION_ARGS);
+Datum BOX3D_zmin(PG_FUNCTION_ARGS);
+Datum BOX3D_xmax(PG_FUNCTION_ARGS);
+Datum BOX3D_ymax(PG_FUNCTION_ARGS);
+Datum BOX3D_zmax(PG_FUNCTION_ARGS);
+
/*
* BOX3D_in - takes a string rep of BOX3D and returns internal rep
*
{
LWGEOM *lwgeom = (LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
BOX2DFLOAT4 box;
- BOX3D *result = palloc(sizeof(BOX3D));
+ BOX3D *result;
- getbox2d_p(SERIALIZED_FORM(lwgeom), &box);
- box2df_to_box3d_p(&box, result);
+ result = lw_geom_getBB(SERIALIZED_FORM(lwgeom));
PG_RETURN_POINTER(result);
}
+
+PG_FUNCTION_INFO_V1(BOX3D_xmin);
+Datum BOX3D_xmin(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->xmin);
+}
+
+PG_FUNCTION_INFO_V1(BOX3D_ymin);
+Datum BOX3D_ymin(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->ymin);
+}
+
+PG_FUNCTION_INFO_V1(BOX3D_zmin);
+Datum BOX3D_zmin(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->zmin);
+}
+
+PG_FUNCTION_INFO_V1(BOX3D_xmax);
+Datum BOX3D_xmax(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->xmax);
+}
+
+PG_FUNCTION_INFO_V1(BOX3D_ymax);
+Datum BOX3D_ymax(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->ymax);
+}
+
+PG_FUNCTION_INFO_V1(BOX3D_zmax);
+Datum BOX3D_zmax(PG_FUNCTION_ARGS)
+{
+ BOX3D *box = (BOX3D *)PG_GETARG_POINTER(0);
+ PG_RETURN_FLOAT8(box->zmax);
+}
output = box3d_out
);
+CREATEFUNCTION xmin(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_xmin'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION ymin(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_ymin'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION zmin(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_zmin'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION xmax(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_xmax'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION ymax(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_ymax'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION zmax(box3d)
+ RETURNS FLOAT8
+ AS '@MODULE_FILENAME@','BOX3D_zmax'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
-----------------------------------------------------------------------
--
-- BOX2D
RESTRICT = contsel, JOIN = contjoinsel
);
+CREATEFUNCTION xmin(box2d)
+ RETURNS FLOAT4
+ AS '@MODULE_FILENAME@','BOX2DFLOAT4_xmin'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION ymin(box2d)
+ RETURNS FLOAT4
+ AS '@MODULE_FILENAME@','BOX2DFLOAT4_ymin'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION xmax(box2d)
+ RETURNS FLOAT4
+ AS '@MODULE_FILENAME@','BOX2DFLOAT4_xmax'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION ymax(box2d)
+ RETURNS FLOAT4
+ AS '@MODULE_FILENAME@','BOX2DFLOAT4_ymax'
+ LANGUAGE 'C' WITH (isstrict,iscachable);
+
-- lwgeom operator support functions
-------------------------------------------------------------------