- Moved 4 files (ComlibStrategy.*, ComlibArrayListener.*) from ck-core to the
[charm.git] / src / ck-com / ComlibArrayListener.h
1 #ifndef COMMLIBARRAYLISTENER_H
2 #define COMMLIBARRAYLISTENER_H
3
4 #include "ComlibStrategy.h"
5 #include "ckhashtable.h"
6
7 class ComlibArrayListener : public CkArrayListener{
8     int nElements;
9     CkArrayID thisArrayID;
10     CkVec <StrategyTableEntry *> strategyList;
11     CkHashtableT<CkArrayIndexMax, CkArrayIndexMax*> *ht;
12     
13     int isRegistered(ArrayElement *elt, CharmStrategy *astrat);
14     void addElement(ArrayElement *elt, CmiBool mogration_flag);
15     void deleteElement(ArrayElement *elt, CmiBool migration_flag);
16     
17  public:
18     ComlibArrayListener();
19     ComlibArrayListener(CkMigrateMessage *);
20
21     void ckElementCreating(ArrayElement *elt);
22     void ckElementDied(ArrayElement *elt);
23     
24     void ckElementLeaving(ArrayElement *elt);
25     CmiBool ckElementArriving(ArrayElement *elt);
26     
27     void registerStrategy(StrategyTableEntry *);
28
29     void getLocalIndices(CkVec<CkArrayIndexMax> &vec);
30
31     void pup(PUP::er &p);
32     PUPable_decl(ComlibArrayListener);
33 };
34
35 #endif