TeX_name = "\\mbox{" + name + "}";
else
TeX_name = texname;
- setflag(status_flags::evaluated);
+ setflag(status_flags::evaluated | status_flags::expanded);
}
constant::constant(const std::string & initname, const numeric & initnumber, const std::string & texname)
TeX_name = "\\mbox{" + name + "}";
else
TeX_name = texname;
- setflag(status_flags::evaluated);
+ setflag(status_flags::evaluated | status_flags::expanded);
}
//////////
}
//////////
-// functions overriding virtual functions from bases classes
+// functions overriding virtual functions from base classes
//////////
// public
{
debugmsg("constant print", LOGLEVEL_PRINT);
- if (is_of_type(c, print_tree)) {
+ if (is_a<print_tree>(c)) {
c.s << std::string(level, ' ') << name << " (" << class_name() << ")"
<< std::hex << ", hash=0x" << hashvalue << ", flags=0x" << flags << std::dec
<< std::endl;
- } else if (is_of_type(c, print_latex))
+ } else if (is_a<print_latex>(c))
c.s << TeX_name;
else
c.s << name;
// protected
-/** Implementation of ex::diff() for a constant. It always returns 0.
+/** Implementation of ex::diff() for a constant always returns 0.
*
* @see ex::diff */
ex constant::derivative(const symbol & s) const
int constant::compare_same_type(const basic & other) const
{
GINAC_ASSERT(is_exactly_of_type(other, constant));
- // const constant & o=static_cast<constant &>(const_cast<basic &>(other));
- // return name.compare(o.name);
- const constant *o = static_cast<const constant *>(&other);
- if (serial==o->serial) return 0;
- return serial < o->serial ? -1 : 1;
+ const constant &o = static_cast<const constant &>(other);
+
+ if (serial == o.serial)
+ return 0;
+ else
+ return serial < o.serial ? -1 : 1;
}
bool constant::is_equal_same_type(const basic & other) const
{
GINAC_ASSERT(is_exactly_of_type(other, constant));
- const constant *o = static_cast<const constant *>(&other);
- return serial==o->serial;
+ const constant &o = static_cast<const constant &>(other);
+
+ return serial == o.serial;
}
unsigned constant::calchash(void) const