Add a readonly definition to the module, to make sure the inclusion guards on it...
[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 extern int moduleRo;
8
9 class libArray: public CBase_libArray
10 {
11     public:
12         libArray() {}
13         libArray(CkMigrateMessage *msg) {}
14
15         // Allows client to visit and operate on library-owned data
16         // @note: Clients should supply type that provides void operator() (int) and an ostream inserter
17         template <typename T>
18         void doSomething(T t)
19         {
20             // Apply client specified operation to my chunk of data
21             for (int i = thisIndex*10; i< (thisIndex+1)*10; i++)
22                 t(i);
23             // Do something with the result
24             std::ostringstream out;
25             out << "\nlibArray[" << thisIndex << "] " << t;
26             CkPrintf("%s", out.str().c_str());
27             // Notify completion
28             contribute();
29         }
30 };
31
32 #endif // MYLIB_H
33