Changeset: da346ec77865 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=da346ec77865
Modified Files:
        geom/monetdb5/geom.c
        geom/monetdb5/geom.h
        geom/monetdb5/geom.mal
        geom/monetdb5/geomBulk.c
Branch: geo
Log Message:

Fix interfaces so that MAL and C agree.


diffs (truncated from 527 to 300 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -988,7 +988,7 @@ static str segmentizeGeometry(GEOSGeomet
        return MAL_SUCCEED;
 }
 
-str wkbSegmentize(wkb** outWKB, wkb** geomWKB, double *sz) {
+str wkbSegmentize(wkb** outWKB, wkb** geomWKB, dbl *sz) {
        GEOSGeometry* outGeometry;
        GEOSGeom geosGeometry;
        str err;
@@ -1278,7 +1278,7 @@ static str translateGeometry(GEOSGeometr
 
 
 
-str wkbTranslate(wkb** outWKB, wkb** geomWKB, double* dx, double* dy, double* 
dz) {
+str wkbTranslate(wkb** outWKB, wkb** geomWKB, dbl* dx, dbl* dy, dbl* dz) {
        GEOSGeometry* outGeometry;
        GEOSGeom geosGeometry;
        str err;
@@ -1316,7 +1316,7 @@ str wkbTranslate(wkb** outWKB, wkb** geo
 //It creates a Delaunay triangulation
 //flag = 0 => returns a collection of polygons
 //flag = 1 => returns a multilinestring
-str wkbDelaunayTriangles(wkb** outWKB, wkb** geomWKB, double* tolerance, int* 
flag){
+str wkbDelaunayTriangles(wkb** outWKB, wkb** geomWKB, dbl* tolerance, int* 
flag){
        GEOSGeometry* outGeometry;
        GEOSGeom geosGeometry;
 
@@ -1477,7 +1477,7 @@ static str dumpGeometriesGeometry(BAT* i
        return MAL_SUCCEED;
 }
 
-str wkbDump(int* idBAT_id, int* geomBAT_id, wkb** geomWKB) {
+str wkbDump(bat* idBAT_id, bat* geomBAT_id, wkb** geomWKB) {
        BAT *idBAT = NULL, *geomBAT = NULL;
        GEOSGeom geosGeometry;
        unsigned int geometriesNum;
@@ -1743,7 +1743,7 @@ static str dumpPointsGeometry(BAT* idBAT
        return MAL_SUCCEED;
 }
 
-str wkbDumpPoints(int* idBAT_id, int* geomBAT_id, wkb** geomWKB) {
+str wkbDumpPoints(bat* idBAT_id, bat* geomBAT_id, wkb** geomWKB) {
        BAT *idBAT = NULL, *geomBAT = NULL;
        GEOSGeom geosGeometry;
        int check =0;
@@ -1839,36 +1839,44 @@ str geom_2_geom(wkb** resWKB, wkb **valu
 }
 
 /*check if the geometry has z coordinate*/
-void geoHasZ(int* res, int* info) {
+str geoHasZ(int* res, int* info) {
        if(geometryHasZ(*info)) *res=1;
        else *res=0;
+       return MAL_SUCCEED;
 
 }
 /*check if the geometry has m coordinate*/
-void geoHasM(int* res, int* info) {
+str geoHasM(int* res, int* info) {
        if(geometryHasM(*info)) *res=1;
        else *res=0;
+       return MAL_SUCCEED;
 }
 /*check the geometry subtype*/
 /*returns the length of the resulting string*/
-void geoGetType(char** res, int* info, int* flag) {
+str geoGetType(char** res, int* info, int* flag) {
        int type = (*info >> 2);
        const char* typeStr=geom_type2str(type, *flag) ;
 
        *res=GDKmalloc(strlen(typeStr));
+       if (*res == NULL)
+               throw(MAL, "geo.getType", MAL_MALLOC_FAIL);
        strcpy(*res, typeStr);
+       return MAL_SUCCEED;
 }
 
 /* initialise geos */
-bat *geom_prelude(void) {
+str geom_prelude(void *ret) {
+       (void) ret;
        libgeom_init();
        TYPE_mbr = malAtomSize(sizeof(mbr), sizeof(oid), "mbr");
-       return NULL;
+       return MAL_SUCCEED;
 }
 
 /* clean geos */
-void geom_epilogue(void) {
+str geom_epilogue(void *ret) {
+       (void) ret;
        libgeom_exit();
+       return MAL_SUCCEED;
 }
 
 /* Check if fixed-sized atom mbr is null */
@@ -2432,7 +2440,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
        return MAL_SUCCEED;
 }
 
-str wkbMakePoint(wkb** out, double *x, double *y, double *z, double *m, int 
*zmFlag) {
+str wkbMakePoint(wkb** out, dbl *x, dbl *y, dbl *z, dbl *m, int *zmFlag) {
        GEOSGeom geosGeometry = NULL;
        GEOSCoordSequence *seq = NULL;
 
@@ -2562,7 +2570,7 @@ str wkbSetSRID(wkb** resultGeomWKB, wkb 
 }
 
 /* depending on the specific function it returns the X,Y or Z coordinate of a 
point */
-str wkbGetCoordinate(double *out, wkb **geom, int *dimNum) {   
+str wkbGetCoordinate(dbl *out, wkb **geom, int *dimNum) {      
        GEOSGeom geosGeometry = wkb2geos(*geom);
        const GEOSCoordSequence* gcs;
 
@@ -2628,7 +2636,7 @@ str wkbEnvelope(wkb **out, wkb **geom) {
        return wkbBasic(out, geom, GEOSEnvelope, "geom.Envelope");
 }
 
-str wkbEnvelopeFromCoordinates(wkb** out, double* xmin, double* ymin, double* 
xmax, double* ymax, int* srid) {
+str wkbEnvelopeFromCoordinates(wkb** out, dbl* xmin, dbl* ymin, dbl* xmax, 
dbl* ymax, int* srid) {
        GEOSGeom geosGeometry, linearRingGeometry;
        
        //create the coordinates sequence
@@ -2664,7 +2672,7 @@ str wkbEnvelopeFromCoordinates(wkb** out
        return MAL_SUCCEED;
 }
 
-str wkbMakePolygon(wkb** out, wkb** external, int* internalBAT_id, int* srid) {
+str wkbMakePolygon(wkb** out, wkb** external, bat* internalBAT_id, int* srid) {
        GEOSGeom geosGeometry, externalGeometry, linearRingGeometry;
        bit closed = 0;
        GEOSCoordSeq coordSeq_copy;
@@ -2858,7 +2866,7 @@ str wkbMakeLine(wkb** out, wkb** geom1WK
 }
 
 //Gets a BAT with geometries and returns a single LineString
-str wkbMakeLineAggr(wkb** outWKB, int* inBAT_id) {
+str wkbMakeLineAggr(wkb** outWKB, bat* inBAT_id) {
        BAT *inBAT = NULL;
        BATiter inBAT_iter;
        BUN i;
@@ -3179,7 +3187,7 @@ str wkbExteriorRing(wkb **exteriorRingWK
 }
 
 /* Returns the n-th interior ring of a polygon */
-str wkbInteriorRingN(wkb **interiorRingWKB, wkb **geom, short* ringNum) {
+str wkbInteriorRingN(wkb **interiorRingWKB, wkb **geom, int* ringNum) {
        GEOSGeom geosGeometry = NULL;
        const GEOSGeometry* interiorRingGeometry;
        int rN = -1;
@@ -3752,7 +3760,7 @@ str wkbUnion(wkb **out, wkb **a, wkb **b
 }
 
 //Gets a BAT with geometries and returns a single LineString
-str wkbUnionAggr(wkb** outWKB, int* inBAT_id) {
+str wkbUnionAggr(wkb** outWKB, bat* inBAT_id) {
        BAT *inBAT = NULL;
        BATiter inBAT_iter;
        BUN i;
@@ -4082,7 +4090,7 @@ str wkbCoveredBy(bit *out, wkb **geomWKB
        return MAL_SUCCEED;
 }
 
-str wkbDWithin(bit* out, wkb** geomWKB_a, wkb** geomWKB_b, double* distance) {
+str wkbDWithin(bit* out, wkb** geomWKB_a, wkb** geomWKB_b, dbl* distance) {
        double distanceComputed;
        str err;
 
@@ -4635,7 +4643,7 @@ str mbrEqual_wkb(bit *out, wkb **geom1WK
 }
 
 /* returns the Euclidean distance of the centroids of the boxes */
-str mbrDistance(double *out, mbr **b1, mbr **b2) {
+str mbrDistance(dbl *out, mbr **b1, mbr **b2) {
        double b1_Cx = 0.0, b1_Cy = 0.0, b2_Cx =0.0, b2_Cy=0.0;
 
        if (mbr_isnil(*b1) || mbr_isnil(*b2)) {
@@ -4656,7 +4664,7 @@ str mbrDistance(double *out, mbr **b1, m
 }
 
 /*returns the Euclidean distance of the centroids of the mbrs of the two 
geometries */
-str mbrDistance_wkb(double *out, wkb **geom1WKB, wkb **geom2WKB) {
+str mbrDistance_wkb(dbl *out, wkb **geom1WKB, wkb **geom2WKB) {
        mbr *geom1MBR = NULL, *geom2MBR = NULL;
        str ret = MAL_SUCCEED;
 
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -48,12 +48,12 @@
 
 
 /* general functions */
-geom_export void geoHasZ(int* res, int* info);
-geom_export void geoHasM(int* res, int* info);
-geom_export void geoGetType(char** res, int* info, int* flag);
+geom_export str geoHasZ(int* res, int* info);
+geom_export str geoHasM(int* res, int* info);
+geom_export str geoGetType(char** res, int* info, int* flag);
 
-geom_export bat *geom_prelude(void);
-geom_export void geom_epilogue(void);
+geom_export str geom_prelude(void *ret);
+geom_export str geom_epilogue(void *ret);
 
 /* the len argument is needed for correct storage and retrieval */
 geom_export size_t wkbTOSTR(char **geomWKT, size_t *len, wkb *geomWKB);
@@ -103,7 +103,7 @@ geom_export str wkbIsnil(bit *r, wkb **v
 /* functions that are used when a column is added to an existing table */
 geom_export str mbrFromMBR(mbr **w, mbr **src);
 geom_export str wkbFromWKB(wkb **w, wkb **src);
-//Is it needed?? geom_export str wkbFromWKB_bat(int* outBAT_id, int* inBAT_id);
+//Is it needed?? geom_export str wkbFromWKB_bat(bat* outBAT_id, bat* inBAT_id);
 
 /* The WKB we use is the EWKB used also in PostGIS 
  * because we decided that it is easire to carry around
@@ -160,20 +160,20 @@ geom_export str wkbOverlaps(bit*, wkb**,
 geom_export str wkbRelate(bit*, wkb**, wkb**, str*);
 geom_export str wkbCovers(bit *out, wkb **geomWKB_a, wkb **geomWKB_b);
 geom_export str wkbCoveredBy(bit *out, wkb **geomWKB_a, wkb **geomWKB_b);
-geom_export str wkbDWithin(bit*, wkb**, wkb**, double*);
+geom_export str wkbDWithin(bit*, wkb**, wkb**, dbl*);
 
 //LocateAlong
 //LocateBetween
 
 //geom_export str wkbFromString(wkb**, str*); 
 
-geom_export str wkbMakePoint(wkb**, double*, double*, double*, double*, int*);
+geom_export str wkbMakePoint(wkb**, dbl*, dbl*, dbl*, dbl*, int*);
 geom_export str wkbMakePoint_bat(bat*, bat*, bat*, bat*, bat*, int*);
 
 geom_export str wkbCoordDim(int* , wkb**);
 geom_export str wkbSetSRID(wkb**, wkb**, int*);
 
-geom_export str wkbGetCoordinate(double *out, wkb **geom, int *dimNum);
+geom_export str wkbGetCoordinate(dbl *out, wkb **geom, int *dimNum);
 geom_export str wkbGetCoordinate_bat(bat *outBAT_id, bat *inBAT_id, int* flag);
 
 geom_export str wkbStartPoint(wkb **out, wkb **geom);
@@ -184,12 +184,12 @@ geom_export str wkbNumPoints_bat(bat *ou
 
 geom_export str wkbPointN(wkb **out, wkb **geom, int *n);
 geom_export str wkbEnvelope(wkb **out, wkb **geom);
-geom_export str wkbEnvelopeFromCoordinates(wkb** out, double* xmin, double* 
ymin, double* xmax, double* ymax, int* srid);
-geom_export str wkbMakePolygon(wkb** out, wkb** external, int* internalBAT_id, 
int* srid);
+geom_export str wkbEnvelopeFromCoordinates(wkb** out, dbl* xmin, dbl* ymin, 
dbl* xmax, dbl* ymax, int* srid);
+geom_export str wkbMakePolygon(wkb** out, wkb** external, bat* internalBAT_id, 
int* srid);
 geom_export str wkbMakeLine(wkb**, wkb**, wkb**);
-geom_export str wkbMakeLineAggr(wkb** outWKB, int* inBAT_id);
+geom_export str wkbMakeLineAggr(wkb** outWKB, bat* inBAT_id);
 geom_export str wkbExteriorRing(wkb**, wkb**);
-geom_export str wkbInteriorRingN(wkb**, wkb**, short*);
+geom_export str wkbInteriorRingN(wkb**, wkb**, int*);
 
 geom_export str wkbNumRings(int*, wkb**, int*);
 geom_export str wkbNumRings_bat(bat *outBAT_id, bat *inBAT_id, int* flag);
@@ -215,7 +215,7 @@ geom_export str wkbLength(dbl *out, wkb 
 geom_export str wkbConvexHull(wkb **out, wkb **geom);
 geom_export str wkbIntersection(wkb **out, wkb **a, wkb **b);
 geom_export str wkbUnion(wkb **out, wkb **a, wkb **b);
-geom_export str wkbUnionAggr(wkb** outWKB, int* inBAT_id);
+geom_export str wkbUnionAggr(wkb** outWKB, bat* inBAT_id);
 geom_export str wkbDifference(wkb **out, wkb **a, wkb **b);
 geom_export str wkbSymDifference(wkb **out, wkb **a, wkb **b);
 geom_export str wkbBuffer(wkb **out, wkb **geom, dbl *distance);
@@ -227,21 +227,21 @@ geom_export str wkbNumGeometries(int* ou
 geom_export str wkbNumGeometries_bat(bat *outBAT_id, bat *inBAT_id);
 
 geom_export str wkbTransform(wkb**, wkb**, int*, int*, char**, char**);
-geom_export str wkbTranslate(wkb**, wkb**, double*, double*, double*);
-geom_export str wkbDelaunayTriangles(wkb**, wkb**, double*, int*);
+geom_export str wkbTranslate(wkb**, wkb**, dbl*, dbl*, dbl*);
+geom_export str wkbDelaunayTriangles(wkb**, wkb**, dbl*, int*);
 geom_export str wkbPointOnSurface(wkb**, wkb**);
 geom_export str wkbForceDim(wkb**, wkb**, int*);
-geom_export str wkbSegmentize(wkb**, wkb**, double*);
+geom_export str wkbSegmentize(wkb**, wkb**, dbl*);
 
-geom_export str wkbDump(int* idBAT_id, int* geomBAT_id, wkb**);
-geom_export str wkbDumpPoints(int* idBAT_id, int* geomBAT_id, wkb**);
+geom_export str wkbDump(bat* idBAT_id, bat* geomBAT_id, wkb**);
+geom_export str wkbDumpPoints(bat* idBAT_id, bat* geomBAT_id, wkb**);
 
 geom_export str geom_2_geom(wkb** resWKB, wkb **valueWKB, int* columnType, 
int* columnSRID); 
 
 geom_export str wkbMBR(mbr **res, wkb **geom);
 
 geom_export str wkbBox2D(mbr** box, wkb** point1, wkb** point2);
-geom_export str wkbBox2D_bat(int* outBAT_id, bat *aBAT_id, bat *bBAT_id);
+geom_export str wkbBox2D_bat(bat* outBAT_id, bat *aBAT_id, bat *bBAT_id);
 
 geom_export str mbrOverlaps(bit *out, mbr **b1, mbr **b2);
 geom_export str mbrOverlaps_wkb(bit *out, wkb **geom1WKB, wkb **geom2WKB);
@@ -267,8 +267,8 @@ geom_export str mbrContained(bit *out, m
 geom_export str mbrContained_wkb(bit *out, wkb **geom1WKB, wkb **geom2WKB);
 geom_export str mbrEqual(bit *out, mbr **b1, mbr **b2);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to