45#include <OpenMesh/Core/Mesh/PolyConnectivity.hh>
46#include <OpenMesh/Core/Utils/PropertyManager.hh>
64template <
typename PredicateT>
69template <
typename PredicateT>
78 bool operator()(
const T& _t)
const {
return p_(_t); }
83template <
typename PredicateT>
86template <
typename PredicateT>
87Predicate<PredicateT> make_predicate(PredicateT&& _p) {
return { _p }; }
89template <
typename Predicate1T,
typename Predicate2T>
99 bool operator()(
const T& _t)
const {
return p1_( _t) || p2_( _t); }
105template <
typename Predicate1T,
typename Predicate2T>
114 template <
typename T>
115 bool operator()(
const T& _t)
const {
return p1_( _t) && p2_( _t); }
122template <
typename PredicateT>
130 template <
typename T>
131 bool operator()(
const T& _t)
const {
return !p1_( _t); }
136template <
typename P1,
typename P2>
142template <
typename P1,
typename P2>
143Disjunction<const P1&, P2> operator||(PredicateBase<P1>& p1, PredicateBase<P2>&& p2)
145 return Disjunction<const P1&, P2>(
static_cast<const P1&
>(p1),
static_cast<P2&&
>(p2));
148template <
typename P1,
typename P2>
149Disjunction<P1, const P2&> operator||(PredicateBase<P1>&& p1, PredicateBase<P2>& p2)
151 return Disjunction<P1, const P2&>(
static_cast<P1&&
>(p1),
static_cast<const P2&
>(p2));
154template <
typename P1,
typename P2>
155Disjunction<P1, P2> operator||(PredicateBase<P1>&& p1, PredicateBase<P2>&& p2)
157 return Disjunction<P1, P2>(
static_cast<P1&&
>(p1),
static_cast<P2&&
>(p2));
160template <
typename P1,
typename P2>
161Conjunction<const P1&, const P2&> operator&&(PredicateBase<P1>& p1, PredicateBase<P2>& p2)
163 return Conjunction<const P1&, const P2&>(
static_cast<const P1&
>(p1),
static_cast<const P2&
>(p2));
166template <
typename P1,
typename P2>
167Conjunction<const P1&, P2> operator&&(PredicateBase<P1>& p1, PredicateBase<P2>&& p2)
169 return Conjunction<const P1&, P2>(
static_cast<const P1&
>(p1),
static_cast<P2&&
>(p2));
172template <
typename P1,
typename P2>
173Conjunction<P1, const P2&> operator&&(PredicateBase<P1>&& p1, PredicateBase<P2>& p2)
175 return Conjunction<P1, const P2&>(
static_cast<P1
>(p1),
static_cast<const P2&
>(p2));
178template <
typename P1,
typename P2>
179Conjunction<P1, P2> operator&&(PredicateBase<P1>&& p1, PredicateBase<P2>&& p2)
181 return Conjunction<P1, P2>(
static_cast<P1&&
>(p1),
static_cast<P2&&
>(p2));
185Negation<const P&> operator!(PredicateBase<P>& p)
187 return Negation<const P&>(
static_cast<const P&
>(p));
191Negation<P> operator!(PredicateBase<P>&& p)
193 return Negation<P>(
static_cast<P&&
>(p));
198 template <
typename HandleType>
204 template <
typename HandleType>
210 template <
typename HandleType>
216 template <
typename HandleType>
222 template <
typename HandleType>
228 template <
typename HandleType>
234 template <
typename HandleType>
240 template <
typename HandleType>
244template <
int inner_reg,
int boundary_reg>
256template <
typename T,
typename MF>
268 template <
typename O>
269 auto operator()(
const O& _o) ->
decltype ((t_.*mf_)(_o))
271 return (t_.*mf_)(_o);
276template <
typename T,
typename MF>
283#define OM_MFW(member_function) OpenMesh::Predicates::make_member_function_wrapper(*this, &std::decay<decltype(*this)>::type::member_function)
Base class for all smart handle types that contains status related methods.
bool is_boundary() const
Returns true iff the handle is boundary.
Base class for all smart handle types that contains status related methods.
bool selected() const
Returns true iff the handle is marked as selected.
bool feature() const
Returns true iff the handle is marked as feature.
bool locked() const
Returns true iff the handle is marked as locked.
bool deleted() const
Returns true iff the handle is marked as deleted.
bool tagged() const
Returns true iff the handle is marked as tagged.
bool tagged2() const
Returns true iff the handle is marked as tagged2.
bool hidden() const
Returns true iff the handle is marked as hidden.
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
uint valence() const
Returns valence of the vertex.