X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Flst.h;h=d6a45c15e9111dd82c5b78931c564ff2287e65fe;hp=beeb9a3daee69b7f14c82f049381265ca538135c;hb=c0fcba137d26486085ed5d4104b34d2c44978693;hpb=487e5659efe401683eee0381b0d23f967ffffc3c diff --git a/ginac/lst.h b/ginac/lst.h index beeb9a3d..d6a45c15 100644 --- a/ginac/lst.h +++ b/ginac/lst.h @@ -1,18 +1,9 @@ /** @file lst.h * - * Definition of GiNaC's lst. - * This file was generated automatically by container.pl. - * Please do not modify it directly, edit the perl script instead! - * container.pl options: $CONTAINER=lst - * $STLHEADER=list - * $reserve=0 - * $prepend=1 - * $let_op=1 - * $open_bracket=[ - * $close_bracket=] */ + * Definition of GiNaC's lst. */ /* - * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2010 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 @@ -26,108 +17,33 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __GINAC_LST_H__ -#define __GINAC_LST_H__ +#ifndef GINAC_LST_H +#define GINAC_LST_H -#include -#include - -typedef list exlist; - -class lst : public basic -{ - -public: - lst(); - ~lst(); - lst(lst const & other); - lst const & operator=(lst const & other); -protected: - void copy(lst const & other); - void destroy(bool call_parent); +#include "container.h" -public: - lst(exlist const & s, bool discardable=0); - lst(exlist * vp); // vp will be deleted - explicit lst(ex const & e1); - explicit lst(ex const & e1, ex const & e2); - explicit lst(ex const & e1, ex const & e2, ex const & e3); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6, - ex const & e7); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6, - ex const & e7, ex const & e8); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6, - ex const & e7, ex const & e8, ex const & e9); - explicit lst(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6, - ex const & e7, ex const & e8, ex const & e9, - ex const &e10); - -public: - basic * duplicate() const; - void printraw(ostream & os) const; - void print(ostream & os, unsigned upper_precedence=0) const; - void printtree(ostream & os, unsigned indent) const; - bool info(unsigned inf) const; - int nops() const; - ex & let_op(int const i); - ex expand(unsigned options=0) const; - bool has(ex const & other) const; - ex eval(int level=0) const; - ex evalf(int level=0) const; - ex normal(lst &sym_lst, lst &repl_lst, int level=0) const; - ex diff(symbol const & s) const; - ex subs(lst const & ls, lst const & lr) const; -protected: - int compare_same_type(basic const & other) const; - bool is_equal_same_type(basic const & other) const; - unsigned return_type(void) const; - - // new virtual functions which can be overridden by derived classes -public: - virtual lst & append(ex const & b); - virtual lst & prepend(ex const & b); - -protected: - virtual void printseq(ostream & os, char openbracket, char delim, - char closebracket, unsigned this_precedence, - unsigned upper_precedence=0) const; - virtual ex thislst(exlist const & v) const; - virtual ex thislst(exlist * vp) const; +#include -protected: - bool is_canonical() const; - exlist evalchildren(int level) const; - exlist evalfchildren(int level) const; - exlist normalchildren(int level) const; - exlist diffchildren(symbol const & s) const; - exlist * subschildren(lst const & ls, lst const & lr) const; +namespace GiNaC { -protected: - exlist seq; - static unsigned precedence; -}; +typedef container lst; -// global constants +/** Specialization of container::get_default_flags() for lst. */ +template<> inline unsigned lst::get_default_flags() { return status_flags::not_shareable; } -extern const lst some_lst; -extern type_info const & typeid_lst; +/** Specialization of container::get_open_delim() for lst. */ +template<> inline char lst::get_open_delim() { return '{'; } -// macros +/** Specialization of container::get_close_delim() for lst. */ +template<> inline char lst::get_close_delim() { return '}'; } -#define ex_to_lst(X) (static_cast(*(X).bp)) +// defined in lst.cpp +template<> bool lst::info(unsigned inf) const; +GINAC_DECLARE_UNARCHIVER(lst); -#endif // ndef __GINAC_LST_H__ +} // namespace GiNaC +#endif // ndef GINAC_LST_H