Make the MSA accumulation operations callable without an instance
authorPhil Miller <mille121@illinois.edu>
Wed, 29 Apr 2009 17:27:21 +0000 (12:27 -0500)
committerPhil Miller <mille121@illinois.edu>
Thu, 10 Dec 2009 22:22:56 +0000 (16:22 -0600)
src/libs/ck-libs/multiphaseSharedArrays/msa-common.h

index 77447abde7779ceca148c47afbf158ca68e3daf6..4e3a54e3c99d242c427e02a92e633a3500d97de3 100644 (file)
@@ -48,26 +48,26 @@ typedef enum { MSA_COL_MAJOR=0, MSA_ROW_MAJOR=1 } MSA_Array_Layout_t;
 template <class T, bool PUP_EVERY_ELEMENT=false >
 class DefaultEntry {
 public:
-    inline void accumulate(T& a, const T& b) { a += b; }
+    static inline void accumulate(T& a, const T& b) { a += b; }
     // identity for initializing at start of accumulate
-    inline T getIdentity() { return (T)0; }
-    inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
+    static inline T getIdentity() { return (T)0; }
+    static inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
 };
 
 template <class T, bool PUP_EVERY_ELEMENT=false >
 class ProductEntry {
 public:
-    inline void accumulate(T& a, const T& b) { a *= b; }
-    inline T getIdentity() { return (T)1; }
-    inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
+    static inline void accumulate(T& a, const T& b) { a *= b; }
+    static inline T getIdentity() { return (T)1; }
+    static inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
 };
 
 template <class T, T minVal, bool PUP_EVERY_ELEMENT=false >
 class MaxEntry {
 public:
-    inline void accumulate(T& a, const T& b) { a = (a<b)?b:a; }
-    inline T getIdentity() { return minVal; }
-    inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
+    static inline void accumulate(T& a, const T& b) { a = (a<b)?b:a; }
+    static inline T getIdentity() { return minVal; }
+    static inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
 };
 
 //================================================================