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

Reply via email to