17 #ifndef polybori_diagram_CApplyNodeFacade_h
18 #define polybori_diagram_CApplyNodeFacade_h
40 template <
class DiagramType,
class NodePtr>
68 throw std::runtime_error(
"Operands come from different manager.");
75 template <
class MgrType>
77 return diagram(func(get<MgrType>(), *
this));
81 template <
class MgrType>
84 checkSameManager(rhs);
85 return diagram(func(get<MgrType>(), *
this, rhs));
89 template <
class MgrType>
92 checkSameManager(first);
93 checkSameManager(second);
94 return diagram(func(get<MgrType>(), *
this, first, second));
98 template <
class MgrType,
class Type>
100 return diagram(func(get<MgrType>(), *
this, value));
104 template <
class MgrType,
class ResultType>
106 return func(get<MgrType>(), *
this);
117 const diagram_type& my()
const {
118 return static_cast<const diagram_type&
>(*this);
122 template<
class MgrType>
123 MgrType
get()
const {
return my().getManager(); }
126 operator node_ptr()
const {
return my().getNode(); }