mCRL2
Loading...
Searching...
No Matches
atermpp::detail::markable_aterm< T > Struct Template Reference

Wrapper for user-defined types that provide their own mark() implementation. More...

#include <aterm_container.h>

Public Member Functions

 markable_aterm ()=default
 
 markable_aterm (const markable_aterm &)=default
 
 markable_aterm (markable_aterm &&)=default
 
markable_aterm & operator= (const markable_aterm &)=default
 
markable_aterm & operator= (markable_aterm &&)=default
 
 ~markable_aterm ()=default
 
 markable_aterm (const stored_type &other) noexcept
 
template<typename... Args>
requires (sizeof...(Args) != 1 || (!std::is_same_v<std::decay_t<Args>, markable_aterm> && ...))
 markable_aterm (Args &&... args) noexcept
 
markable_aterm & operator= (const stored_type &other) noexcept
 
markable_aterm & operator= (stored_type &&other) noexcept
 
 operator stored_type & ()
 
 operator const stored_type & () const
 
bool operator== (const markable_aterm &other) const
 
auto operator<=> (const markable_aterm &other) const
 
void mark (term_mark_stack &todo) const
 

Private Types

using stored_type = std::decay_t< T >
 

Private Attributes

stored_type m_t
 

Detailed Description

template<typename T>
struct atermpp::detail::markable_aterm< T >

Wrapper for user-defined types that provide their own mark() implementation.

T must satisfy the Markable concept by providing void mark(term_mark_stack&) const. This is the extension point for types that contain aterm_core instances but are not fundamental, aterm-derived, std::pair, or std::vector.

Definition at line 349 of file aterm_container.h.

Member Typedef Documentation

◆ stored_type

template<typename T >
using atermpp::detail::markable_aterm< T >::stored_type = std::decay_t<T>
private

Definition at line 352 of file aterm_container.h.

Constructor & Destructor Documentation

◆ markable_aterm() [1/5]

template<typename T >
atermpp::detail::markable_aterm< T >::markable_aterm ( )
default

◆ markable_aterm() [2/5]

template<typename T >
atermpp::detail::markable_aterm< T >::markable_aterm ( const markable_aterm< T > &  )
default

◆ markable_aterm() [3/5]

template<typename T >
atermpp::detail::markable_aterm< T >::markable_aterm ( markable_aterm< T > &&  )
default

◆ ~markable_aterm()

template<typename T >
atermpp::detail::markable_aterm< T >::~markable_aterm ( )
default

◆ markable_aterm() [4/5]

template<typename T >
atermpp::detail::markable_aterm< T >::markable_aterm ( const stored_type &  other)
inlinenoexcept

Definition at line 364 of file aterm_container.h.

◆ markable_aterm() [5/5]

template<typename T >
template<typename... Args>
requires (sizeof...(Args) != 1 || (!std::is_same_v<std::decay_t<Args>, markable_aterm> && ...))
atermpp::detail::markable_aterm< T >::markable_aterm ( Args &&...  args)
inlinenoexcept

Constrained such that it does not hijack the copy/move constructors above.

Definition at line 371 of file aterm_container.h.

Member Function Documentation

◆ mark()

template<typename T >
void atermpp::detail::markable_aterm< T >::mark ( term_mark_stack &  todo) const
inline

Definition at line 402 of file aterm_container.h.

◆ operator const stored_type &()

template<typename T >
atermpp::detail::markable_aterm< T >::operator const stored_type & ( ) const
inline

Definition at line 388 of file aterm_container.h.

◆ operator stored_type &()

template<typename T >
atermpp::detail::markable_aterm< T >::operator stored_type & ( )
inline

Definition at line 387 of file aterm_container.h.

◆ operator<=>()

template<typename T >
auto atermpp::detail::markable_aterm< T >::operator<=> ( const markable_aterm< T > &  other) const
inline

Definition at line 396 of file aterm_container.h.

◆ operator=() [1/4]

template<typename T >
markable_aterm & atermpp::detail::markable_aterm< T >::operator= ( const markable_aterm< T > &  )
default

◆ operator=() [2/4]

template<typename T >
markable_aterm & atermpp::detail::markable_aterm< T >::operator= ( const stored_type &  other)
inlinenoexcept

Definition at line 375 of file aterm_container.h.

◆ operator=() [3/4]

template<typename T >
markable_aterm & atermpp::detail::markable_aterm< T >::operator= ( markable_aterm< T > &&  )
default

◆ operator=() [4/4]

template<typename T >
markable_aterm & atermpp::detail::markable_aterm< T >::operator= ( stored_type &&  other)
inlinenoexcept

Definition at line 381 of file aterm_container.h.

◆ operator==()

template<typename T >
bool atermpp::detail::markable_aterm< T >::operator== ( const markable_aterm< T > &  other) const
inline

Definition at line 390 of file aterm_container.h.

Member Data Documentation

◆ m_t

template<typename T >
stored_type atermpp::detail::markable_aterm< T >::m_t
private

Definition at line 353 of file aterm_container.h.


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