[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: geo - updated how wkb nil values are created
From:       Kostis Kyzirakos <commits+kostis=cwi.nl () monetdb ! org>
Date:       2016-01-29 15:31:55
Message-ID: hg.645ad60c4cfb.1454081515.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

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

updated how wkb nil values are created


diffs (truncated from 685 to 300 lines):

diff --git a/geom/lib/libgeom.h b/geom/lib/libgeom.h
--- a/geom/lib/libgeom.h
+++ b/geom/lib/libgeom.h
@@ -134,7 +134,7 @@ libgeom_export void libgeom_exit(void);
  * On failure, returns NULL.
  */
 //#define wkb2geos( geom ) wkb_isnil((geom))? NULL: GEOSGeomFromWKB_buf((unsigned \
                char *)((geom)->data), (geom)->len)
-#define wkb_nil geos2wkb(NULL);
+//#define wkb_nil geos2wkb(NULL);
 #define mbr_nil mbrFromGeos(NULL); 
 
 libgeom_export int wkb_isnil(wkb *wkbp);
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -18,6 +18,7 @@ int TYPE_mbr;
 static inline int geometryHasZ(int info){return (info & 0x02);}
 static inline int geometryHasM(int info){return (info & 0x01);}
 const double pi=3.14159265358979323846;
+static wkb wkb_nil = {0, ~0};
 
 /* the first argument in the functions is the return variable */
 
