X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fex.cpp;h=6df349890631277df2d1bf7483465e308610ff2c;hb=0052e44b34c982b13b08454fd6c9429fe7a90f71;hp=23a30833b5a436375918e34358a4208376cf00d6;hpb=7d870583a6bf21a2ffb7b6f051b702064623892e;p=ginac.git diff --git a/ginac/ex.cpp b/ginac/ex.cpp index 23a30833..6df34989 100644 --- a/ginac/ex.cpp +++ b/ginac/ex.cpp @@ -3,7 +3,7 @@ * Implementation of GiNaC's light-weight expression handles. */ /* - * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2016 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +20,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include - #include "ex.h" #include "add.h" #include "mul.h" @@ -32,9 +29,11 @@ #include "power.h" #include "lst.h" #include "relational.h" -#include "input_lexer.h" #include "utils.h" +#include +#include + namespace GiNaC { ////////// @@ -95,7 +94,7 @@ ex ex::diff(const symbol & s, unsigned nth) const /** Check whether expression matches a specified pattern. */ bool ex::match(const ex & pattern) const { - lst repl_lst; + exmap repl_lst; return bp->match(pattern, repl_lst); } @@ -103,12 +102,10 @@ bool ex::match(const ex & pattern) const * the "found" list. If the expression itself matches the pattern, the * children are not further examined. This function returns true when any * matches were found. */ -bool ex::find(const ex & pattern, lst & found) const +bool ex::find(const ex & pattern, exset& found) const { if (match(pattern)) { - found.append(*this); - found.sort(); - found.unique(); + found.insert(*this); return true; } bool any_found = false; @@ -206,7 +203,7 @@ void ex::traverse_postorder(visitor & v) const accept(v); } -/** Return modifyable operand/member at position i. */ +/** Return modifiable operand/member at position i. */ ex & ex::let_op(size_t i) { makewriteable(); @@ -555,17 +552,6 @@ basic & ex::construct_from_double(double d) return *bp; } -ptr ex::construct_from_string_and_lst(const std::string &s, const ex &l) -{ - set_lexer_string(s); - set_lexer_symbols(l); - ginac_yyrestart(NULL); - if (ginac_yyparse()) - throw (std::runtime_error(get_parser_error())); - else - return parsed_ex.bp; -} - ////////// // static member variables //////////