* Implementation of GiNaC's symmetry definitions. */
/*
- * GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2008 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
// default constructor
//////////
-symmetry::symmetry() : inherited(&symmetry::tinfo_static), type(none)
+symmetry::symmetry() : type(none)
{
setflag(status_flags::evaluated | status_flags::expanded);
}
// other constructors
//////////
-symmetry::symmetry(unsigned i) : inherited(&symmetry::tinfo_static), type(none)
+symmetry::symmetry(unsigned i) : type(none)
{
indices.insert(i);
setflag(status_flags::evaluated | status_flags::expanded);
}
-symmetry::symmetry(symmetry_type t, const symmetry &c1, const symmetry &c2) : inherited(&symmetry::tinfo_static), type(t)
+symmetry::symmetry(symmetry_type t, const symmetry &c1, const symmetry &c2) : type(t)
{
add(c1); add(c2);
setflag(status_flags::evaluated | status_flags::expanded);
unsigned symmetry::calchash() const
{
- unsigned v = golden_ratio_hash((p_int)tinfo());
+ const void* this_tinfo = (const void*)typeid(*this).name();
+ unsigned v = golden_ratio_hash((p_int)this_tinfo);
if (type == none) {
v = rotate_left(v);