mCRL2
Loading...
Searching...
No Matches
atermpp::unprotected_aterm Class Reference

An unprotected term does not change the reference count of the shared term when it is copied or moved. More...

#include <aterm.h>

Inheritance diagram for atermpp::unprotected_aterm:
atermpp::aterm atermpp::detail::reference_aterm< T, typename std::enable_if< std::is_base_of< aterm, T >::value >::type > atermpp::term_appl< aterm > atermpp::term_appl< data::data_expression > atermpp::term_list< variable_with_a_rational_factor > atermpp::term_list< variable > atermpp::term_list< action_label > atermpp::term_list< lps::state > atermpp::term_list< match_tree_list > atermpp::term_list< match_tree_list_list > atermpp::term_list< data_expression > atermpp::term_list< assignment > atermpp::aterm_int atermpp::term_appl< Term > atermpp::term_list< Term > mcrl2::data::detail::variable_or_number

Public Member Functions

 unprotected_aterm () noexcept
 Default constuctor.
 
 unprotected_aterm (const detail::_aterm *term) noexcept
 Constructor.
 
bool type_is_appl () const noexcept
 Dynamic check whether the term is an aterm_appl.
 
bool type_is_int () const noexcept
 Dynamic check whether the term is an aterm_int.
 
bool type_is_list () const noexcept
 Dynamic check whether the term is an aterm_list.
 
bool operator== (const unprotected_aterm &t) const
 Comparison operator.
 
bool operator!= (const unprotected_aterm &t) const
 Inequality operator on two unprotected aterms.
 
bool operator< (const unprotected_aterm &t) const
 Comparison operator for two unprotected aterms.
 
bool operator> (const unprotected_aterm &t) const
 Comparison operator for two unprotected aterms.
 
bool operator<= (const unprotected_aterm &t) const
 Comparison operator for two unprotected aterms.
 
bool operator>= (const unprotected_aterm &t) const
 Comparison operator for two unprotected aterms.
 
bool defined () const
 Returns true if this term is not equal to the term assigned by the default constructor of aterms, term_appl<T>'s and aterm_int.
 
void swap (unprotected_aterm &t) noexcept
 Swaps this term with its argument.
 
const function_symbolfunction () const
 Yields the function symbol in an aterm.
 

Protected Attributes

const detail::_atermm_term
 

Friends

detail::_atermdetail::address (const unprotected_aterm &t)
 

Detailed Description

An unprotected term does not change the reference count of the shared term when it is copied or moved.

Definition at line 35 of file aterm.h.

Constructor & Destructor Documentation

◆ unprotected_aterm() [1/2]

atermpp::unprotected_aterm::unprotected_aterm ( )
inlinenoexcept

Default constuctor.

Definition at line 45 of file aterm.h.

◆ unprotected_aterm() [2/2]

atermpp::unprotected_aterm::unprotected_aterm ( const detail::_aterm term)
inlinenoexcept

Constructor.

Parameters
termThe term from which the new term is constructed.

Definition at line 51 of file aterm.h.

Member Function Documentation

◆ defined()

bool atermpp::unprotected_aterm::defined ( ) const
inline

Returns true if this term is not equal to the term assigned by the default constructor of aterms, term_appl<T>'s and aterm_int.

The default constructor of a term_list<T> is the empty list, on which the operator defined yields true. This operation is more efficient than comparing the current term with an aterm(), term_appl<T>() or an aterm_int().

Returns
A boolean indicating whether this term equals the default constructor.

Definition at line 147 of file aterm.h.

◆ function()

const function_symbol & atermpp::unprotected_aterm::function ( ) const
inline

Yields the function symbol in an aterm.

Returns
The function symbol of the term, which can also be an AS_EMPTY_LIST, AS_INT and AS_LIST.

This is for internal use only.

Definition at line 165 of file aterm.h.

◆ operator!=()

bool atermpp::unprotected_aterm::operator!= ( const unprotected_aterm t) const
inline

Inequality operator on two unprotected aterms.

See note at the == operator. This operator requires constant time.

Parameters
tA term to which the current term is compared.
Returns
false iff t is equal to the current term.

Definition at line 96 of file aterm.h.

◆ operator<()

bool atermpp::unprotected_aterm::operator< ( const unprotected_aterm t) const
inline

Comparison operator for two unprotected aterms.

This operator requires constant time. It compares the addresses where terms are stored. That means that the outcome of this operator is only stable as long as aterms are not garbage collected.

Parameters
tA term to which the current term is compared.
Returns
True iff the current term is smaller than the argument.

Definition at line 108 of file aterm.h.

◆ operator<=()

bool atermpp::unprotected_aterm::operator<= ( const unprotected_aterm t) const
inline

Comparison operator for two unprotected aterms.

This operator requires constant time. See note at the operator <.

Parameters
tA term to which the current term is compared.
Returns
True iff the current term is smaller or equal than the argument.

Definition at line 126 of file aterm.h.

◆ operator==()

bool atermpp::unprotected_aterm::operator== ( const unprotected_aterm t) const
inline

Comparison operator.

Terms are stored in a maximally shared way. This means that this equality operator can be calculated in constant time.

Returns
true iff t is equal to the current term.

Definition at line 87 of file aterm.h.

◆ operator>()

bool atermpp::unprotected_aterm::operator> ( const unprotected_aterm t) const
inline

Comparison operator for two unprotected aterms.

This operator requires constant time. See note at the operator <.

Parameters
tA term to which the current term is compared.
Returns
True iff the current term is larger than the argument.

Definition at line 117 of file aterm.h.

◆ operator>=()

bool atermpp::unprotected_aterm::operator>= ( const unprotected_aterm t) const
inline

Comparison operator for two unprotected aterms.

This operator requires constant time. See note at the operator <.

Parameters
tA term to which the current term is compared.
Returns
True iff the current term is larger or equalthan the argument.

Definition at line 135 of file aterm.h.

◆ swap()

void atermpp::unprotected_aterm::swap ( unprotected_aterm t)
inlinenoexcept

Swaps this term with its argument.

This operation is more efficient than exchanging terms by an assignment, as swapping does not require to change the protection of terms.

Parameters
tThe term with which this term is swapped.

Definition at line 156 of file aterm.h.

◆ type_is_appl()

bool atermpp::unprotected_aterm::type_is_appl ( ) const
inlinenoexcept

Dynamic check whether the term is an aterm_appl.

Returns
True iff this term is an term_appl.

This function has constant complexity. It is defined as !type_is_int() && !type_is_list().

Definition at line 59 of file aterm.h.

◆ type_is_int()

bool atermpp::unprotected_aterm::type_is_int ( ) const
inlinenoexcept

Dynamic check whether the term is an aterm_int.

Returns
True iff this term has internal structure of an aterm_int.

This function has constant complexity.

Definition at line 67 of file aterm.h.

◆ type_is_list()

bool atermpp::unprotected_aterm::type_is_list ( ) const
inlinenoexcept

Dynamic check whether the term is an aterm_list.

Returns
True iff this term has the structure of an term_list

This function has constant complexity.

Definition at line 76 of file aterm.h.

Friends And Related Symbol Documentation

◆ detail::address

Member Data Documentation

◆ m_term

const detail::_aterm* atermpp::unprotected_aterm::m_term
protected

Definition at line 40 of file aterm.h.


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