From 9431fba22d0523bba51a0fc3e488627594af0884 Mon Sep 17 00:00:00 2001 From: Richard Kreckel Date: Thu, 7 Mar 2019 20:57:50 +0100 Subject: [PATCH] Refactor module static helper functions to helper class. Functions symbolset and insert_symbols in inifcns.cpp are better written as a class, to improve readability. --- ginac/inifcns.cpp | 48 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/ginac/inifcns.cpp b/ginac/inifcns.cpp index e2a09b16..99959a55 100644 --- a/ginac/inifcns.cpp +++ b/ginac/inifcns.cpp @@ -1038,23 +1038,28 @@ REGISTER_FUNCTION(Order, eval_func(Order_eval). // Solve linear system ////////// -static void insert_symbols(exset &es, const ex &e) -{ - if (is_a(e)) { - es.insert(e); - } else { - for (const ex &sube : e) { - insert_symbols(es, sube); +class symbolset { + exset s; + void insert_symbols(const ex &e) + { + if (is_a(e)) { + s.insert(e); + } else { + for (const ex &sube : e) { + insert_symbols(sube); + } } } -} - -static exset symbolset(const ex &e) -{ - exset s; - insert_symbols(s, e); - return s; -} +public: + explicit symbolset(const ex &e) + { + insert_symbols(e); + } + bool has(const ex &e) const + { + return s.find(e) != s.end(); + } +}; ex lsolve(const ex &eqns, const ex &symbols, unsigned options) { @@ -1095,10 +1100,11 @@ ex lsolve(const ex &eqns, const ex &symbols, unsigned options) for (size_t r=0; r(symbols.op(c)),1); linpart -= co*symbols.op(c); sys(r,c) = co; @@ -1108,13 +1114,13 @@ ex lsolve(const ex &eqns, const ex &symbols, unsigned options) } // test if system is linear and fill vars matrix - const exset sys_syms = symbolset(sys); - const exset rhs_syms = symbolset(rhs); + const symbolset sys_syms(sys); + const symbolset rhs_syms(rhs); for (size_t i=0; i