bf3ab24391cc3a5dfd6f0f83409adbd52afff95a
[charm.git] / tests / charm++ / method_templates / mylib.h
1 #ifndef MYLIB_H
2 #define MYLIB_H
3
4 #include "mylib.decl.h"
5 #include <sstream>
6
7 class libArray: public CBase_libArray
8 {
9     public:
10         libArray() {}
11         libArray(CkMigrateMessage *msg) {}
12
13         // Allows client to visit and operate on library-owned data
14         // @note: Clients should supply type that provides void operator() (int) and an ostream inserter
15         template <typename T>
16         void doSomething(T t)
17         {
18             // Apply client specified operation to my chunk of data
19             for (int i = thisIndex*10; i< (thisIndex+1)*10; i++)
20                 t(i);
21             // Do something with the result
22             std::ostringstream out;
23             out << "\nlibArray[" << thisIndex << "] " << t;
24             CkPrintf("%s", out.str().c_str());
25             // Notify completion
26             contribute();
27         }
28 };
29
30 #endif // MYLIB_H
31