Changeset: 332541f70240 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=332541f70240
Modified Files:
        gdk/gdk.h
        gdk/gdk_bat.c
Branch: arrays
Log Message:

dimensionBATelementsNum function


diffs (58 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1087,7 +1087,7 @@ fprintf(stderr, "materialise: element re
 
 gdk_export BAT* materialiseDimensionBAT(BAT* dimensionBAT);
 gdk_export BUN dimensionBATsize(BAT* dimensionBAT);
-
+gdk_export BUN dimensionBATelementsNum(BAT* dimensionBAT);
 /*
  * @- Heap Management
  * Heaps are the low-level entities of mass storage in
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -3389,3 +3389,42 @@ BUN dimensionBATsize(BAT *dimensionBAT) 
        }
        return 0;
 }
+
+BUN dimensionBATelementsNum(BAT* dimensionBAT) {
+#define num(TPE) \
+       ({ \
+               TPE min, max, step; \
+               long elementRepeats, groupRepeats; \
+               dimensionCharacteristics(TPE, dimensionBAT, &min, &max, &step, 
&elementRepeats, &groupRepeats); \
+               dimensionElementsNum(min, max, step); \
+       })
+       switch(ATOMtype(BATttype(dimensionBAT))) {
+               case TYPE_bte:
+            return num(bte);
+        case TYPE_sht:
+            return num(sht);
+        case TYPE_int:
+            return num(int);
+        case TYPE_flt:
+            return num(flt);
+        case TYPE_dbl:
+            return num(dbl);
+        case TYPE_lng:
+            return num(lng);
+#ifdef HAVE_HGE
+        case TYPE_hge:
+            return num(hge);
+#endif
+        case TYPE_oid:
+#if SIZEOF_OID == SIZEOF_INT
+            return num(int);
+#else
+            return num(lng);
+#endif
+        break;
+        default:
+            fprintf(stderr, "dimensionBATelementsNum: dimension type not 
handled\n");
+       }
+
+       return 0;
+}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to