codac 1.5.6
Loading...
Searching...
No Matches
codac2_set_constants.h
Go to the documentation of this file.
1
9
10#pragma once
11
12namespace codac2
13{
14 template<typename T>
15 class ConstValueSetExpr : public SetExpr
16 {
17 public:
18
19 ConstValueSetExpr(const T& x)
20 : _x(x)
21 { }
22
23 ConstValueSetExpr(const ConstValueSetExpr<T>& e) = default;
24
25 std::shared_ptr<ExprBase> copy() const
26 {
27 return std::make_shared<ConstValueSetExpr<T>>(*this);
28 }
29
30 void replace_expr(const ExprID& old_expr_id, const std::shared_ptr<ExprBase>& new_expr)
31 { }
32
33 virtual bool belongs_to_args_list(const FunctionArgsList& args) const
34 {
35 return true;
36 }
37
38 std::shared_ptr<CtcBase<IntervalVector>> create_ctc(const FunctionArgsList& args, const std::vector<std::shared_ptr<CtcBase<IntervalVector>>>& x) const
39 {
40 return std::make_shared<CtcWrapper<T>>(_x);
41 }
42
43 std::shared_ptr<SepBase> create_sep(const FunctionArgsList& args, const std::vector<std::shared_ptr<SepBase>>& x) const
44 {
45 return std::make_shared<SepWrapper<T>>(_x);
46 }
47
48 operator std::shared_ptr<SetExpr>() const
49 {
50 return std::dynamic_pointer_cast<SetExpr>(this->copy());
51 }
52
53 protected:
54
55 const T _x;
56 };
57
58 template<typename T>
59 std::shared_ptr<SetExpr> const_set(const T& x)
60 {
61 return std::make_shared<ConstValueSetExpr<T>>(x);
62 }
63}