mcrl2/atermpp/aterm_appl.h¶

Include file:

#include "mcrl2/atermpp/aterm_appl.h"


The term_appl class represents function application.

Typedefs¶

type atermpp::aterm_appl

typedef for term_appl< aterm >

Functions¶

void atermpp::make_term_appl(Term &target, const function_symbol &sym)

Make an term_appl consisting of a single function symbol.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• sym A function symbol.
void atermpp::make_term_appl(Term &target, const function_symbol &sym, ForwardIterator begin, ForwardIterator end)

Constructor an aterm_appl in a variable based on a function symbol and an forward iterator providing the arguments.

The iterator range is traversed more than once. If only one traversal is required use term_appl with a TermConverter argument. But this function is substantially less efficient. The length of the iterator range must match the arity of the function symbol.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• sym A function symbol.
• begin The start of a range of elements.
• end The end of a range of elements.
void atermpp::make_term_appl(Term &target, const function_symbol &sym, InputIterator begin, InputIterator end)

Constructor an aterm_appl in a variable based on a function symbol and an input iterator providing the arguments.

The given iterator is traversed only once. So it can be used with an input iterator. This means that the TermConverter is applied exactly once to each element. The length of the iterator range must be equal to the arity of the function symbol.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• sym A function symbol.
• begin The start of a range of elements.
• end The end of a range of elements.
void atermpp::make_term_appl(Term &target, const function_symbol &sym, InputIterator begin, InputIterator end, TermConverter converter)

Constructor an aterm_appl in a variable based on a function symbol and an forward iterator providing the arguments.

The given iterator is traversed only once. So it can be used with an input iterator. This means that the TermConverter is applied exactly once to each element. The length of the iterator range must be equal to the arity of the function symbol.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• sym A function symbol.
• begin The start of a range of elements.
• end The end of a range of elements.
• converter An class or lambda term containing an operator Term operator()(const Term& t) which is applied to each each element in the iterator range before it becomes an argument of this term.
void atermpp::make_term_appl(Term &target, const function_symbol &symbol, const Terms&... arguments)

Make an aterm application for n-arity function application.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• symbol A function symbol.
• arguments The arguments of the function application.
void atermpp::make_term_appl_with_index(aterm &target, const function_symbol &symbol, const Terms&... arguments)

Constructor for n-arity function application with an index.

Parameters:

• target The variable in which the result will be put. This variable may be used for scratch purposes.
• symbol A function symbol.
• arguments The arguments of the function application.

Functions¶

void std::swap(atermpp::term_appl<T> &t1, atermpp::term_appl<T> &t2) noexcept

Swaps two term_applss.

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

Parameters:

• t1 The first term.
• t2 The second term.