Obsoleted getbox2d(). Use getbox2d_p() or getbox2d_internal() instead.

git-svn-id: http://svn.osgeo.org/postgis/trunk@1041 b70326c6-7e19-0410-871a-916f4a2858ee
This commit is contained in:
Sandro Santilli 2004-10-25 17:07:09 +00:00
parent a80935a9bf
commit 2f9b40db22
4 changed files with 75 additions and 29 deletions

View file

@ -704,7 +704,8 @@ extern BOX3D *combine_boxes(BOX3D *b1, BOX3D *b2);
// if this has a pre-built BOX2d, then we use it,
// otherwise we need to compute it.
// WARNING! the EMPTY geom will result in a random BOX2D returned
extern BOX2DFLOAT4 getbox2d(char *serialized_form);
// OBSOLETED for this reason
//extern BOX2DFLOAT4 getbox2d(char *serialized_form);
// Returns a pointer to the BBOX internal to the serialized form.
// READ-ONLY!

View file

@ -312,8 +312,9 @@ BOX3D *combine_boxes(BOX3D *b1, BOX3D *b2)
// returns a real entity so it doesnt leak
// if this has a pre-built BOX2d, then we use it,
// otherwise we need to compute it.
// OBSOLETED!
BOX2DFLOAT4
getbox2d(char *serialized_form)
__getbox2d(char *serialized_form)
{
int type = (unsigned char) serialized_form[0];
char *loc;

View file

@ -10,7 +10,11 @@
*
**********************************************************************
* $Log$
* Revision 1.10 2004/10/25 17:07:09 strk
* Obsoleted getbox2d(). Use getbox2d_p() or getbox2d_internal() instead.
*
* Revision 1.9 2004/10/08 13:20:54 strk
*
* Changed LWGEOM structure to point to an actual BOX2DFLOAT4.
* Renamed most function to reflect a TYPE_method naming convention.
* (you'll need a dump/reload for it to work)
@ -1260,8 +1264,13 @@ Datum LWGEOM_gist_sel(PG_FUNCTION_ARGS)
*/
in = (char *)PG_DETOAST_DATUM( ((Const*)other)->constvalue );
//search_box = convert_box3d_to_box(&in->bvol);
search_box = getbox2d(in+4);
if ( ! getbox2d_p(in+4, &search_box) )
{
#if DEBUG_GEOMETRY_STATS
elog(NOTICE, "search box is EMPTY");
#endif
PG_RETURN_FLOAT8(0.0);
}
#if DEBUG_GEOMETRY_STATS > 1
elog(NOTICE," requested search box is : %.15g %.15g, %.15g %.15g",search_box->xmin,search_box->ymin,search_box->xmax,search_box->ymax);
@ -1425,7 +1434,14 @@ compute_geometry_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc,
geom = (char *) PG_DETOAST_DATUM(datum);
box = getbox2d(geom+4);
if ( ! getbox2d_p(geom+4, &box) )
{
// Skip empty geometry
#if DEBUG_GEOMETRY_STATS
elog(NOTICE, " skipped empty geometry %d", i);
#endif
continue;
}
/*
* Skip infinite geoms

View file

@ -72,9 +72,14 @@ Datum LWGEOM_overlap(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
// One or both are empty geoms
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_overlap,
@ -105,13 +110,19 @@ Datum LWGEOM_overleft(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_overleft --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_overleft,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -127,14 +138,18 @@ Datum LWGEOM_left(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_left --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_left,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -151,13 +166,18 @@ Datum LWGEOM_right(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_right --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_right,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -174,14 +194,18 @@ Datum LWGEOM_overright(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_overright --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_overright,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -198,13 +222,18 @@ Datum LWGEOM_contained(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_contained --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_contained,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -221,14 +250,18 @@ Datum LWGEOM_contain(PG_FUNCTION_ARGS)
char *lwgeom1 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
char *lwgeom2 = (char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
bool result;
BOX2DFLOAT4 box1 = getbox2d(lwgeom1+4);
BOX2DFLOAT4 box2 = getbox2d(lwgeom2+4);
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
#ifdef DEBUG_CALLS
elog(NOTICE,"GIST: LWGEOM_contain --entry");
#endif
if ( ! (getbox2d_p(lwgeom1+4, &box1) && getbox2d_p(lwgeom2+4, &box2)) )
{
PG_RETURN_BOOL(FALSE);
}
result = DatumGetBool(DirectFunctionCall2(BOX2D_contain,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
@ -383,11 +416,6 @@ Datum LWGEOM_gist_consistent(PG_FUNCTION_ARGS)
if ( ! (DatumGetPointer(entry->key) != NULL && query) )
PG_RETURN_BOOL(FALSE);
//box3d = lw_geom_getBB(query+4);
//thebox = box3d_to_box2df(box3d);
//pfree(box3d);
//convert_box3d_to_box_p( &(query->bvol) , &thebox);
//thebox = getbox2d_cache(query);
getbox2d_p(query+4, &box);
if (GIST_LEAF(entry))