X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fidx.cpp;h=94616ce62ba7c4ba4335996b25a288f06e310b0b;hp=a688c6d495efff99704309ac795d8fe0202efc8c;hb=afdd7fa8c6c0a587f7c80789198551383e8beb7b;hpb=a8507b8af1c08d9b27d98d57f95c7ca1a8671e27 diff --git a/ginac/idx.cpp b/ginac/idx.cpp index a688c6d4..94616ce6 100644 --- a/ginac/idx.cpp +++ b/ginac/idx.cpp @@ -1,7 +1,8 @@ /** @file idx.cpp * - * Implementation of GiNaC's indices. - * + * Implementation of GiNaC's indices. */ + +/* * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify @@ -21,8 +22,16 @@ #include -#include "ginac.h" +#include "idx.h" +#include "ex.h" +#include "lst.h" +#include "relational.h" #include "utils.h" +#include "debugmsg.h" + +#ifndef NO_GINAC_NAMESPACE +namespace GiNaC { +#endif // ndef NO_GINAC_NAMESPACE ////////// // default constructor, destructor, copy constructor assignment operator and helpers @@ -30,7 +39,7 @@ // public -idx::idx() : basic(TINFO_IDX), symbolic(true), covariant(false) +idx::idx() : basic(TINFO_idx), symbolic(true), covariant(false) { debugmsg("idx default constructor",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -82,28 +91,28 @@ void idx::destroy(bool call_parent) // public -idx::idx(bool cov) : basic(TINFO_IDX), symbolic(true), covariant(cov) +idx::idx(bool cov) : basic(TINFO_idx), symbolic(true), covariant(cov) { debugmsg("idx constructor from bool",LOGLEVEL_CONSTRUCT); serial=next_serial++; name="index"+ToString(serial); } -idx::idx(string const & n, bool cov) : basic(TINFO_IDX), +idx::idx(string const & n, bool cov) : basic(TINFO_idx), symbolic(true), name(n), covariant(cov) { debugmsg("idx constructor from string,bool",LOGLEVEL_CONSTRUCT); serial=next_serial++; } -idx::idx(char const * n, bool cov) : basic(TINFO_IDX), +idx::idx(char const * n, bool cov) : basic(TINFO_idx), symbolic(true), name(n), covariant(cov) { debugmsg("idx constructor from char*,bool",LOGLEVEL_CONSTRUCT); serial=next_serial++; } -idx::idx(unsigned const v, bool cov) : basic(TINFO_IDX), +idx::idx(unsigned const v, bool cov) : basic(TINFO_idx), symbolic(false), value(v), covariant(cov) { debugmsg("idx constructor from unsigned,bool",LOGLEVEL_CONSTRUCT); @@ -193,13 +202,13 @@ bool idx::info(unsigned inf) const ex idx::subs(lst const & ls, lst const & lr) const { - ASSERT(ls.nops()==lr.nops()); -#ifdef DOASSERT + GINAC_ASSERT(ls.nops()==lr.nops()); +#ifdef DO_GINAC_ASSERT for (int i=0; i (const_cast(other)); @@ -241,7 +250,7 @@ int idx::compare_same_type(basic const & other) const bool idx::is_equal_same_type(basic const & other) const { - ASSERT(is_of_type(other,idx)); + GINAC_ASSERT(is_of_type(other,idx)); idx const & o=static_cast (const_cast(other)); @@ -267,7 +276,7 @@ unsigned idx::calchash(void) const bool idx::is_co_contra_pair(basic const & other) const { // like is_equal_same_type(), but tests for different covariant status - ASSERT(is_of_type(other,idx)); + GINAC_ASSERT(is_of_type(other,idx)); idx const & o=static_cast (const_cast(other)); @@ -359,10 +368,10 @@ exvector idx_intersect(exvector const & iv1, exvector const & iv2) // assumes (but does not test) that each index occurs at most twice exvector iv_intersect; for (exvector::const_iterator cit1=iv1.begin(); cit1!=iv1.end(); ++cit1) { - ASSERT(is_ex_of_type(*cit1,idx)); + GINAC_ASSERT(is_ex_of_type(*cit1,idx)); if (ex_to_idx(*cit1).is_symbolic()) { for (exvector::const_iterator cit2=iv2.begin(); cit2!=iv2.end(); ++cit2) { - ASSERT(is_ex_of_type(*cit2,idx)); + GINAC_ASSERT(is_ex_of_type(*cit2,idx)); if ((*cit1).is_equal(*cit2)) { iv_intersect.push_back(*cit1); break; @@ -385,8 +394,8 @@ ex permute_free_index_to_front(exvector const & iv3, exvector const & iv2, // match (return value,iv2) to iv3 by permuting indices // iv3 is always cyclic - ASSERT(iv3.size()==3); - ASSERT(iv2.size()==2); + GINAC_ASSERT(iv3.size()==3); + GINAC_ASSERT(iv2.size()==2); *sig=1; @@ -405,8 +414,8 @@ unsigned subs_index_in_exvector(exvector & v, ex const & is, ex const & ir) unsigned replacements=0; unsigned current_replacements; - ASSERT(is_ex_of_type(is,idx)); - ASSERT(is_ex_of_type(ir,idx)); + GINAC_ASSERT(is_ex_of_type(is,idx)); + GINAC_ASSERT(is_ex_of_type(ir,idx)); for (it=v.begin(); it!=v.end(); ++it) { current_replacements=count_index(*it,is); @@ -431,7 +440,7 @@ unsigned count_index(ex const & e, ex const & i) ex subs_indices(ex const & e, exvector const & idxv_subs, exvector const & idxv_repl) { - ASSERT(idxv_subs.size()==idxv_repl.size()); + GINAC_ASSERT(idxv_subs.size()==idxv_repl.size()); ex res=e; for (unsigned i=0; i