@@ -343,7 +344,7 @@ str wkbTransform(wkb** transformedWKB, w
 
 
 	if(*geomWKB == NULL) {
-		*transformedWKB = wkb_nil;
+		*transformedWKB = wkbNULL();
 		pj_free(proj4_src);
 		pj_free(proj4_dst);
 		throw(MAL, "geom.Transform", "wkb is null");
@@ -385,7 +386,7 @@ str wkbTransform(wkb** transformedWKB, w
 		/* destroy the geos geometries */
 		GEOSGeom_destroy(transformedGeosGeometry);
 	} else
-		*transformedWKB = wkb_nil;
+		*transformedWKB = wkbNULL();
 
 	pj_free(proj4_src);
 	pj_free(proj4_dst);
@@ -645,20 +646,20 @@ str wkbForceDim(wkb** outWKB, wkb** geom
 	str err;
 
 	if(wkb_isnil(*geomWKB)){
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return MAL_SUCCEED;
 	}
 
 	geosGeometry = wkb2geos(*geomWKB);
 	if(!geosGeometry) {
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return createException(MAL, "geom.ForceDim", "wkb2geos failed");
 	}
 
 	if((err = forceDimGeometry(&outGeometry, geosGeometry, *dim)) != MAL_SUCCEED) {
 		str msg = createException(MAL, "geom.ForceDim", "%s", err);
 		GEOSGeom_destroy(geosGeometry);
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 
 		GDKfree(err);
 		return msg;
@@ -978,20 +979,20 @@ str wkbSegmentize(wkb** outWKB, wkb** ge
 	str err;
 
 	if(wkb_isnil(*geomWKB)){
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return MAL_SUCCEED;
 	}
 
 	geosGeometry = wkb2geos(*geomWKB);
 	if(!geosGeometry) {
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return createException(MAL, "geom.Segmentize", "wkb2geos failed");
 	}
 
 	if((err = segmentizeGeometry(&outGeometry, geosGeometry, *sz)) != MAL_SUCCEED) {
 		str msg = createException(MAL, "geom.Segmentize", "%s", err);
 		GEOSGeom_destroy(geosGeometry);
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 
 		GDKfree(err);
 		return msg;
@@ -1268,20 +1269,20 @@ str wkbTranslate(wkb** outWKB, wkb** geo
 	str err;
 
 	if(wkb_isnil(*geomWKB)){
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return MAL_SUCCEED;
 	}
 
 	geosGeometry = wkb2geos(*geomWKB);
 	if(!geosGeometry) {
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		return createException(MAL, "geom.Translate", "wkb2geos failed");
 	}
 
 	if((err = translateGeometry(&outGeometry, geosGeometry, *dx, *dy, *dz)) != \
MAL_SUCCEED) {  str msg = createException(MAL, "geom.Translate", "%s", err);
 		GEOSGeom_destroy(geosGeometry);
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 
 		GDKfree(err);
 		return msg;
@@ -1306,7 +1307,7 @@ str wkbDelaunayTriangles(wkb** outWKB, w
 
 	geosGeometry = wkb2geos(*geomWKB);
 	if(!(outGeometry = GEOSDelaunayTriangulation(geosGeometry, *tolerance, *flag))) {
-		*outWKB = wkb_nil;
+		*outWKB = wkbNULL();
 		GEOSGeom_destroy(geosGeometry);
 		return createException(MAL, "geom.DelaunayTriangles", "GEOSDelaunayTriangulation \
failed");  }
@@ -1324,19 +1325,19 @@ str wkbPointOnSurface(wkb** resWKB, wkb*
 	GEOSGeom geosGeometry, resGeosGeometry;
 
 	if(wkb_isnil(*geomWKB)){
-		*resWKB = wkb_nil;
+		*resWKB = wkbNULL();
 		return MAL_SUCCEED;
 	}
 
 	geosGeometry = wkb2geos(*geomWKB);
 	if(!geosGeometry) {
-		*resWKB = wkb_nil;
+		*resWKB = wkbNULL();
 		throw(MAL, "geom.PointOnSurface", "wkb2geos failed");
 	}
 
 	resGeosGeometry = GEOSPointOnSurface(geosGeometry);
 	if(!resGeosGeometry) {
-		*resWKB = wkb_nil;
+		*resWKB = wkbNULL();
 		throw(MAL, "geom.PointOnSurface", "GEOSPointOnSurface failed");
 	}
 
@@ -1906,7 +1907,7 @@ static int wkbFROMSTR_withSRID(char* geo
 	size_t parsedCharacters = 0;
 
 	if (strcmp(geomWKT, str_nil) == 0) {
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		return 0;
 	}
 	//check whether the represenattion is binary (hex)
@@ -1943,13 +1944,13 @@ static int wkbFROMSTR_withSRID(char* geo
 	GEOSWKTReader_destroy(WKT_reader);
 
 	if(geosGeometry == NULL){
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		return 0;
 	}
 
 	if (GEOSGeomTypeId(geosGeometry) == -1) {
 		GEOSGeom_destroy(geosGeometry);
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		return 0;
 	}
 
@@ -2253,7 +2254,7 @@ str wkbFromText(wkb **geomWKB, str *geom
 
 	*geomWKB = NULL;
 	if (strcmp(*geomWKT, str_nil) == 0) {
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		return MAL_SUCCEED;
 	}
 	if (wkbFROMSTR_withSRID(*geomWKT, &len, geomWKB, *srid) &&
@@ -2262,7 +2263,7 @@ str wkbFromText(wkb **geomWKB, str *geom
 	}
 
 	if (*geomWKB == NULL) {
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 	}
 
 	te += (te>2);
@@ -2350,7 +2351,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 	if(ret != MAL_SUCCEED) {
 		str msg = createException(MAL, "geom.MLineStringToPolygon: ", "%s", ret);
 
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		GDKfree(ret);
 
 		if(inputWKB)
@@ -2363,7 +2364,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 	if(ret != MAL_SUCCEED) {
 		str msg = createException(MAL, "geom.MLineStringToPolygon: ", "%s", ret);
 
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		GDKfree(ret);
 
 		return msg;
@@ -2380,7 +2381,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 		if(ret != MAL_SUCCEED || !linestringsWKB[i-1]) {
 			str msg = createException(MAL, "geom.MLineStringToPolygon: ", "%s", ret);
 
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			GDKfree(ret);
 
 			GDKfree(inputWKB);
@@ -2396,7 +2397,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 		if(ret != MAL_SUCCEED) {
 			str msg = createException(MAL, "geom.MLineStringToPolygon: ", "%s", ret);
 
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			GDKfree(ret);
 
 			GDKfree(inputWKB);
@@ -2413,7 +2414,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 		if(ret != MAL_SUCCEED) {
 			str msg = createException(MAL, "geom.MLineStringToPolygon: ", "%s", ret);
 
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			GDKfree(ret);
 
 			GDKfree(inputWKB);
@@ -2466,7 +2467,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 
 		externalGeometry = wkb2geos(linestringsWKB[0]);
 		if(!externalGeometry) {
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			throw(MAL, "geom.MLineStringToPolygon", "Error in wkb2geos");
 		}
 
@@ -2481,7 +2482,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 
 			internalGeometry = wkb2geos(linestringsWKB[i]);
 			if(!internalGeometry) {
-				*geomWKB = wkb_nil;
+				*geomWKB = wkbNULL();
 				throw(MAL, "geom.MLineStringToPolygon", "Error in wkb2geos");
 			}
 
@@ -2495,7 +2496,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 			for(i=0; i<itemsNum; i++)
 				GEOSGeom_destroy(internalGeometries[i]);
 			GDKfree(internalGeometries);
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			throw(MAL, "geom.MLineStringToPolygon", "Error creating Polygon from \
LinearRing");  }
 
@@ -2508,7 +2509,7 @@ str wkbMLineStringToPolygon(wkb** geomWK
 			GEOSGeom_destroy(finalGeometry);
 			GDKfree(internalGeometries);
 
-			*geomWKB = wkb_nil;
+			*geomWKB = wkbNULL();
 			throw(MAL, "geom.MLineStringToPolygon", "The provided MultiLineString does not \
create a valid Polygon");  
 		}
@@ -2519,10 +2520,10 @@ str wkbMLineStringToPolygon(wkb** geomWK
 		GEOSGeom_destroy(finalGeometry);
 		GDKfree(internalGeometries);
 	} else if(*flag == 1) {
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		throw(MAL, "geom.MLineStringToPolygon", "Multipolygon from string has not been \
defined");  } else {
-		*geomWKB = wkb_nil;
+		*geomWKB = wkbNULL();
 		throw(MAL, "geom.MLineStringToPolygon", "Uknown flag");
 	}
 
@@ -2538,7 +2539,7 @@ str wkbMakePoint(wkb** out, dbl *x, dbl 
 	GEOSCoordSequence *seq = NULL;
 
 	if (*x == dbl_nil || *y == dbl_nil) {
-		*out = wkb_nil;
+		*out = wkbNULL();
 		return MAL_SUCCEED;
 	}
 
@@ -2555,7 +2556,7 @@ str wkbMakePoint(wkb** out, dbl *x, dbl 
 
 	if(*zmFlag == 10) {
 		if(*z == dbl_nil) {
-			*out = wkb_nil;
+			*out = wkbNULL();
 			GEOSCoordSeq_destroy(seq);
 			return MAL_SUCCEED;
 		}
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic