getting rid of the windows compile error
[charm.git] / src / conv-com / convcomlibstrategy.C
1
2 #include <converse.h>
3 #include "convcomlibstrategy.h"
4
5 //Class that defines the entry methods that a strategy must define.
6 //To write a new strategy inherit from this class and define the
7 //virtual methods.  Every strategy can also define its own constructor
8 //and have any number of arguments. Also call the parent class methods
9 //in those methods. The strategies defined here can only be used in
10 //converse. For Charm++ strategies please see ck-core/ComlibStraetgy.h
11
12 Strategy::Strategy() : PUP::able() {
13     myInstanceID = 0;
14     type = CONVERSE_STRATEGY;
15     converseStrategy = this;
16     isStrategyBracketed = 0;
17 };
18
19 //Each strategy must define his own Pup interface.
20 void Strategy::pup(PUP::er &p){ 
21     
22     //PUP::able::pup(p);
23
24     p | isStrategyBracketed;
25     p | type;
26 }
27
28 //Message holder functions. Message holder is a wrapper around a
29 //message. Has other useful data like destination processor list for a
30 //multicast etc.
31
32 void MessageHolder::pup(PUP::er &p) {
33     //PUP::able::pup(p);
34
35     p | dest_proc;
36     p | isDummy;
37     p | size;
38     p | npes;    
39
40     if(p.isUnpacking()) {
41         data = (char *)CmiAlloc(size);
42         
43         if(npes >0)
44             pelist = new int[npes];
45     }
46
47     p(data, size);
48     if(npes > 0)
49         p(pelist, npes);    
50     else
51         pelist = 0;
52 }
53
54 void StrategyWrapper::pup (PUP::er &p) {
55
56     //CkPrintf("In PUP of StrategyWrapper\n");
57
58     p | nstrats;
59     if(p.isUnpacking())
60         s_table = new Strategy * [nstrats];
61     
62     for(int count = 0; count < nstrats; count ++)
63         p | s_table[count];
64 }
65
66
67 StrategyTableEntry::StrategyTableEntry() {
68     strategy = NULL;
69     
70     numElements = 0;   //used by the array listener, 
71                        //could also be used for other objects
72     elementCount = 0;  //Count of how many elements have deposited
73                        //their data
74     nEndItr = 0;       //#elements that called end iteration
75     call_doneInserting = 0;
76 }
77
78
79 PUPable_def(Strategy);
80 PUPable_def(MessageHolder);