00001 00028 #ifndef GALOIS_RUNTIME_FOREACHTRAITS_H 00029 #define GALOIS_RUNTIME_FOREACHTRAITS_H 00030 00031 #include "Galois/TypeTraits.h" 00032 00033 namespace Galois { 00034 namespace Runtime { 00035 namespace { 00036 template<typename FunctionTy> 00037 struct ForEachTraits { 00038 enum { 00039 NeedsStats = !Galois::does_not_need_stats<FunctionTy>::value, 00040 NeedsBreak = Galois::needs_parallel_break<FunctionTy>::value, 00041 NeedsPush = !Galois::does_not_need_push<FunctionTy>::value, 00042 NeedsPIA = Galois::needs_per_iter_alloc<FunctionTy>::value, 00043 NeedsAborts = !Galois::does_not_need_aborts<FunctionTy>::value 00044 }; 00045 }; 00046 00047 } 00048 } 00049 } // end namespace Galois 00050 00051 #endif // GALOIS_RUNTIME_FOREACHTRAITS_H