FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Friends | List of all members
freetensor::SubTreeList< T, POLICY > Class Template Reference

#include <sub_tree.h>

Public Member Functions

 SubTreeList (const ChildOf &c)
 
template<std::derived_from< T > U>
 SubTreeList (const std::vector< Ref< U > > &objs)
 
template<std::derived_from< T > U>
 SubTreeList (std::vector< Ref< U > > &&objs)
 
template<std::derived_from< T > U>
 SubTreeList (std::initializer_list< Ref< U > > objs)
 
SubTreeListoperator= (SubTreeList &&other)
 
SubTreeListoperator= (const SubTreeList &other)
 
template<NullPolicy OTHER_POLICY>
SubTreeListoperator= (SubTreeList< T, OTHER_POLICY > &&other)
 
template<NullPolicy OTHER_POLICY>
SubTreeListoperator= (const SubTreeList< T, OTHER_POLICY > &other)
 
SubTreeListoperator= (std::initializer_list< Ref< T > > &&objs)
 
template<class U >
requires std::derived_from<T, U>
 operator std::vector< Ref< U > > () const
 
auto begin ()
 
auto begin () const
 
auto end ()
 
auto end () const
 
auto rbegin ()
 
auto rbegin () const
 
auto rend ()
 
auto rend () const
 
auto size () const
 
auto empty () const
 
template<class U >
auto & operator[] (U &&i)
 
template<class U >
const auto & operator[] (U &&i) const
 
template<class U >
auto & at (U &&i)
 
template<class U >
const auto & at (U &&i) const
 
auto & front ()
 
const auto & front () const
 
auto & back ()
 
const auto & back () const
 
template<class U >
void emplace_back (U &&x)
 
template<class U >
void push_back (U &&x)
 
template<class... U>
auto insert (U &&...i)
 
template<class U >
auto erase (U &&i)
 
void pop_back ()
 
template<class U >
void reserve (U &&x)
 
void clear ()
 
 SubTreeList (SubTreeList &&other)
 
template<NullPolicy OTHER_POLICY>
 SubTreeList (SubTreeList< T, OTHER_POLICY > &&other)
 
 SubTreeList (const SubTreeList &other)
 
template<NullPolicy OTHER_POLICY>
 SubTreeList (const SubTreeList< T, OTHER_POLICY > &other)
 

Friends

template<class , NullPolicy >
class SubTree
 

Detailed Description

template<class T, NullPolicy POLICY = NullPolicy::NotNull>
class freetensor::SubTreeList< T, POLICY >

A list of SubTree

This class can be used as a list of its inner AST nodes

Constructor & Destructor Documentation

◆ SubTreeList() [1/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( const ChildOf c)
inline

◆ SubTreeList() [2/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<std::derived_from< T > U>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( const std::vector< Ref< U > > &  objs)
inline

◆ SubTreeList() [3/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<std::derived_from< T > U>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( std::vector< Ref< U > > &&  objs)
inline

◆ SubTreeList() [4/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<std::derived_from< T > U>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( std::initializer_list< Ref< U > >  objs)
inline

◆ SubTreeList() [5/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( SubTreeList< T, POLICY > &&  other)
inline

Move-constructors are called when constructing a SubTreeList, so we follow the normal rules of moving an object. No copying of the AST is performed here.

◆ SubTreeList() [6/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<NullPolicy OTHER_POLICY>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( SubTreeList< T, OTHER_POLICY > &&  other)
inline

◆ SubTreeList() [7/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( const SubTreeList< T, POLICY > &  other)
inlineexplicit

For a SubTreeList y, auto x = y will result in a deep copy of the entire SubTreeList. We avoid this misuse by making the copy constructor explicit. Please use std::vector<Ref<T>> x = y or auto &&x = y instead

◆ SubTreeList() [8/8]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<NullPolicy OTHER_POLICY>
freetensor::SubTreeList< T, POLICY >::SubTreeList ( const SubTreeList< T, OTHER_POLICY > &  other)
inlineexplicit

Member Function Documentation

◆ at() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
auto & freetensor::SubTreeList< T, POLICY >::at ( U &&  i)
inline

◆ at() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
const auto & freetensor::SubTreeList< T, POLICY >::at ( U &&  i) const
inline

◆ back() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto & freetensor::SubTreeList< T, POLICY >::back ( )
inline

◆ back() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
const auto & freetensor::SubTreeList< T, POLICY >::back ( ) const
inline

◆ begin() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::begin ( )
inline

◆ begin() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::begin ( ) const
inline

◆ clear()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
void freetensor::SubTreeList< T, POLICY >::clear ( )
inline

◆ emplace_back()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
void freetensor::SubTreeList< T, POLICY >::emplace_back ( U &&  x)
inline

◆ empty()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::empty ( ) const
inline

◆ end() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::end ( )
inline

◆ end() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::end ( ) const
inline

◆ erase()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
auto freetensor::SubTreeList< T, POLICY >::erase ( U &&  i)
inline

◆ front() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto & freetensor::SubTreeList< T, POLICY >::front ( )
inline

◆ front() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
const auto & freetensor::SubTreeList< T, POLICY >::front ( ) const
inline

◆ insert()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class... U>
auto freetensor::SubTreeList< T, POLICY >::insert ( U &&...  i)
inline

◆ operator std::vector< Ref< U > >()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
requires std::derived_from<T, U>
freetensor::SubTreeList< T, POLICY >::operator std::vector< Ref< U > > ( ) const
inline

◆ operator=() [1/5]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
SubTreeList & freetensor::SubTreeList< T, POLICY >::operator= ( const SubTreeList< T, POLICY > &  other)
inline

◆ operator=() [2/5]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<NullPolicy OTHER_POLICY>
SubTreeList & freetensor::SubTreeList< T, POLICY >::operator= ( const SubTreeList< T, OTHER_POLICY > &  other)
inline

◆ operator=() [3/5]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
SubTreeList & freetensor::SubTreeList< T, POLICY >::operator= ( std::initializer_list< Ref< T > > &&  objs)
inline

◆ operator=() [4/5]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
SubTreeList & freetensor::SubTreeList< T, POLICY >::operator= ( SubTreeList< T, POLICY > &&  other)
inline

◆ operator=() [5/5]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<NullPolicy OTHER_POLICY>
SubTreeList & freetensor::SubTreeList< T, POLICY >::operator= ( SubTreeList< T, OTHER_POLICY > &&  other)
inline

◆ operator[]() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
auto & freetensor::SubTreeList< T, POLICY >::operator[] ( U &&  i)
inline

◆ operator[]() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
const auto & freetensor::SubTreeList< T, POLICY >::operator[] ( U &&  i) const
inline

◆ pop_back()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
void freetensor::SubTreeList< T, POLICY >::pop_back ( )
inline

◆ push_back()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
void freetensor::SubTreeList< T, POLICY >::push_back ( U &&  x)
inline

◆ rbegin() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::rbegin ( )
inline

◆ rbegin() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::rbegin ( ) const
inline

◆ rend() [1/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::rend ( )
inline

◆ rend() [2/2]

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::rend ( ) const
inline

◆ reserve()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class U >
void freetensor::SubTreeList< T, POLICY >::reserve ( U &&  x)
inline

◆ size()

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
auto freetensor::SubTreeList< T, POLICY >::size ( ) const
inline

Friends And Related Function Documentation

◆ SubTree

template<class T , NullPolicy POLICY = NullPolicy::NotNull>
template<class , NullPolicy >
friend class SubTree
friend

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