base of union-find data structures: stores only the parent forest and the operations that depend on it alone, so it is shared by the sequential UnionFind and the ParallelUnionFind More...
Public Member Functions | |
| auto | assign_from_another (_other:&meshlib::BaseUnionFind_MR_UndirectedEdgeId) -> &mut meshlib::BaseUnionFind_MR_UndirectedEdgeId |
| auto | size () const -> usize |
| void | reset (size:usize) |
| auto | add () -> meshlib::UndirectedEdgeId |
| auto | unite_unbalanced (first:meshlib::UndirectedEdgeId, second:meshlib::UndirectedEdgeId) -> meshlib::Owned< meshlib::std_pair_MR_UndirectedEdgeId_bool > |
| auto | united (first:meshlib::UndirectedEdgeId, second:meshlib::UndirectedEdgeId) -> bool |
| auto | is_root (a:meshlib::UndirectedEdgeId) const -> bool |
| auto | parent (a:meshlib::UndirectedEdgeId) const -> meshlib::UndirectedEdgeId |
| auto | find (a:meshlib::UndirectedEdgeId) -> meshlib::UndirectedEdgeId |
| auto | find_update_range (a:meshlib::UndirectedEdgeId, begin:meshlib::UndirectedEdgeId, end:meshlib::UndirectedEdgeId) -> meshlib::UndirectedEdgeId |
| auto | roots () -> &meshlib::UndirectedEdgeMap |
| auto | parents () const -> &meshlib::UndirectedEdgeMap |
Static Public Member Functions | |
| static auto | new () -> meshlib::Owned< meshlib::BaseUnionFind_MR_UndirectedEdgeId > |
| static auto | construct_from_another (_other:&meshlib::BaseUnionFind_MR_UndirectedEdgeId) -> meshlib::Owned< meshlib::BaseUnionFind_MR_UndirectedEdgeId > |
| Static Public Member Functions inherited from meshlib::CppClass | |
| static void | destroy (ptr:*mut Self) |
| Static Public Member Functions inherited from meshlib::CppCopy | |
| static auto | copy (ptr:*const Self) -> *mut Self |
base of union-find data structures: stores only the parent forest and the operations that depend on it alone, so it is shared by the sequential UnionFind and the ParallelUnionFind
| I | is the identifier of a set's element, e.g. FaceId |
Generated from class MR::BaseUnionFind<MR::UndirectedEdgeId>. Derived classes: Direct: (non-virtual) MR::UnionFind<MR::UndirectedEdgeId>
Generated from class MR::BaseUnionFind<MR::UndirectedEdgeId>. Heap-allocated instances are held in Owned<BaseUnionFind_MR_UndirectedEdgeId>.
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::add | ( | ) | -> meshlib::UndirectedEdgeId |
adds new element in its own disjoint set, returns its identifier Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::add.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_add().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::assign_from_another | ( | _other:&meshlib::BaseUnionFind_MR_UndirectedEdgeId | ) | -> &mut meshlib::BaseUnionFind_MR_UndirectedEdgeId |
Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::operator=.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_AssignFromAnother(). The reference to things referred to by the parameter _other (if any) might be preserved in this object. The reference to this object might be preserved in the return value.
|
static |
Generated from constructor MR::BaseUnionFind<MR::UndirectedEdgeId>::BaseUnionFind.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_ConstructFromAnother(). The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object.
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::find | ( | a:meshlib::UndirectedEdgeId | ) | -> meshlib::UndirectedEdgeId |
finds the root of the set containing given element with optimizing data structure updates Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::find.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_find().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::find_update_range | ( | a:meshlib::UndirectedEdgeId | , |
| begin:meshlib::UndirectedEdgeId | , | ||
| end:meshlib::UndirectedEdgeId | ) -> meshlib::UndirectedEdgeId |
finds the root of the set containing given element with optimizing data structure in the range [begin, end) Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::findUpdateRange.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_findUpdateRange().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::is_root | ( | a:meshlib::UndirectedEdgeId | ) | const -> bool |
returns true if given element is the root of some set Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::isRoot.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_isRoot().
|
static |
Constructs an empty (default-constructed) instance.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_DefaultConstruct().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::parent | ( | a:meshlib::UndirectedEdgeId | ) | const -> meshlib::UndirectedEdgeId |
return parent element of this element, which is equal to given element only for set's root Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::parent.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_parent().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::parents | ( | ) | const -> &meshlib::UndirectedEdgeMap |
gets the parents of all elements as is Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::parents.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_parents().
| void meshlib::BaseUnionFind_MR_UndirectedEdgeId::reset | ( | size:usize | ) |
resets union-find to represent given number of elements, each element is the only one in its disjoint set Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::reset.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_reset().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::roots | ( | ) | -> &meshlib::UndirectedEdgeMap |
sets the root of corresponding set as the parent of each element, then returns the vector Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::roots.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_roots().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::size | ( | ) | const -> usize |
returns the number of elements in union-find Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::size.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_size().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::unite_unbalanced | ( | first:meshlib::UndirectedEdgeId | , |
| second:meshlib::UndirectedEdgeId | ) -> meshlib::Owned< meshlib::std_pair_MR_UndirectedEdgeId_bool > |
unites the two sets containing given elements WITHOUT balancing by set size (BaseUnionFind keeps no sizes): it simply attaches one set's root under the other's, so chained calls can build taller trees. Prefer UnionFind::unite, which selects the new root by set size, when many unions follow one another.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_uniteUnbalanced().
| auto meshlib::BaseUnionFind_MR_UndirectedEdgeId::united | ( | first:meshlib::UndirectedEdgeId | , |
| second:meshlib::UndirectedEdgeId | ) -> bool |
returns true if given two elements are from one set Generated from method MR::BaseUnionFind<MR::UndirectedEdgeId>::united.
Calls MR_BaseUnionFind_MR_UndirectedEdgeId_united().