FormulaModel::FormulaModel(const formula_expression_ref& R) :Model(R.notes ), result_index( C.add_expression(R.exp()) ) { }
int formula_expression_ref::add_expression(const formula_expression_ref& R) { // The indices of the first argument are (currently) not altered, so 'index' is unchanged. notes = combine(notes, R.notes); return notes->add_expression(R.exp()); }
formula_expression_ref formula_expression_ref::operator()(const formula_expression_ref& R) const { return formula_expression_ref(combine(notes, R.notes), exp()(R.exp())); }
formula_expression_ref prefix_formula(const std::string& prefix,const formula_expression_ref& R) { return formula_expression_ref(prefix_formula(prefix, R.notes), add_prefix(prefix, R.exp())); }