Changeset: 6943e0604ba5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6943e0604ba5
Modified Files:
        monetdb5/extras/crackers/crackers_holistic.c
        monetdb5/extras/crackers/crackers_holistic.h
        monetdb5/extras/crackers/crackers_selecthol_ops.mx
Branch: holindex
Log Message:

Prepare getFrequencyStruct to return one out of two lists.
We need two lists for future work. We can retrieve them with name A or B.


diffs (108 lines):

diff --git a/monetdb5/extras/crackers/crackers_holistic.c 
b/monetdb5/extras/crackers/crackers_holistic.c
--- a/monetdb5/extras/crackers/crackers_holistic.c
+++ b/monetdb5/extras/crackers/crackers_holistic.c
@@ -5,7 +5,8 @@
 #include "mal_exception.h"
 #include "mutils.h"
 
-static FrequencyNode *_InternalFrequencyStruct = NULL;
+static FrequencyNode *_InternalFrequencyStructA = NULL;
+static FrequencyNode *_InternalFrequencyStructB = NULL;
 static MT_Lock frequencylock;
 
 str
@@ -16,22 +17,30 @@ CRKinitHolistic(int *ret)
        return MAL_SUCCEED;
 }
 
+/*singleton pattern*/
 FrequencyNode *
-getFrequencyStruct(void)
+getFrequencyStruct(char which)
 {
+       FrequencyNode **theNode = NULL;
+
        mal_set_lock(frequencylock, "getFrequencyStruct");
-       if (_InternalFrequencyStruct == NULL) {
-               _InternalFrequencyStruct = GDKmalloc(sizeof(FrequencyNode)); 
-               _InternalFrequencyStruct->bid=0;
-               _InternalFrequencyStruct->c=0;
-               _InternalFrequencyStruct->f1=0;
-               _InternalFrequencyStruct->f2=0;
-               _InternalFrequencyStruct->weight=0.0;
-               _InternalFrequencyStruct->next=NULL;
-       }
+       switch (which) {
+                case 'A':
+                        theNode = &_InternalFrequencyStructA;
+                        break;
+                case 'B':
+                        theNode = &_InternalFrequencyStructB;
+                        break;
+                default:
+                        assert(0);
+         }
+
+        /* GDKzalloc = calloc = malloc + memset(0) */
+        if (*theNode == NULL)
+                *theNode = GDKzalloc(sizeof(FrequencyNode));
        mal_unset_lock(frequencylock, "getFrequencyStruct");
        
-       return _InternalFrequencyStruct;
+       return *theNode;
 }
 
 FrequencyNode* 
@@ -121,7 +130,7 @@ str
 CRKinitFrequencyStruct(int *vid,int *bid)
 {
        FrequencyNode* new_node;
-       FrequencyNode *fs = getFrequencyStruct();
+       FrequencyNode *fs = getFrequencyStruct('A');
 
        /*fprintf(stderr,"BAT_ID=%d\n",*bid);*/
        
@@ -142,7 +151,7 @@ CRKrandomCrack(int *ret)
        int temp=0;
        oid posl,posh,p;
        bit inclusive=TRUE;
-       FrequencyNode *fs = getFrequencyStruct();
+       FrequencyNode *fs = getFrequencyStruct('A');
 
        bid=findMax(fs);
        b=BATdescriptor(bid);
diff --git a/monetdb5/extras/crackers/crackers_holistic.h 
b/monetdb5/extras/crackers/crackers_holistic.h
--- a/monetdb5/extras/crackers/crackers_holistic.h
+++ b/monetdb5/extras/crackers/crackers_holistic.h
@@ -26,7 +26,7 @@ typedef struct frequency{
 
 }FrequencyNode;
 
-crackers_export FrequencyNode *getFrequencyStruct(void);
+crackers_export FrequencyNode *getFrequencyStruct(char which);
 crackers_export FrequencyNode* push(int bat_id,FrequencyNode* head);
 crackers_export FrequencyNode* pop(FrequencyNode* head);
 crackers_export void printFrequencyStruct(FrequencyNode* head);
diff --git a/monetdb5/extras/crackers/crackers_selecthol_ops.mx 
b/monetdb5/extras/crackers/crackers_selecthol_ops.mx
--- a/monetdb5/extras/crackers/crackers_selecthol_ops.mx
+++ b/monetdb5/extras/crackers/crackers_selecthol_ops.mx
@@ -313,8 +313,8 @@ createView:
        @1 k,temp_h;
 
        FrequencyNode* FN;
-       FrequencyNode *FrequencyStruct = getFrequencyStruct();
-       FN=searchBAT(FrequencyStruct,*bid);
+       FrequencyNode *FrequencyStructA = getFrequencyStruct('A');
+       FN=searchBAT(FrequencyStructA,*bid);
        FN->c = FN->c + 1;
        /*fprintf(stderr,"FN->bid=%d\n",FN->bid);*/
 
@@ -562,7 +562,7 @@ createView:
        /*fprintf(stderr,"BATcount(b)=%d\n",countBatElements);*/
        FN->weight = changeWeight(FN,countBatElements,L1);
        /*printFrequencyStruct(FrequencyStruct);*/
-       maxWB=findMax(FrequencyStruct);
+       maxWB=findMax(FrequencyStructA);
        /*fprintf(stderr,"MAXWB=%d\n",maxWB);*/
        @:CreateResult()@
        return MAL_SUCCEED;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to