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

changing return comments and butifying code


diffs (288 lines):

diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -432,36 +432,36 @@ str geomMakePointM_bat(int* outBAT_id, i
 /* sets the srid of the geometry - BULK version*/
 str wkbSetSRID_bat(int* outBAT_id, int* inBAT_id, int* srid) {
        BAT *outBAT = NULL, *inBAT = NULL;
-       wkb *inWKB = NULL, *outWKB = NULL;
        BUN p=0, q=0;
        BATiter inBAT_iter;
 
        //get the descriptor of the BAT
        if ((inBAT = BATdescriptor(*inBAT_id)) == NULL) {
-               throw(MAL, "batgeom.SetSRID", RUNTIME_OBJECT_MISSING);
+               return createException(MAL, "batgeom.SetSRID", "Problem 
retrieving BAT");
        }
        
-       if ( inBAT->htype != TYPE_void ) { //header type of  BAT not void
+       if ( !BAThdense(inBAT) ) {
                BBPreleaseref(inBAT->batCacheid);
-               throw(MAL, "batgeom.SetSRID", "the arguments must have dense 
and aligned heads");
+               return createException(MAL, "batgeom.SetSRID", "The BAT must 
have dense heads");
        }
 
        //create a new BAT for the output
        if ((outBAT = BATnew(TYPE_void, ATOMindex("wkb"), BATcount(inBAT), 
TRANSIENT)) == NULL) {
                BBPreleaseref(inBAT->batCacheid);
-               throw(MAL, "batgeom.SetSRID", MAL_MALLOC_FAIL);
+               return createException(MAL, "batgeom.SetSRID", "Error creating 
new BAT");
        }
+       
        //set the first idx of the output BAT equal to that of the input BAT
        BATseqbase(outBAT, inBAT->hseqbase);
 
-       //iterator over the BAT 
+       //iterator over the BATs        
        inBAT_iter = bat_iterator(inBAT);
-       //for (i = 0; i < BATcount(inBAT); i++) { 
-       BATloop(inBAT, p, q) { //iterate over all valid elements
+       BATloop(inBAT, p, q) { 
                str err = NULL;
+               wkb *outWKB = NULL;
 
-               //if for used --> inWKB = (wkb *) BUNtail(inBATi, i + 
BUNfirst(inBAT));
-               inWKB = (wkb*) BUNtail(inBAT_iter, p);
+               wkb *inWKB = (wkb*) BUNtail(inBAT_iter, p);
+
                if ((err = wkbSetSRID(&outWKB, &inWKB, srid)) != MAL_SUCCEED) { 
//set SRID
                        str msg;
                        BBPreleaseref(inBAT->batCacheid);
@@ -475,47 +475,40 @@ str wkbSetSRID_bat(int* outBAT_id, int* 
                outWKB = NULL;
        }
 
-       //set some properties of the new BAT
-       BATsetcount(outBAT, BATcount(inBAT));
-       BATsettrivprop(outBAT);
-       BATderiveProps(outBAT,FALSE);
        BBPreleaseref(inBAT->batCacheid);
        BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       
        return MAL_SUCCEED;
-
 }
 
 str wkbContains_bat(int* outBAT_id, bat *aBAT_id, bat *bBAT_id) {
        BAT *outBAT = NULL, *aBAT = NULL, *bBAT = NULL;
-       wkb *aWKB = NULL, *bWKB = NULL; //, *aWKB_previous = NULL, 
*bWKB_previous = NULL;
-       bit outBIT;
        BATiter aBAT_iter, bBAT_iter;
        BUN i=0;
+       str ret = MAL_SUCCEED;
 
-       //get the descriptor of the BAT
-       if ((aBAT = BATdescriptor(*aBAT_id)) == NULL) {
-               throw(MAL, "batgeom.Contains", RUNTIME_OBJECT_MISSING);
+       //get the BATs
+       if ( (aBAT = BATdescriptor(*aBAT_id)) == NULL || (bBAT = 
BATdescriptor(*bBAT_id)) == NULL ) {
+               ret = createException(MAL, "batgeom.Contains", "Problem 
retrieving BATs");
+               goto clean;
        }
-       if ((bBAT = BATdescriptor(*bBAT_id)) == NULL) {
-               BBPreleaseref(aBAT->batCacheid);
-               throw(MAL, "batgeom.Contains", RUNTIME_OBJECT_MISSING);
+
+       //check if the BATs are dense and aligned
+       if( !BAThdense(aBAT) || !BAThdense(bBAT) ) {
+               ret = createException(MAL, "batgeom.Contains", "BATs must have 
dense heads");
+               goto clean;
        }
-       
-       if ( aBAT->htype != TYPE_void || //header type of aBAT not void
-                bBAT->htype != TYPE_void || //header type of bBAT not void
-           aBAT->hseqbase != bBAT->hseqbase || //the idxs of the headers of 
the BATs are not the same
-           BATcount(aBAT) != BATcount(bBAT)) { //the number of valid elements 
in the BATs are not the same
-               BBPreleaseref(aBAT->batCacheid);
-               BBPreleaseref(bBAT->batCacheid);
-               throw(MAL, "batgeom.Contains", "the arguments must have dense 
and aligned heads");
+       if( aBAT->hseqbase != bBAT->hseqbase || BATcount(aBAT) != 
BATcount(bBAT) ) {
+               ret = createException(MAL, "batgeom.Contains", "BATs must be 
aligned");
+               goto clean;
        }
 
        //create a new BAT for the output
        if ((outBAT = BATnew(TYPE_void, ATOMindex("bit"), BATcount(aBAT), 
TRANSIENT)) == NULL) {
-               BBPreleaseref(aBAT->batCacheid);
-               BBPreleaseref(bBAT->batCacheid);
-               throw(MAL, "batgeom.Contains", MAL_MALLOC_FAIL);
+               ret = createException(MAL, "batgeom.Contains", "Error creating 
new BAT");
+               goto clean;
        }
+
        //set the first idx of the output BAT equal to that of the aBAT
        BATseqbase(outBAT, aBAT->hseqbase);
 
@@ -525,66 +518,66 @@ str wkbContains_bat(int* outBAT_id, bat 
 
        for (i = BUNfirst(aBAT); i < BATcount(aBAT); i++) { 
                str err = NULL;
-               aWKB = (wkb*) BUNtail(aBAT_iter, i + BUNfirst(aBAT));
-               bWKB = (wkb*) BUNtail(bBAT_iter, i + BUNfirst(bBAT));
+               bit outBIT;
+
+               wkb *aWKB = (wkb*) BUNtail(aBAT_iter, i + BUNfirst(aBAT));
+               wkb *bWKB = (wkb*) BUNtail(bBAT_iter, i + BUNfirst(bBAT));
 
                if ((err = wkbContains(&outBIT, &aWKB, &bWKB)) != MAL_SUCCEED) 
{ //check
-                       str msg;
-                       BBPreleaseref(aBAT->batCacheid);
-                       BBPreleaseref(bBAT->batCacheid);
-                       BBPreleaseref(outBAT->batCacheid);
-                       msg = createException(MAL, "batgeom.Contains", "%s", 
err);
+                       BBPreleaseref(outBAT->batCacheid);      
+
+                       ret = createException(MAL, "batgeom.Contains", "%s", 
err);
                        GDKfree(err);
-                       return msg;
+                       
+                       goto clean;
                }
                BUNappend(outBAT,&outBIT,TRUE); //add the result to the outBAT
        }
 
-       //set some properties of the new BAT
-       BATsetcount(outBAT, BATcount(aBAT));
-       BATsettrivprop(outBAT);
-       BATderiveProps(outBAT,FALSE);
-       BBPreleaseref(aBAT->batCacheid);
-       BBPreleaseref(bBAT->batCacheid);
        BBPkeepref(*outBAT_id = outBAT->batCacheid);
-       
-       return MAL_SUCCEED;
 
+clean:
+       if(aBAT)
+               BBPreleaseref(aBAT->batCacheid);
+       if(bBAT)
+               BBPreleaseref(bBAT->batCacheid);
+               
+       return ret;
 }
 
 str wkbContains_geom_bat(int* outBAT_id, wkb** geomWKB, int* inBAT_id) {
        BAT *outBAT = NULL, *inBAT = NULL;
-       wkb *inWKB = NULL;
-       bit outBIT;
        BATiter inBAT_iter;
-       BUN i=0;
+       BUN p=0, q=0;
 
        //get the descriptor of the BAT
        if ((inBAT = BATdescriptor(*inBAT_id)) == NULL) {
-               throw(MAL, "batgeom.Contains", RUNTIME_OBJECT_MISSING);
+               return createException(MAL, "batgeom.Contains", "Problem 
retrieving BAT");
        }
        
-       if ( inBAT->htype != TYPE_void ) { //header type of aBAT not void
+       if ( !BAThdense(inBAT) ) {
                BBPreleaseref(inBAT->batCacheid);
-               throw(MAL, "batgeom.Contains", "the arguments must have dense 
and aligned heads");
+               return createException(MAL, "batgeom.Contains", "The BAT must 
have dense heads");
        }
 
        //create a new BAT for the output
        if ((outBAT = BATnew(TYPE_void, ATOMindex("bit"), BATcount(inBAT), 
TRANSIENT)) == NULL) {
                BBPreleaseref(inBAT->batCacheid);
-               throw(MAL, "batgeom.Contains", MAL_MALLOC_FAIL);
+               return createException(MAL, "batgeom.Contains", "Error creating 
new BAT");
        }
+       
        //set the first idx of the output BAT equal to that of the aBAT
        BATseqbase(outBAT, inBAT->hseqbase);
 
        //iterator over the BATs        
        inBAT_iter = bat_iterator(inBAT);
+       BATloop(inBAT, p, q) { 
+               str err = NULL;
+               bit outBIT;
 
-       for (i = BUNfirst(inBAT); i < BATcount(inBAT); i++) { 
-               str err = NULL;
-               inWKB = (wkb*) BUNtail(inBAT_iter, i + BUNfirst(inBAT));
+               wkb *inWKB = (wkb*) BUNtail(inBAT_iter, p);
 
-               if ((err = wkbContains(&outBIT, geomWKB, &inWKB)) != 
MAL_SUCCEED) { //check
+               if ((err = wkbContains(&outBIT, geomWKB, &inWKB)) != 
MAL_SUCCEED) {
                        str msg;
                        BBPreleaseref(inBAT->batCacheid);
                        BBPreleaseref(outBAT->batCacheid);
@@ -595,10 +588,6 @@ str wkbContains_geom_bat(int* outBAT_id,
                BUNappend(outBAT,&outBIT,TRUE); //add the result to the outBAT
        }
 
-       //set some properties of the new BAT
-       BATsetcount(outBAT, BATcount(inBAT));
-       BATsettrivprop(outBAT);
-       BATderiveProps(outBAT,FALSE);
        BBPreleaseref(inBAT->batCacheid);
        BBPkeepref(*outBAT_id = outBAT->batCacheid);
        
@@ -657,7 +646,7 @@ str wkbDistance_bat(int* outBAT_id, bat 
                if ((err = wkbDistance(&distanceVal, &aWKB, &bWKB)) != 
MAL_SUCCEED) { //check   
                        BBPreleaseref(outBAT->batCacheid);      
 
-                       ret = createException(MAL, "batgeom.Contains", "%s", 
err);
+                       ret = createException(MAL, "batgeom.Distance", "%s", 
err);
                        GDKfree(err);
                        
                        goto clean;
@@ -680,40 +669,39 @@ clean:
 str wkbDistance_geom_bat(int* outBAT_id, wkb** geomWKB, int* inBAT_id) {
        BAT *outBAT = NULL, *inBAT = NULL;
        BATiter inBAT_iter;
-       BUN i=0;
+       BUN p=0, q=0;
 
        //get the descriptor of the BAT
        if ((inBAT = BATdescriptor(*inBAT_id)) == NULL) {
-               return createException(MAL, "batgeom.Distance", "Problem 
retrieving BATs");
+               return createException(MAL, "batgeom.Distance", "Problem 
retrieving BAT");
        }
        
-       if ( inBAT->htype != TYPE_void ) { //header type of aBAT not void
+       if ( !BAThdense(inBAT) ) {
                BBPreleaseref(inBAT->batCacheid);
-               return createException(MAL, "batgeom.Distance", "The arguments 
must have dense and aligned heads");
+               return createException(MAL, "batgeom.Distance", "The BAT must 
have dense heads");
        }
 
        //create a new BAT for the output
-       if ((outBAT = BATnew(TYPE_void, ATOMindex("bit"), BATcount(inBAT), 
TRANSIENT)) == NULL) {
+       if ((outBAT = BATnew(TYPE_void, ATOMindex("dbl"), BATcount(inBAT), 
TRANSIENT)) == NULL) {
                BBPreleaseref(inBAT->batCacheid);
                return createException(MAL, "batgeom.Distance", "Error creating 
new BAT");
        }
        //set the first idx of the output BAT equal to that of the aBAT
        BATseqbase(outBAT, inBAT->hseqbase);
 
-       //iterator over the BATs        
+       //iterator over the BAT 
        inBAT_iter = bat_iterator(inBAT);
-
-       for (i = BUNfirst(inBAT); i < BATcount(inBAT); i++) { 
+       BATloop(inBAT, p, q) {  
                str err = NULL;
                double distanceVal = 0;
 
-               wkb* inWKB = (wkb*) BUNtail(inBAT_iter, i + BUNfirst(inBAT));
+               wkb *inWKB = (wkb*) BUNtail(inBAT_iter, p);
 
                if ((err = wkbDistance(&distanceVal, geomWKB, &inWKB)) != 
MAL_SUCCEED) { //check
                        str msg;
                        BBPreleaseref(inBAT->batCacheid);
                        BBPreleaseref(outBAT->batCacheid);
-                       msg = createException(MAL, "batgeom.Contains", "%s", 
err);
+                       msg = createException(MAL, "batgeom.Distance", "%s", 
err);
                        GDKfree(err);
                        return msg;
                }
@@ -724,8 +712,6 @@ str wkbDistance_geom_bat(int* outBAT_id,
        BBPkeepref(*outBAT_id = outBAT->batCacheid);
        
        return MAL_SUCCEED;
-
-
 }
 
 str wkbDistance_bat_geom(int* outBAT_id, int* inBAT_id, wkb** geomWKB) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to