4#include <lal/graphs/free_tree.hpp>
5#include <lal/graphs/rooted_tree.hpp>
80 bool is_free = std::is_base_of_v<graphs::free_tree, tree_type>,
82 std::is_base_of_v<graphs::free_tree, tree_type> ||
83 std::is_base_of_v<graphs::rooted_tree, tree_type>,
90 typedef std::conditional_t<is_free, graphs::free_tree, graphs::rooted_tree>
155 t.calculate_tree_type();
159 if constexpr (is_free) {
164 if constexpr (not is_free) {
166 t.calculate_size_subtrees();
Base class for tree generators.
Definition tree_generator.hpp:87
void set_calculate_tree_type(bool v) noexcept
Should the tree be classified into types?
Definition tree_generator.hpp:232
_tree_generator & operator=(const _tree_generator &Gen)=default
Default copy assignment operator.
std::conditional_t< is_free, graphs::free_tree, graphs::rooted_tree > tree_type_t
Shorthand for the type of tree this class returns.
Definition tree_generator.hpp:91
bool m_calculate_size_subtrees
Calculate the size of the subtrees of the generated rooted tree.
Definition tree_generator.hpp:250
_tree_generator(const _tree_generator &Gen)=default
Default copy constructor.
void set_normalise_tree(bool v) noexcept
Should trees be normalised?
Definition tree_generator.hpp:216
bool m_normalise_tree
Normalise the generated tree.
Definition tree_generator.hpp:248
void set_calculate_size_subtrees(bool v) noexcept
Should the size of the subtrees be calculated?
Definition tree_generator.hpp:223
_tree_generator(_tree_generator &&Gen)=default
Default move constructor.
tree_type_t get_tree() noexcept
Retrieve the generated tree.
Definition tree_generator.hpp:146
virtual tree_type_t yield_tree() noexcept=0
Yields a tree, advancing the generator if necessary.
bool m_calculate_tree_type
Calculate the type of tree of the generated tree.
Definition tree_generator.hpp:252
_tree_generator(uint32_t n) noexcept
Constructor with number of nodes.
Definition tree_generator.hpp:100
virtual ~_tree_generator()=default
Default destructor.
virtual tree_type_t __get_tree() noexcept=0
Retrieve the generated tree.
void deactivate_all_postprocessing_actions() noexcept
Deactivates all postprocessing actions.
Definition tree_generator.hpp:204
void activate_all_postprocessing_actions() noexcept
Activates all postprocessing actions.
Definition tree_generator.hpp:192
const uint32_t m_n
Number of vertices.
Definition tree_generator.hpp:245
tree_type
Enumeration of several types of trees.
Definition tree_type.hpp:55
Main namespace of the library.
Definition definitions.hpp:48