4#include "acme/prototype/collection/packset.h"
7template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
12 using PACK_SET_AB = packset < TYPEA, TYPEB, ARRAYB >;
13 using PACK_SET_BA = packset < TYPEB, TYPEA, ARRAYA >;
15 using ARG_TYPEA =
typename PACK_SET_AB::ARG_ELEMENT1;
16 using ARG_TYPEB =
typename PACK_SET_BA::ARG_ELEMENT1;
19 PACK_SET_AB m_packsetAB;
20 PACK_SET_BA m_packsetBA;
23 void spread(ARG_TYPEA a, ARG_TYPEB b);
26 ARRAYB & b(ARG_TYPEA a);
27 ARRAYA & a(ARG_TYPEB b);
30 ::collection::count get_a_item_count();
31 ::collection::count get_b_item_count();
32 ::collection::count get_a_pack_count();
33 ::collection::count get_b_pack_count();
42template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
43void spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
44spread(ARG_TYPEA a, ARG_TYPEB b)
46 m_packsetAB.pack(a, b);
47 m_packsetBA.pack(b, a);
50template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
51ARRAYB & spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
54 return m_packsetAB[a];
58template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
59ARRAYA & spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
62 return m_packsetBA[b];
65template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
66::collection::count spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
69 return m_packsetBA.get_item_count();
72template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
73::collection::count spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
76 return m_packsetAB.get_item_count();
79template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
80::collection::count spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
83 return m_packsetAB.get_pack_count();
86template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
87::collection::count spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::
90 return m_packsetBA.get_pack_count();
94template <
class TYPEA,
class TYPEB,
class ARRAYA,
class ARRAYB >
95void spreadset <TYPEA, TYPEB, ARRAYA, ARRAYB>::erase_all()
97 m_packsetAB.erase_all();
98 m_packsetBA.erase_all();
104using iptr_spreadset = i32_spreadset;
108using iptr_spreadset = i64_spreadset;