12#ifndef MCRL2_DATA_REWRITERS_DATA_REWRITER_H
13#define MCRL2_DATA_REWRITERS_DATA_REWRITER_H
24template <
typename DataRewriter,
typename SubstitutionFunction>
31template <
typename DataRewriter>
39template <
template <
class>
class Builder,
class Derived,
class DataRewriter,
class SubstitutionFunction =
data::no_substitution>
45 using super::operator();
47 const DataRewriter&
R;
67template <
typename Derived,
typename DataRewriter,
typename SubstitutionFunction>
73 using super::operator();
80template <
template <
class,
class,
class>
class Builder,
class DataRewriter,
class SubstitutionFunction>
81struct apply_rewriter_builder:
public Builder<apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>, DataRewriter, SubstitutionFunction>
83 typedef Builder<apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>, DataRewriter, SubstitutionFunction>
super;
86 using super::operator();
97template <
template <
class,
class,
class>
class Builder,
class DataRewriter,
class SubstitutionFunction>
98apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>
107template <
typename DataRewriter>
113 const DataRewriter&
R;
122 return detail::make_apply_rewriter_builder<detail::data_rewriter_builder>(
R,
sigma)(x);
125 template <
typename SubstitutionFunction>
128 return detail::make_apply_rewriter_builder<detail::data_rewriter_builder>(
R,
sigma)(x);
add your file description here.
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
apply_rewriter_builder< Builder, DataRewriter, SubstitutionFunction > make_apply_rewriter_builder(const DataRewriter &datar, SubstitutionFunction &sigma)
data::data_expression data_rewrite(const data::data_expression &x, const DataRewriter &R, SubstitutionFunction &sigma)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
A rewriter that applies a data rewriter to data expressions in a term.
data_rewriter(const DataRewriter &R_)
data_expression operator()(const data_expression &x, SubstitutionFunction &sigma) const
data_expression operator()(const data_expression &x) const
data::variable variable_type
data_expression term_type
Applies a data rewriter to data expressions appearing in a term. It works both with and without a sub...
data_expression operator()(const data::data_expression &x)
add_data_rewriter(const DataRewriter &R_, SubstitutionFunction &sigma_)
SubstitutionFunction & sigma
void apply(T &result, const data::data_expression &x)
apply_rewriter_builder(const DataRewriter &datar, SubstitutionFunction &sigma)
Builder< apply_rewriter_builder< Builder, DataRewriter, SubstitutionFunction >, DataRewriter, SubstitutionFunction > super
data_rewriter_builder(const DataRewriter &R, SubstitutionFunction &sigma)
add_data_rewriter< data::data_expression_builder, Derived, DataRewriter, SubstitutionFunction > super
An empty struct that is used to denote the absence of a substitution. Used for rewriters.