12#ifndef MCRL2_PROCESS_FIND_H
13#define MCRL2_PROCESS_FIND_H
29template <
template <
class>
class Traverser,
class OutputIterator>
30struct find_action_labels_traverser:
public Traverser<find_action_labels_traverser<Traverser, OutputIterator> >
32 typedef Traverser<find_action_labels_traverser<Traverser, OutputIterator> > super;
39 find_action_labels_traverser(OutputIterator out_)
43 void apply(
const process::action_label& x)
53template <
template <
class>
class Traverser,
class OutputIterator>
54find_action_labels_traverser<Traverser, OutputIterator>
55make_find_action_labels_traverser(OutputIterator out)
57 return find_action_labels_traverser<Traverser, OutputIterator>(out);
60struct find_action_names_traverser:
public process::action_label_traverser<find_action_names_traverser>
62 typedef process::action_label_traverser<find_action_names_traverser> super;
67 std::set<core::identifier_string> result;
69 void apply(
const process::action_label& x)
71 result.insert(x.name());
74 void apply(
const process::block& x)
77 const core::identifier_string_list& B = x.block_set();
78 result.insert(B.begin(), B.end());
81 void apply(
const process::hide& x)
84 const core::identifier_string_list&
I = x.hide_set();
88 void apply(
const process::rename& x)
91 for (
const rename_expression& r: x.rename_set())
93 result.insert(r.source());
94 result.insert(r.target());
98 void apply(
const process::comm& x)
101 for (
const communication_expression& c: x.comm_set())
103 core::identifier_string_list names = c.action_name().names();
104 result.insert(names.begin(), names.end());
105 result.insert(c.name());
109 void apply(
const process::allow& x)
112 for (
const action_name_multiset& i: x.allow_set())
114 const core::identifier_string_list& names = i.names();
115 result.insert(names.begin(), names.end());
128template <
typename T,
typename OutputIterator>
131 data::detail::make_find_all_variables_traverser<process::variable_traverser>(o).apply(x);
140 std::set<data::variable> result;
149template <
typename T,
typename OutputIterator>
152 data::detail::make_find_free_variables_traverser<process::data_expression_traverser, process::add_data_variable_traverser_binding>(o).apply(x);
160template <
typename T,
typename OutputIterator,
typename VariableContainer>
163 data::detail::make_find_free_variables_traverser<process::data_expression_traverser, process::add_data_variable_traverser_binding>(o, bound).apply(x);
172 std::set<data::variable> result;
181template <
typename T,
typename VariableContainer>
184 std::set<data::variable> result;
193template <
typename T,
typename OutputIterator>
196 data::detail::make_find_identifiers_traverser<process::identifier_string_traverser>(o).apply(x);
205 std::set<core::identifier_string> result;
214template <
typename T,
typename OutputIterator>
217 data::detail::make_find_sort_expressions_traverser<process::sort_expression_traverser>(o).apply(x);
226 std::set<data::sort_expression> result;
235template <
typename T,
typename OutputIterator>
238 data::detail::make_find_function_symbols_traverser<process::data_expression_traverser>(o).apply(x);
247 std::set<data::function_symbol> result;
257template <
typename T,
typename OutputIterator>
260 process::detail::make_find_action_labels_traverser<process::action_label_traverser>(o)(x);
269 std::set<process::action_label> result;
280 detail::find_action_names_traverser f;
294 if (equation.identifier() == id)
const_iterator end() const
const_iterator begin() const
\brief A process equation
\brief A process identifier
Standard exception class for reporting runtime errors.
Search functions of the data library.
data_expression I(const data_expression &x)
void find_identifiers(const T &x, OutputIterator o)
void find_action_labels(const T &x, OutputIterator o)
Returns all action labels that occur in an object.
std::set< data::sort_expression > find_sort_expressions(const process::action_label_list &x)
std::set< core::identifier_string > find_action_names(const T &x)
Returns all action names that occur in an object.
void find_function_symbols(const T &x, OutputIterator o)
std::string pp(const action_label &x)
void find_free_variables(const T &x, OutputIterator o)
void find_all_variables(const T &x, OutputIterator o)
void find_free_variables_with_bound(const T &x, OutputIterator o, const VariableContainer &bound)
const process_equation & find_equation(const std::vector< process_equation > &equations, const process_identifier &id)
Finds an equation that corresponds to a process identifier.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
add your file description here.
add your file description here.