Changeset: 97fc761c566e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=97fc761c566e Modified Files: geom/monetdb5/geom.c Branch: sfcgal Log Message:
Partial commit: use floats for gcontains diffs (130 lines): diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -12,7 +12,7 @@ */ #include "geom.h" -//#define GEOMBULK_DEBUG 1 +#define GEOMBULK_DEBUG 1 int TYPE_mbr; @@ -7675,6 +7675,7 @@ pnpolyWithHoles(bat *out, int nvert, dbl px = (dbl *) Tloc(bpx, 0); py = (dbl *) Tloc(bpy, 0); cnt = BATcount(bpx); + printf("cnt: %d nvert: %d nholes: %d\n", cnt, nvert, nholes); cs = (bit *) Tloc(bo, 0); #ifdef GEOMBULK_DEBUG gettimeofday(&start, NULL); @@ -7830,11 +7831,11 @@ getVerts(wkb *geom, vertexWKB **res) /*Lets get the polygon */ token = strtok_r(geom_str, ")", &saveptr1); - if ( (verts->vert_x = GDKmalloc(POLY_NUM_VERT * sizeof(double))) == NULL) { + if ( (verts->vert_x = GDKmalloc(POLY_NUM_VERT * sizeof(float))) == NULL) { GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } - if ( (verts->vert_y = GDKmalloc(POLY_NUM_VERT * sizeof(double))) == NULL) { + if ( (verts->vert_y = GDKmalloc(POLY_NUM_VERT * sizeof(float))) == NULL) { GDKfree(verts->vert_x); GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); @@ -7844,16 +7845,17 @@ getVerts(wkb *geom, vertexWKB **res) subtoken = strtok_r(str2, ",", &saveptr2); if (subtoken == NULL) break; - sscanf(subtoken, "%lf %lf", &(verts->vert_x[verts->nvert]), &(verts->vert_y[verts->nvert])); + //sscanf(subtoken, "%lf %lf", &(verts->vert_x[verts->nvert]), &(verts->vert_y[verts->nvert])); + sscanf(subtoken, "%f %f", &(verts->vert_x[verts->nvert]), &(verts->vert_y[verts->nvert])); verts->nvert++; if ((verts->nvert % POLY_NUM_VERT) == 0) { - if ( (verts->vert_x = GDKrealloc(verts->vert_x, verts->nvert * 2 * sizeof(double))) == NULL) { + if ( (verts->vert_x = GDKrealloc(verts->vert_x, verts->nvert * 2 * sizeof(float))) == NULL) { GDKfree(verts->vert_x); GDKfree(verts->vert_y); GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } - if ( (verts->vert_y = GDKrealloc(verts->vert_y, verts->nvert * 2 * sizeof(double))) == NULL) { + if ( (verts->vert_y = GDKrealloc(verts->vert_y, verts->nvert * 2 * sizeof(float))) == NULL) { GDKfree(verts->vert_x); GDKfree(verts->vert_y); GDKfree(verts); @@ -7864,13 +7866,13 @@ getVerts(wkb *geom, vertexWKB **res) token = strtok_r(NULL, ")", &saveptr1); if (token) { - if ( (verts->holes_x = GDKzalloc(POLY_NUM_HOLE * sizeof(double *))) == NULL) { + if ( (verts->holes_x = GDKzalloc(POLY_NUM_HOLE * sizeof(float *))) == NULL) { GDKfree(verts->vert_x); GDKfree(verts->vert_y); GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } - if ( (verts->holes_y = GDKzalloc(POLY_NUM_HOLE * sizeof(double *))) == NULL) { + if ( (verts->holes_y = GDKzalloc(POLY_NUM_HOLE * sizeof(float *))) == NULL) { GDKfree(verts->holes_x); GDKfree(verts->vert_x); GDKfree(verts->vert_y); @@ -7895,7 +7897,7 @@ getVerts(wkb *geom, vertexWKB **res) token++; if (!verts->holes_x[verts->nholes]) - if ( (verts->holes_x[verts->nholes] = GDKzalloc(POLY_NUM_VERT * sizeof(double))) == NULL) { + if ( (verts->holes_x[verts->nholes] = GDKzalloc(POLY_NUM_VERT * sizeof(float))) == NULL) { GDKfree(verts->holes_x); GDKfree(verts->holes_y); GDKfree(verts->holes_n); @@ -7905,7 +7907,7 @@ getVerts(wkb *geom, vertexWKB **res) throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } if (!verts->holes_y[verts->nholes]) - if ( (verts->holes_y[verts->nholes] = GDKzalloc(POLY_NUM_VERT * sizeof(double))) == NULL) { + if ( (verts->holes_y[verts->nholes] = GDKzalloc(POLY_NUM_VERT * sizeof(float))) == NULL) { GDKfree(verts->holes_x[verts->nholes]); GDKfree(verts->holes_x); GDKfree(verts->holes_y); @@ -7920,10 +7922,11 @@ getVerts(wkb *geom, vertexWKB **res) subtoken = strtok_r(str2, ",", &saveptr2); if (subtoken == NULL) break; - sscanf(subtoken, "%lf %lf", &(verts->holes_x[verts->nholes][nhole]), &(verts->holes_y[verts->nholes][nhole])); + //sscanf(subtoken, "%lf %lf", &(verts->holes_x[verts->nholes][nhole]), &(verts->holes_y[verts->nholes][nhole])); + sscanf(subtoken, "%f %f", &(verts->holes_x[verts->nholes][nhole]), &(verts->holes_y[verts->nholes][nhole])); nhole++; if ((nhole % POLY_NUM_VERT) == 0) { - if ( (verts->holes_x[verts->nholes] = GDKrealloc(verts->holes_x[verts->nholes], nhole * 2 * sizeof(double))) == NULL) { + if ( (verts->holes_x[verts->nholes] = GDKrealloc(verts->holes_x[verts->nholes], nhole * 2 * sizeof(float))) == NULL) { GDKfree(verts->holes_x[verts->nholes]); GDKfree(verts->holes_y[verts->nholes]); GDKfree(verts->holes_x); @@ -7934,7 +7937,7 @@ getVerts(wkb *geom, vertexWKB **res) GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } - if ( (verts->holes_y[verts->nholes] = GDKrealloc(verts->holes_y[verts->nholes], nhole * 2 * sizeof(double))) == NULL) { + if ( (verts->holes_y[verts->nholes] = GDKrealloc(verts->holes_y[verts->nholes], nhole * 2 * sizeof(float))) == NULL) { GDKfree(verts->holes_x[verts->nholes]); GDKfree(verts->holes_y[verts->nholes]); GDKfree(verts->holes_x); @@ -7951,7 +7954,7 @@ getVerts(wkb *geom, vertexWKB **res) verts->holes_n[verts->nholes] = nhole; verts->nholes++; if ((verts->nholes % POLY_NUM_HOLE) == 0) { - if ( (verts->holes_x = GDKrealloc(verts->holes_x, verts->nholes * 2 * sizeof(double *))) == NULL) { + if ( (verts->holes_x = GDKrealloc(verts->holes_x, verts->nholes * 2 * sizeof(float *))) == NULL) { GDKfree(verts->holes_x[verts->nholes]); GDKfree(verts->holes_y[verts->nholes]); GDKfree(verts->holes_x); @@ -7962,7 +7965,7 @@ getVerts(wkb *geom, vertexWKB **res) GDKfree(verts); throw(MAL, "geom.getVerts", MAL_MALLOC_FAIL); } - if ( (verts->holes_y = GDKrealloc(verts->holes_y, verts->nholes * 2 * sizeof(double *))) == NULL) { + if ( (verts->holes_y = GDKrealloc(verts->holes_y, verts->nholes * 2 * sizeof(float *))) == NULL) { GDKfree(verts->holes_x[verts->nholes]); GDKfree(verts->holes_y[verts->nholes]); GDKfree(verts->holes_x); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list