ParFUM: Make MsaHashtable compile against the revised MSA
authorPhil Miller <mille121@illinois.edu>
Thu, 10 Sep 2009 16:30:47 +0000 (11:30 -0500)
committerPhil Miller <mille121@illinois.edu>
Thu, 10 Dec 2009 22:23:01 +0000 (16:23 -0600)
MSA was revised to return a more strictly-checked object when
accumulating into the array. However, it now passes through overloaded
operator+= on ENTRY objects, to ease some pain of not accumulating the
same type. Define an operator+= appropriate for MsaHashtable, and use
it in place of the older direct access that violated MSA's strict
semantics.

src/libs/ck-libs/ParFUM/MsaHashtable.C
src/libs/ck-libs/ParFUM/MsaHashtable.h

index a04ade8c12b57790a09c4d70b9d0df3470ae8571..d2c42771d323f32ff806a3c4c1416db8cbab57b1 100644 (file)
@@ -71,8 +71,7 @@ int MsaHashtable::Add::addTuple(int *tuple,int nodesPerTuple,int chunk,int eleme
        int index = (int )(sum %(long )slots);
        Hashnode entry(nodesPerTuple,chunk,elementNo,tuple);
 
-       Hashtuple &list=accumulate(index);
-       list.vec->push_back(entry);
+       accumulate(index) += entry;
        char str[100];
        DEBUG(printf("[%d] adding tuple %s element %d to index %d \n",chunk,entry.nodes.toString(nodesPerTuple,str),elementNo,index));
        return index;
index 3a79680c1661aa7d5946c943a207b402cc87e304..faf8f6729da53a5b711fa7bfbfa3edc5d200792e 100644 (file)
@@ -7,6 +7,11 @@
 typedef UniqElemList<Hashnode> Hashtuple;
 typedef MSA1D<Hashtuple,DefaultListEntry<Hashtuple,true>,MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DHASH;
 
+void operator+=(Hashtuple &t, const Hashnode &n)
+{
+    t.vec->push_back(n);
+}
+
 class MsaHashtable : private MSA1DHASH
 {
 public: