14 namespace operations {
60 const std::shared_ptr<const operations::AttributeTransferStrategyBase>& other);
64 const std::shared_ptr<const operations::AttributeTransferStrategyBase>& other);
86 const std::vector<simplex::Simplex>& unmods,
87 const std::vector<simplex::Simplex>& mods)
const;
103 std::vector<std::shared_ptr<const operations::AttributeTransferStrategyBase>>
void add(std::shared_ptr< Invariant > invariant)
void set_transfer_strategy(const attribute::MeshAttributeHandle &attribute, const std::shared_ptr< const operations::AttributeTransferStrategyBase > &other)
void add_invariant(std::shared_ptr< Invariant > invariant)
virtual bool after(const std::vector< simplex::Simplex > &unmods, const std::vector< simplex::Simplex > &mods) const
void set_priority(const std::function< double(const simplex::Simplex &)> &func)
const Mesh & mesh() const
virtual PrimitiveType primitive_type() const =0
void clear_attribute_transfer_strategies()
virtual std::vector< simplex::Simplex > execute(const simplex::Simplex &simplex)=0
returns an empty vector in case of failure
std::shared_ptr< const operations::AttributeTransferStrategyBase > get_transfer_strategy(const attribute::MeshAttributeHandle &attribute)
virtual double priority(const simplex::Simplex &simplex) const
virtual void reserve_enough_simplices()
std::vector< std::shared_ptr< const operations::AttributeTransferStrategyBase > > m_attr_transfer_strategies
virtual std::vector< simplex::Simplex > operator()(const simplex::Simplex &simplex)
void add_transfer_strategy(const std::shared_ptr< const operations::AttributeTransferStrategyBase > &other)
virtual std::vector< simplex::Simplex > unmodified_primitives(const simplex::Simplex &simplex) const =0
Returns all simplices that will be potentially affected by the operation.
invariants::InvariantCollection m_invariants
virtual bool use_random_priority() const
bool m_use_random_priority
virtual bool before(const simplex::Simplex &simplex) const
virtual bool & use_random_priority()
std::function< double(const simplex::Simplex &)> m_priority
void apply_attribute_transfer(const std::vector< simplex::Simplex > &direct_mods)