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

#include <shared_linked_list.h>

Public Member Functions

const T & top () const
 
bool empty () const
 
SharedLinkedList push (const T &data) const
 
SharedLinkedList pop () const
 
std::vector< T > asVector () const
 
size_t hash () const
 

Friends

std::vector< T > asVector (const SharedLinkedList &bottom, const SharedLinkedList &top)
 
bool operator== (const SharedLinkedList &lhs, const SharedLinkedList &rhs)
 

Detailed Description

template<class T, class Hash = std::hash<T>, class Equal = std::equal_to<T>>
class freetensor::SharedLinkedList< T, Hash, Equal >

Read-only stack implemented via directed linked list

A linked list linked from the stack top to the bottom. A SharedLinkedList can be copied, and then all the common contents are shared, i.e., multiple linked lists form a tree rooted at the stack bottom

A SharedLinkedList can be hashed. Two SharedLinkedLists can be compared

Member Function Documentation

◆ asVector()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
std::vector< T > freetensor::SharedLinkedList< T, Hash, Equal >::asVector ( ) const
inline

◆ empty()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
bool freetensor::SharedLinkedList< T, Hash, Equal >::empty ( ) const
inline

◆ hash()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
size_t freetensor::SharedLinkedList< T, Hash, Equal >::hash ( ) const
inline

◆ pop()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
SharedLinkedList freetensor::SharedLinkedList< T, Hash, Equal >::pop ( ) const
inline

Drop the tail node

This function returns a new SharedLinkedList object (a new tail), while the original object is not changed. Use list = list.pop() to update a list

◆ push()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
SharedLinkedList freetensor::SharedLinkedList< T, Hash, Equal >::push ( const T &  data) const
inline

Append a node

This function returns a new SharedLinkedList object (a new tail), while the original object is not changed. Use list = list.push(...) to update a list

◆ top()

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
const T & freetensor::SharedLinkedList< T, Hash, Equal >::top ( ) const
inline

Friends And Related Function Documentation

◆ asVector

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
std::vector< T > asVector ( const SharedLinkedList< T, Hash, Equal > &  bottom,
const SharedLinkedList< T, Hash, Equal > &  top 
)
friend

◆ operator==

template<class T , class Hash = std::hash<T>, class Equal = std::equal_to<T>>
bool operator== ( const SharedLinkedList< T, Hash, Equal > &  lhs,
const SharedLinkedList< T, Hash, Equal > &  rhs 
)
friend

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