X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fexprseq.h;h=31b2e77770121686b44ff5f5c2e1015523a3294b;hp=59f6821f2a1b6f0c93521774e9b3956f88c7c67a;hb=f78b1f296310b5f1c01b74c9fb10dd33af2a8f4a;hpb=9eab44408b9213d8909b7a9e525f404ad06064dd;ds=sidebyside diff --git a/ginac/exprseq.h b/ginac/exprseq.h index 59f6821f..31b2e777 100644 --- a/ginac/exprseq.h +++ b/ginac/exprseq.h @@ -3,17 +3,7 @@ * Definition of GiNaC's exprseq. */ /* - * This file was generated automatically by container.pl. - * Please do not modify it directly, edit the perl script instead! - * container.pl options: $CONTAINER=exprseq - * $STLHEADER=vector - * $reserve=1 - * $prepend=0 - * $let_op=0 - * $open_bracket=( - * $close_bracket=) - * - * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2003 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 @@ -34,107 +24,25 @@ #define __GINAC_EXPRSEQ_H__ #include -#include -#include - -namespace GiNaC { - -typedef vector exvector; - -class exprseq : public basic -{ -public: - exprseq(); - ~exprseq(); - exprseq(exprseq const & other); - exprseq const & operator=(exprseq const & other); -protected: - void copy(exprseq const & other); - void destroy(bool call_parent); +#include "container.h" -public: - exprseq(exvector const & s, bool discardable=0); - exprseq(exvector * vp); // vp will be deleted - explicit exprseq(ex const & e1); - explicit exprseq(ex const & e1, ex const & e2); - explicit exprseq(ex const & e1, ex const & e2, ex const & e3); - explicit exprseq(ex const & e1, ex const & e2, ex const & e3, - ex const & e4); - explicit exprseq(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5); - explicit exprseq(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6); - explicit exprseq(ex const & e1, ex const & e2, ex const & e3, - ex const & e4, ex const & e5, ex const & e6, - ex const & e7); - explicit exprseq(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 exprseq(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 exprseq(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 exprseq & append(ex const & b); - // no prepend possible for exprseq -protected: - virtual void printseq(ostream & os, char openbracket, char delim, - char closebracket, unsigned this_precedence, - unsigned upper_precedence=0) const; - virtual ex thisexprseq(exvector const & v) const; - virtual ex thisexprseq(exvector * vp) const; - -protected: - bool is_canonical() const; - exvector evalchildren(int level) const; - exvector evalfchildren(int level) const; - exvector normalchildren(int level) const; - exvector diffchildren(symbol const & s) const; - exvector * subschildren(lst const & ls, lst const & lr) const; +namespace GiNaC { -protected: - exvector seq; - static unsigned precedence; -}; +typedef container exprseq; -// global constants +/** Specialization of container::get_tinfo() for exprseq. */ +inline unsigned exprseq::get_tinfo() { return TINFO_exprseq; } -extern const exprseq some_exprseq; -extern type_info const & typeid_exprseq; +// defined in exprseq.cpp +template<> bool exprseq::info(unsigned inf) const; -// utility functions -inline const exprseq &ex_to_exprseq(const ex &e) +/** Specialization of is_exactly_a(obj) for exprseq objects. */ +template<> inline bool is_exactly_a(const basic & obj) { - return static_cast(*e.bp); + return obj.tinfo() == TINFO_exprseq; } } // namespace GiNaC #endif // ndef __GINAC_EXPRSEQ_H__ -