]> www.ginac.de Git - ginac.git/blobdiff - ginac/exprseq.h
* Oops, forgot to cvs add the two new files in last commit.
[ginac.git] / ginac / exprseq.h
index 179cfbde767e83d6357838eb7c5a151a73ab3766..31b2e77770121686b44ff5f5c2e1015523a3294b 100644 (file)
@@ -1,18 +1,9 @@
 /** @file exprseq.h
  *
- *  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=) */
+ *  Definition of GiNaC's exprseq. */
 
 /*
- *  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
 #define __GINAC_EXPRSEQ_H__
 
 #include <vector>
-#include <ginac/basic.h>
 
-typedef vector<ex> exvector;
+#include "container.h"
 
-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);
-
-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;
+namespace GiNaC {
 
-    // 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;
+typedef container<std::vector> exprseq;
 
-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;
+/** Specialization of container::get_tinfo() for exprseq. */
+inline unsigned exprseq::get_tinfo() { return TINFO_exprseq; }
 
-protected:
-    exvector seq;
-    static unsigned precedence;
-};
+// defined in exprseq.cpp
+template<> bool exprseq::info(unsigned inf) const;
 
-// global constants
-
-extern const exprseq some_exprseq;
-extern type_info const & typeid_exprseq;
-
-// macros
+/** Specialization of is_exactly_a<exprseq>(obj) for exprseq objects. */
+template<> inline bool is_exactly_a<exprseq>(const basic & obj)
+{
+       return obj.tinfo() == TINFO_exprseq;
+}
 
-#define ex_to_exprseq(X) (static_cast<exprseq const &>(*(X).bp))
+} // namespace GiNaC
 
 #endif // ndef __GINAC_EXPRSEQ_H__
-