42class BasicItemPairGroupComputeFunctor
55 : m_item_kind(ik), m_sub_item_kind(sik), m_link_item_kind(lik)
61 bool operator<(
const AdjacencyType& rhs)
const
63 if (m_item_kind != rhs.m_item_kind)
64 return m_item_kind < rhs.m_item_kind;
65 if (m_sub_item_kind != rhs.m_sub_item_kind)
66 return m_sub_item_kind < rhs.m_sub_item_kind;
67 return m_link_item_kind < rhs.m_link_item_kind;
71 typedef void (BasicItemPairGroupComputeFunctor::*ComputeFunctor)(
ItemPairGroupImpl* array);
73 class AdjacencyComputeFunctor
78 AdjacencyComputeFunctor(BasicItemPairGroupComputeFunctor* ptr,
80 : m_ptr(ptr), m_array(array), m_func_ptr(func_ptr) {}
85 (m_ptr->*m_func_ptr)(m_array);
88 BasicItemPairGroupComputeFunctor* m_ptr;
90 ComputeFunctor m_func_ptr;
104 std::map<AdjacencyType, ComputeFunctor> m_compute_adjacency_functions;
121 void _computeAdjacency(
ItemPairGroupImpl* array, GetItemVectorViewFunctor get_item_enumerator,
122 GetItemVectorViewFunctor get_sub_item_enumerator);