TreeNode< State::ExprData > Class Referencefinal

The TreeNode<State::ExprData> class. More...

Inheritance diagram for TreeNode< State::ExprData >:
State::ExprData score::VariantBasedNode< Relation, Pulse, BinaryOperator, UnaryOperator >

Detailed Description

The TreeNode<State::ExprData> class.

This class is specialized from TreeNode<T> because we want to have an additional check : a node is a leaf iff a node is a State::Relation

TODO enforce the invariant of children.size <= 2 (since it's a binary tree)

Public Types

using iterator = typename std::list< TreeNode >::iterator
 
using const_iterator = typename std::list< TreeNode >::const_iterator
 
- Public Types inherited from score::VariantBasedNode< Relation, Pulse, BinaryOperator, UnaryOperator >
using variant_type = ossia::nullable_variant< InvisibleRootNode, Args... >
 

Public Member Functions

QString toString () const
 
QString toPrettyString () const
 
iterator begin ()
 
const_iterator begin () const
 
const_iterator cbegin () const
 
TreeNode< State::ExprData > & front ()
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 
TreeNode< State::ExprData > & back ()
 
 TreeNode (const TreeNode< State::ExprData > &other)
 
 TreeNode (TreeNode< State::ExprData > &&other)
 
TreeNode< State::ExprData > & operator= (const TreeNode< State::ExprData > &source)
 
TreeNode< State::ExprData > & operator= (TreeNode< State::ExprData > &&source)
 
 TreeNode (State::ExprData data, TreeNode *parent)
 
 TreeNode (TreeNode source, TreeNode *parent)
 
void push_back (const TreeNode &child)
 
void push_back (TreeNode &&child)
 
template<typename... Args>
auto & emplace_back (Args &&... args)
 
template<typename... Args>
auto & emplace (Args &&... args)
 
TreeNodeparent () const
 
bool hasChild (std::size_t index) const
 
TreeNodechildAt (int index)
 
const TreeNodechildAt (int index) const
 
int indexOfChild (const TreeNode *child) const
 
int childCount () const
 
bool hasChildren () const
 
std::list< TreeNode > & children ()
 
const std::list< TreeNode > & children () const
 
void removeChild (const_iterator it)
 
void setParent (TreeNode *parent)
 
- Public Member Functions inherited from State::ExprData
 ExprData (const ExprData &)=default
 
 ExprData (ExprData &&)=default
 
ExprDataoperator= (const ExprData &)=default
 
ExprDataoperator= (ExprData &&)=default
 
 ExprData (Relation data)
 
 ExprData (Pulse data)
 
 ExprData (BinaryOperator data)
 
 ExprData (UnaryOperator data)
 
 ExprData (score::VariantBasedNode< Relation, Pulse, BinaryOperator, UnaryOperator > data)
 
QString toString () const
 
- Public Member Functions inherited from score::VariantBasedNode< Relation, Pulse, BinaryOperator, UnaryOperator >
 VariantBasedNode (const VariantBasedNode &t)=default
 
 VariantBasedNode (VariantBasedNode &&t) noexcept=default
 
 VariantBasedNode (const T &t)
 
VariantBasedNodeoperator= (const VariantBasedNode &t)=default
 
bool is () const
 is Checks the type of the node. More...
 
const T * target () const
 
T * target ()
 
void set (const T &t)
 
const T & get () const
 
T & get ()
 
auto which () const
 
auto & impl () const
 
auto & impl ()
 
bool operator== (const VariantBasedNode &other) const
 

Protected Attributes

TreeNode< State::ExprData > * m_parent {}
 
std::list< TreeNodem_children
 
- Protected Attributes inherited from score::VariantBasedNode< Relation, Pulse, BinaryOperator, UnaryOperator >
ossia::nullable_variant< InvisibleRootNode, Args... > m_data
 

Friends

SCORE_LIB_STATE_EXPORT friend bool operator!= (const TreeNode< State::ExprData > &lhs, const TreeNode< State::ExprData > &rhs)
 
SCORE_LIB_STATE_EXPORT friend bool operator== (const TreeNode< State::ExprData > &lhs, const TreeNode< State::ExprData > &rhs)
 

The documentation for this class was generated from the following files: