Class documentation of Concepts

Loading...
Searching...
No Matches
edgeMinMax.hh
Go to the documentation of this file.
1
8#ifndef hp2DedgeMinMax_hh
9#define hp2DedgeMinMax_hh
10
12#include "basics/cloneable.hh"
13
14namespace hp2D {
15
16 // ********************************************************** PolyEdgeRule **
17
23 public concepts::Cloneable {
24 public:
25 virtual PolyEdgeRule* clone() const = 0;
29 virtual void pUnderChildren(ushort& p, ushort pChild) const = 0;
33 virtual void pFromChildren(ushort& p, ushort pChild) const {
34 p = std::min(p, pChild); // seems to be equal as
35 }
39 virtual void pEdge(ushort& p, ushort pEdge) const = 0;
40 protected:
41 virtual std::ostream& info(std::ostream& os) const {
42 return os << concepts::typeOf(*this)<<"()";
43 }
44 };
45
46
47 // *********************************************************** PolyEdgeMax **
48
53 class PolyEdgeMax : public PolyEdgeRule {
54 public:
55 virtual PolyEdgeMax* clone() const { return new PolyEdgeMax(); }
59 virtual void pUnderChildren(ushort& p, ushort pChild) const {
60 p = std::max(p, pChild);
61 }
65 virtual void pFromChildren(ushort& p, ushort pChild) const {
66 p = std::max(p, pChild);
67 }
71 virtual void pEdge(ushort& p, ushort pInner) const {
72 p = std::max(p, pInner);
73 }
74 protected:
75 virtual std::ostream& info(std::ostream& os) const {
76 return os << concepts::typeOf(*this)<<"()";
77 }
78 };
79
80 // *********************************************************** PolyEdgeMin **
81
86 class PolyEdgeMin : public PolyEdgeRule {
87 public:
88 virtual PolyEdgeMin* clone() const { return new PolyEdgeMin(); }
92 virtual void pUnderChildren(ushort& p, ushort pChild) const {
93 p = std::min(p, pChild);
94 }
98 virtual void pEdge(ushort& p, ushort pInner) const {
99 p = std::min(p, pInner);
100 }
101 protected:
102 virtual std::ostream& info(std::ostream& os) const {
103 return os << concepts::typeOf(*this)<<"()";
104 }
105 };
106
107 // ********************************************** PolyEdgeMinNeighMaxChild **
108
115 public:
116 virtual PolyEdgeMinNeighMaxChild* clone() const {
117 return new PolyEdgeMinNeighMaxChild(); }
121 virtual void pUnderChildren(ushort& p, ushort pChild) const {
122 p = std::max(p, pChild);
123 }
127 virtual void pEdge(ushort& p, ushort pInner) const {
128 p = std::min(p, pInner);
129 }
130 protected:
131 virtual std::ostream& info(std::ostream& os) const {
132 return os << concepts::typeOf(*this)<<"()";
133 }
134 };
135
136} // namespace hp2D
137
138#endif // hp2DedgeMinMax_hh
virtual void pFromChildren(ushort &p, ushort pChild) const
Definition edgeMinMax.hh:65
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
Definition edgeMinMax.hh:75
virtual void pEdge(ushort &p, ushort pInner) const
Definition edgeMinMax.hh:71
virtual void pUnderChildren(ushort &p, ushort pChild) const
Definition edgeMinMax.hh:59
virtual PolyEdgeMax * clone() const
Definition edgeMinMax.hh:55
virtual void pUnderChildren(ushort &p, ushort pChild) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual void pEdge(ushort &p, ushort pInner) const
virtual PolyEdgeMinNeighMaxChild * clone() const
virtual void pEdge(ushort &p, ushort pInner) const
Definition edgeMinMax.hh:98
virtual void pUnderChildren(ushort &p, ushort pChild) const
Definition edgeMinMax.hh:92
virtual PolyEdgeMin * clone() const
Definition edgeMinMax.hh:88
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
Definition edgeMinMax.hh:41
virtual void pFromChildren(ushort &p, ushort pChild) const
Definition edgeMinMax.hh:33
virtual PolyEdgeRule * clone() const =0
virtual void pUnderChildren(ushort &p, ushort pChild) const =0
virtual void pEdge(ushort &p, ushort pEdge) const =0
std::string typeOf(const T &t)
Definition output.hh:43