Tree operator functions.
Definition in file tree/function/operators.hpp.
#include "genesis/tree/tree.hpp"
#include <cassert>
#include <functional>
#include <iosfwd>
#include <memory>
#include <typeinfo>
Go to the source code of this file.
Namespaces | |
genesis | |
Container namespace for all symbols of genesis in order to keep them separate when used as a library. | |
genesis::tree | |
Functions | |
bool | belongs_to (Subtree const &subt, Tree const &tree) |
Return whether the Subtree belongs to the Tree, i.e., whether its link is owned by the Tree. More... | |
bool | belongs_to (Tree const &tree, Subtree const &subt) |
Return whether the Subtree belongs to the Tree, i.e., whether its link is owned by the Tree. More... | |
bool | belongs_to (Tree const &tree, TreeEdge const &edge) |
Return whether the TreeEdge belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
bool | belongs_to (Tree const &tree, TreeLink const &link) |
Return whether the TreeLink belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
bool | belongs_to (Tree const &tree, TreeNode const &node) |
Return whether the TreeNode belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
bool | belongs_to (TreeEdge const &edge, Tree const &tree) |
Return whether the TreeEdge belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
bool | belongs_to (TreeLink const &link, Tree const &tree) |
Return whether the TreeLink belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
bool | belongs_to (TreeNode const &node, Tree const &tree) |
Return whether the TreeNode belongs to the Tree, i.e., whether it is owned by the Tree. More... | |
Tree | convert (Tree const &source, std::function< std::unique_ptr< BaseNodeData >(BaseNodeData const &node_data)> node_data_converter, std::function< std::unique_ptr< BaseEdgeData >(BaseEdgeData const &edge_data)> edge_data_converter) |
Create a tree with the same topology as the source tree, while converting its data. More... | |
TreeEdge * | edge_between (TreeNode &lhs, TreeNode &rhs) |
Return the TreeEdge between two TreeNode&s, if they are neighbours, or nullptr otherwise. More... | |
TreeEdge const * | edge_between (TreeNode const &lhs, TreeNode const &rhs) |
Return the TreeEdge between two TreeNode&s, if they are neighbours, or nullptr otherwise. More... | |
bool | equal (std::vector< Tree > const &trees, std::function< bool(TreeNode const &, TreeNode const &) > node_comparator, std::function< bool(TreeEdge const &, TreeEdge const &) > edge_comparator) |
Compare all trees for equality given binary comparator functionals for their nodes and edges. More... | |
bool | equal (Tree const &lhs, Tree const &rhs, std::function< bool(TreeNode const &, TreeNode const &) > node_comparator, std::function< bool(TreeEdge const &, TreeEdge const &) > edge_comparator) |
Compare two trees for equality given binary comparator functionals for their nodes and edges. More... | |
bool | identical_topology (std::vector< Tree > const &trees, bool identical_indices=true) |
Return whether all trees have an identical topology. More... | |
bool | identical_topology (Tree const &lhs, Tree const &rhs, bool identical_indices=true) |
Return whether both trees have an identical topology. More... | |
std::string | print_gist (Tree const &tree, long items) |
std::string | print_info (Tree const &tree) |
std::string | print_info (TreeEdge const &edge) |
std::string | print_info (TreeLink const &link) |
std::string | print_info (TreeNode const &node) |
template<class NodeDataType , class EdgeDataType > | |
bool | tree_data_is (Tree const &tree, bool allow_null=false) |
Check whether the data of the nodes and edges of the Tree are exactly of the specified data types. More... | |
template<class NodeDataType , class EdgeDataType > | |
bool | tree_data_is_derived_from (Tree const &tree, bool allow_null=false) |
Check whether the data of the nodes and edges of the Tree are derived from the specified data types. More... | |
bool | validate_topology (Tree const &tree) |
Validate that all internal pointers of the Tree elements (TreeLinks, TreeNodes, TreeEdges) to each other are correct and that some other invariants are met. More... | |