21 typedef _Val value_type;
22 typedef _SubVal subvalue_type;
27 typedef std::pair<_Region,_SubVal> _CenterPt;
29 _Region(_Acc
const& __acc=_Acc(),
const _Cmp& __cmp=_Cmp())
30 : _M_cmp(__acc), _M_acc(__cmp) {}
32 template <
typename Val>
33 _Region(Val
const& __V,
34 _Acc
const& __acc=_Acc(),
const _Cmp& __cmp=_Cmp())
35 : _M_acc(__acc), _M_cmp(__cmp)
37 for (
size_t __i = 0; __i != __K; ++__i)
39 _M_low_bounds[__i] = _M_high_bounds[__i] = _M_acc(__V,__i);
43 template <
typename Val>
44 _Region(Val
const& __V, subvalue_type
const& __R,
45 _Acc
const& __acc=_Acc(),
const _Cmp& __cmp=_Cmp())
46 : _M_acc(__acc), _M_cmp(__cmp)
48 for (
size_t __i = 0; __i != __K; ++__i)
50 _M_low_bounds[__i] = _M_acc(__V,__i) - __R;
51 _M_high_bounds[__i] = _M_acc(__V,__i) + __R;
56 intersects_with(_CenterPt
const& __THAT)
const
58 for (
size_t __i = 0; __i != __K; ++__i)
66 if (_M_cmp(__THAT.first._M_low_bounds[__i], _M_low_bounds[__i] - __THAT.second)
67 || _M_cmp(_M_high_bounds[__i] + __THAT.second, __THAT.first._M_low_bounds[__i]))
74 intersects_with(_Region
const& __THAT)
const
76 for (
size_t __i = 0; __i != __K; ++__i)
78 if (_M_cmp(__THAT._M_high_bounds[__i], _M_low_bounds[__i])
79 || _M_cmp(_M_high_bounds[__i], __THAT._M_low_bounds[__i]))
86 encloses(value_type
const& __V)
const
88 for (
size_t __i = 0; __i != __K; ++__i)
90 if (_M_cmp(_M_acc(__V, __i), _M_low_bounds[__i])
91 || _M_cmp(_M_high_bounds[__i], _M_acc(__V, __i)))
98 set_high_bound(value_type
const& __V,
size_t const __L)
100 _M_high_bounds[__L % __K] = _M_acc(__V, __L % __K);
105 set_low_bound(value_type
const& __V,
size_t const __L)
107 _M_low_bounds[__L % __K] = _M_acc(__V, __L % __K);
111 subvalue_type _M_low_bounds[__K], _M_high_bounds[__K];