constant(const std::string & initname, evalffunctype efun = 0, const std::string & texname = std::string());
constant(const std::string & initname, const numeric & initnumber, const std::string & texname = std::string());
- // functions overriding virtual functions from bases classes
+ // functions overriding virtual functions from base classes
public:
void print(const print_context & c, unsigned level = 0) const;
int degree(const ex & s) const;
extern const constant Euler;
// utility functions
+
+/** Return the constant object handled by an ex. Deprecated: use ex_to<constant>().
+ * This is unsafe: you need to check the type first. */
inline const constant &ex_to_constant(const ex &e)
{
return static_cast<const constant &>(*e.bp);
}
+/** Specialization of is_exactly_a<constant>(obj) for constant objects. */
+template<> inline bool is_exactly_a<constant>(const basic & obj)
+{
+ return obj.tinfo()==TINFO_constant;
+}
+
} // namespace GiNaC
#endif // ndef __GINAC_CONSTANT_H__