25#ifdef REALM_ON_WINDOWS
26#define REALM_PMTA_DECL(structtype, membertype, name) typename name
27#define REALM_PMTA_DEFN(structtype, membertype, name) \
28 struct name##_pmta { \
29 static membertype &deref(structtype *obj) { return obj->name; } \
30 static const membertype &deref(const structtype *obj) { return obj->name; } \
32#define REALM_PMTA_USE(structtype, name) name##_pmta
33#define REALM_PMTA_DEREF(obj, ptrname) (ptrname::deref(obj))
35#define REALM_PMTA_DECL(structtype, membertype, name) membertype structtype::*name
38#define REALM_PMTA_DEFN(structtype, membertype, name) typedef int pgi_appeasement_##name
40#define REALM_PMTA_DEFN(structtype, membertype, name)
42#define REALM_PMTA_USE(structtype, name) &structtype::name
43#define REALM_PMTA_DEREF(obj, ptrname) ((obj)->*(ptrname))
58#ifdef DEBUG_REALM_LISTS
65 template <
typename T, REALM_PMTA_DECL(T, IntrusiveListLink<T>, LINK),
typename LT>
79 template <
typename LT2>
83 template <
typename LT2>
101 template <
typename T>
109#ifdef DEBUG_REALM_LISTS
116 template <
typename T,
typename PT,
134 template <
typename LT2>
138 template <
typename LT2>
156 template <
typename CALLABLE>
157 void foreach(CALLABLE &cb);
167 template <
typename T,
typename PT,
175#include "realm/lists.inl"
IntrusiveList< T, LINK, LT > & operator=(const IntrusiveList< T, LINK, LT > ©_from)
void swap(IntrusiveList< T, LINK, LT2 > &swap_with)
LT lock
Definition lists.h:96
void push_front(T *new_entry)
void absorb_append(IntrusiveList< T, LINK, LT2 > &take_from)
void push_back(T *new_entry)
IntrusiveListLink< T > head
Definition lists.h:97
IntrusiveList(const IntrusiveList< T, LINK, LT > ©_from)
T ITEMTYPE
Definition lists.h:68
IntrusiveListLink< T > * lastlink
Definition lists.h:98
LT LOCKTYPE
Definition lists.h:69
T ITEMTYPE
Definition lists.h:121
bool empty(PT min_priority) const
T * pop_front(PT min_priority)
void absorb_append(IntrusivePriorityList< T, PT, LINK, PRI, LT2 > &take_from)
IntrusivePriorityList(const IntrusivePriorityList< T, PT, LINK, PRI, LT > ©_from)
void push_back(T *new_entry)
void push_front(T *new_entry)
~IntrusivePriorityList(void)
void swap(IntrusivePriorityList< T, PT, LINK, PRI, LT2 > &swap_with)
IntrusivePriorityList< T, PT, LINK, PRI, LT > & operator=(const IntrusivePriorityList< T, PT, LINK, PRI, LT > ©_from)
LT LOCKTYPE
Definition lists.h:123
IntrusivePriorityList(void)
PT PRITYPE
Definition lists.h:122
T * head
Definition lists.h:163
LT lock
Definition lists.h:162
#define REALM_PMTA_DECL(structtype, membertype, name)
Definition lists.h:35
Definition activemsg.h:38
std::ostream & operator<<(std::ostream &os, const DenseRectangleList< N, T > &drl)
T * next
Definition lists.h:57
IntrusivePriorityListLink(void)
T * next_within_pri
Definition lists.h:106
~IntrusivePriorityListLink(void)
T ** lastlink_within_pri
Definition lists.h:107
T * next_lower_pri
Definition lists.h:108