Changeset: bd16fdf68c26 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bd16fdf68c26
Modified Files:
geom/monetdb5/geom.c
geom/monetdb5/geom.h
geom/monetdb5/geom.mal
geom/monetdb5/geomBulk.c
Branch: sfcgal
Log Message:
Generic bulk function for Dump functions. Add DumPoints bulk version
diffs (175 lines):
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -1919,7 +1919,7 @@ dumpPointsPolygon(BAT *idBAT, BAT *geomB
return MAL_SUCCEED;
}
-static str dumpPointsGeometry(BAT *idBAT, BAT *geomBAT, const GEOSGeometry
*geosGeometry, const char *path);
+static str dumpPointsGeometry_(BAT *idBAT, BAT *geomBAT, const GEOSGeometry
*geosGeometry, const char *path);
static str
dumpPointsMultiGeometry(BAT *idBAT, BAT *geomBAT, const GEOSGeometry
*geosGeometry, const char *path)
{
@@ -1944,7 +1944,7 @@ dumpPointsMultiGeometry(BAT *idBAT, BAT
sprintf(newPath, "%s%u%s", path, lvl, extraStr);
//*secondLevel = 0;
- err = dumpPointsGeometry(idBAT, geomBAT, multiGeometry,
newPath);
+ err = dumpPointsGeometry_(idBAT, geomBAT, multiGeometry,
newPath);
GDKfree(newPath);
if (err != MAL_SUCCEED)
return err;
@@ -1954,7 +1954,7 @@ dumpPointsMultiGeometry(BAT *idBAT, BAT
}
static str
-dumpPointsGeometry(BAT *idBAT, BAT *geomBAT, const GEOSGeometry *geosGeometry,
const char *path)
+dumpPointsGeometry_(BAT *idBAT, BAT *geomBAT, const GEOSGeometry
*geosGeometry, const char *path)
{
int geometryType = GEOSGeomTypeId(geosGeometry) + 1;
unsigned int lvl = 0;
@@ -1978,6 +1978,11 @@ dumpPointsGeometry(BAT *idBAT, BAT *geom
}
}
+str
+dumpPointsGeometry(BAT *idBAT, BAT *geomBAT, const GEOSGeometry *geosGeometry,
const char *path) {
+ return dumpPointsGeometry_(idBAT, geomBAT, geosGeometry, path);
+}
+
static str
wkbDumpPoints_(bat *parentBAT_id, bat *idBAT_id, bat *geomBAT_id, wkb
**geomWKB, int *parent)
{
@@ -2058,7 +2063,7 @@ wkbDumpPoints_(bat *parentBAT_id, bat *i
}
}
- if ( (err = dumpPointsGeometry(idBAT, geomBAT, geosGeometry, "")) !=
MAL_SUCCEED )
+ if ( (err = dumpPointsGeometry_(idBAT, geomBAT, geosGeometry, "")) !=
MAL_SUCCEED )
{
BBPunfix(idBAT->batCacheid);
BBPunfix(geomBAT->batCacheid);
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -268,9 +268,12 @@ geom_export str wkbDump_bat(bat* idBAT_i
geom_export str wkbDumpP(bat* partentBAT_id, bat* idBAT_id, bat* geomBAT_id,
wkb**, int* parent);
geom_export str wkbDumpP_bat(bat* partentBAT_id, bat* idBAT_id, bat*
geomBAT_id, bat* wkbBAT_id, bat *parent);
geom_export str wkbDumpPoints(bat* idBAT_id, bat* geomBAT_id, wkb**);
+geom_export str wkbDumpPoints_bat(bat* idBAT_id, bat* geomBAT_id, bat*
wkbBAT_id);
geom_export str wkbDumpPointsP(bat* partentBAT_id, bat* idBAT_id, bat*
geomBAT_id, wkb**, int* parent);
+geom_export str wkbDumpPointsP_bat(bat* partentBAT_id, bat* idBAT_id, bat*
geomBAT_id, bat* wkbBAT_id, bat *parent);
geom_export str wkbDumpRings(bat* geomBAT_id, wkb**);
geom_export str dumpGeometriesGeometry(BAT *idBAT, BAT *geomBAT, const
GEOSGeometry *geosGeometry, const char *path);
+geom_export str dumpPointsGeometry(BAT *idBAT, BAT *geomBAT, const
GEOSGeometry *geosGeometry, const char *path);
geom_export str wkbPolygonize(wkb **res, wkb **geom);
geom_export str wkbsubPolygonize(bat *outBAT_id, bat* bBAT_id, bat *gBAT_id,
bat *eBAT_id, bit* flag);
geom_export str wkbSimplify(wkb **res, wkb **geom, float *tolerance);
diff --git a/geom/monetdb5/geom.mal b/geom/monetdb5/geom.mal
--- a/geom/monetdb5/geom.mal
+++ b/geom/monetdb5/geom.mal
@@ -839,6 +839,11 @@ comment "Gets a MultiPolygon and returns
command DumpP(a:bat[:wkb], p:bat[:int]) (parent:bat[:int], id:bat[:str],
geom:bat[:wkb]) address wkbDumpP_bat
comment "Gets a MultiPolygon and returns the Polygons in it";
+command DumpPoints(a:bat[:wkb]) (id:bat[:str], geom:bat[:wkb]) address
wkbDumpPoints_bat
+comment "Gets a Geometry and returns the Points in it";
+command DumpPointsP(a:bat[:wkb], p:bat[:int]) (parent:bat[:int], id:bat[:str],
geom:bat[:wkb]) address wkbDumpPointsP_bat
+comment "Gets a Geometry and returns the Points in it";
+
command Boundary(w:bat[:wkb]) :bat[:wkb] address wkbBoundary_bat;
command IsClosed(w:bat[:wkb]) :bat[:bit] address wkbIsClosed_bat;
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -2383,8 +2383,12 @@ wkbDistance_bat_geom(bat *outBAT_id, bat
return wkbDistance_geom_bat(outBAT_id, geomWKB, inBAT_id);
}
+/******************************************************************************************/
+/************************** IN: wkb - OUT: wkbs - flag: parent
****************************/
+/******************************************************************************************/
+
static str
-wkbDump_bat_(bat *parentBAT_id, bat *idBAT_id, bat *geomBAT_id, bat
*inGeomBAT_id, bat *inParentBAT_id)
+WKBtoWKBSflagINT(bat *parentBAT_id, bat *idBAT_id, bat *geomBAT_id, bat
*inGeomBAT_id, bat *inParentBAT_id, str (*func) (BAT*, BAT*, const
GEOSGeometry*, const char*), const char *name)
{
BAT *idBAT = NULL, *geomBAT = NULL, *parentBAT = NULL, *inParentBAT =
NULL, *inGeomBAT = NULL;
BATiter inGeomBAT_iter, inParentBAT_iter;
@@ -2394,12 +2398,12 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
//Open input BATs
if ((inGeomBAT = BATdescriptor(*inGeomBAT_id)) == NULL) {
- throw(MAL, "batgeom.Dump", "Problem retrieving BAT");
+ throw(MAL, name, "Problem retrieving BAT");
}
if (inParentBAT_id) {
if ((inParentBAT = BATdescriptor(*inParentBAT_id)) == NULL) {
BBPunfix(inGeomBAT->batCacheid);
- throw(MAL, "batgeom.Dump", "Problem retrieving BAT");
+ throw(MAL, name, "Problem retrieving BAT");
}
}
@@ -2409,7 +2413,7 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
BBPunfix(inGeomBAT->batCacheid);
if (inParentBAT_id)
BBPunfix(inParentBAT->batCacheid);
- throw(MAL, "geom.Dump", "Error creating new BAT");
+ throw(MAL, name, "Error creating new BAT");
}
if ((geomBAT = COLnew(0, ATOMindex("wkb"), 0, TRANSIENT)) == NULL) {
@@ -2418,7 +2422,7 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
BBPunfix(inParentBAT->batCacheid);
BBPunfix(idBAT->batCacheid);
*geomBAT_id = bat_nil;
- throw(MAL, "geom.Dump", "Error creating new BAT");
+ throw(MAL, name, "Error creating new BAT");
}
if (inParentBAT_id) {
@@ -2428,7 +2432,7 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
BBPunfix(idBAT->batCacheid);
BBPunfix(geomBAT->batCacheid);
*parentBAT_id = bat_nil;
- throw(MAL, "geom.Dump", "Error creating new BAT");
+ throw(MAL, name, "Error creating new BAT");
}
}
@@ -2455,7 +2459,7 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
if (inParentBAT_id) {
for (i = 0; i < geometriesNum; i++) {
if (BUNappend(parentBAT, &parent, TRUE) != GDK_SUCCEED) {
- err = createException(MAL, "geom.Dump", "BUNappend
failed");
+ err = createException(MAL, name, "BUNappend failed");
BBPunfix(inGeomBAT->batCacheid);
if (inParentBAT_id)
BBPunfix(inParentBAT->batCacheid);
@@ -2513,12 +2517,22 @@ wkbDump_bat_(bat *parentBAT_id, bat *idB
str
wkbDump_bat(bat* idBAT_id, bat* geomBAT_id, bat* wkbBAT_id) {
- return wkbDump_bat_(NULL, idBAT_id, geomBAT_id, wkbBAT_id, NULL);
+ return WKBtoWKBSflagINT(NULL, idBAT_id, geomBAT_id, wkbBAT_id, NULL,
dumpGeometriesGeometry, "geom.Dump");
}
str
wkbDumpP_bat(bat* partentBAT_id, bat* idBAT_id, bat* geomBAT_id, bat*
wkbBAT_id, bat *parent) {
- return wkbDump_bat_(partentBAT_id, idBAT_id, geomBAT_id, wkbBAT_id,
parent);
+ return WKBtoWKBSflagINT(partentBAT_id, idBAT_id, geomBAT_id, wkbBAT_id,
parent, dumpGeometriesGeometry,"geom.DumpP");
+}
+
+str
+wkbDumpPoints_bat(bat* idBAT_id, bat* geomBAT_id, bat* wkbBAT_id) {
+ return WKBtoWKBSflagINT(NULL, idBAT_id, geomBAT_id, wkbBAT_id, NULL,
dumpPointsGeometry, "geom.DumpPoints");
+}
+
+str
+wkbDumpPointsP_bat(bat* partentBAT_id, bat* idBAT_id, bat* geomBAT_id, bat*
wkbBAT_id, bat *parent) {
+ return WKBtoWKBSflagINT(partentBAT_id, idBAT_id, geomBAT_id, wkbBAT_id,
parent, dumpPointsGeometry,"geom.DumpPointsP");
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list