// Called by location manager's iterate function virtual void addLocation (CkLocation &loc) { if (cur>=lo && cur<hi) { /* This element is in our range-- look it up */ dest->add(cur,mgr->lookup(loc.getIndex()),mgr->getGroupID().idx); } cur++; }
/** Call add for every in-range array element on this processor */ void iterate(void) { /* Walk the groupTable for arrays (FIXME: get rid of _groupIDTable) */ int numGroups=CkpvAccess(_groupIDTable)->size(); for(int i=0;i<numGroups;i++) { CkGroupID groupID = (*CkpvAccess(_groupIDTable))[i]; IrrGroup *obj = CkpvAccess(_groupTable)->find(groupID).getObj(); /*if (obj->isArrMgr()) { / * This is an array manager: examine its array elements * / CkArray *mgr=(CkArray *)obj; CkArrayElementRangeIterator<T> ait(dest,lo,hi); ait.iterate(cur, mgr); cur+=ait.getCount(); } else {*/ dest->add(cur,obj,groupID.idx); cur++; //} } }