codac 1.5.6
Loading...
Searching...
No Matches
codac2_SepAction.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include <type_traits>
13#include "codac2_Sep.h"
14#include "codac2_Collection.h"
15#include "codac2_OctaSym.h"
16
17namespace codac2
18{
19 class SepAction : public Sep<SepAction>
20 {
21 public:
22
23 template<typename S>
24 requires IsSepBaseOrPtr<S>
25 SepAction(const S& s, const OctaSym& a)
26 : Sep<SepAction>(a.size()), _sep(s), _s(a), __s(a.invert())
27 {
28 assert_release(size_of(s) == (Index)a.size());
29 }
30
31 BoxPair separate(const IntervalVector& x) const;
32
33 protected:
34
35 const Collection<SepBase> _sep;
36 const OctaSym _s, __s;
37 };
38
39 template<typename S>
40 requires is_sep_v<S>
41 inline SepAction OctaSym::operator()(const S& s) const
42 {
43 return SepAction(s, *this);
44 }
45}