#include <ginac/flags.h>
#include <ginac/tinfos.h>
-#include <ginac/debugmsg.h>
+#include <ginac/assertion.h>
+
+namespace GiNaC {
class basic;
class ex;
#ifdef INLINE_BASIC_CONSTRUCTORS
: tinfo_key(TINFO_basic), flags(0), refcount(0)
{
- debugmsg("basic default constructor",LOGLEVEL_CONSTRUCT);
- // nothing to do
}
#else
;
virtual ~basic()
#ifdef INLINE_BASIC_CONSTRUCTORS
{
- debugmsg("basic destructor",LOGLEVEL_DESTRUCT);
destroy(0);
ASSERT((!(flags & status_flags::dynallocated))||(refcount==0));
}
basic(basic const & other)
#ifdef INLINE_BASIC_CONSTRUCTORS
{
- debugmsg("basic copy constructor",LOGLEVEL_CONSTRUCT);
copy(other);
}
#else
#ifdef INLINE_BASIC_CONSTRUCTORS
: tinfo_key(ti), flags(0), refcount(0)
{
- debugmsg("basic constructor with tinfo_key",LOGLEVEL_CONSTRUCT);
- // nothing to do
}
#else
;
extern int max_recursion_level;
// convenience macros
-
#define is_of_type(OBJ,TYPE) \
- (dynamic_cast<TYPE *>(const_cast<basic *>(&OBJ))!=0)
+ (dynamic_cast<TYPE *>(const_cast<GiNaC::basic *>(&OBJ))!=0)
#define is_exactly_of_type(OBJ,TYPE) \
- ((OBJ).tinfo()==TINFO_##TYPE)
+ ((OBJ).tinfo()==GiNaC::TINFO_##TYPE)
#define is_ex_of_type(OBJ,TYPE) \
- (dynamic_cast<TYPE *>(const_cast<basic *>((OBJ).bp))!=0)
+ (dynamic_cast<TYPE *>(const_cast<GiNaC::basic *>((OBJ).bp))!=0)
#define is_ex_exactly_of_type(OBJ,TYPE) \
- ((*(OBJ).bp).tinfo()==TINFO_##TYPE)
+ ((*(OBJ).bp).tinfo()==GiNaC::TINFO_##TYPE)
-#define are_ex_trivially_equal(EX1,EX2) \
- ((EX1).bp==(EX2).bp)
// global functions
#endif
}
+} // namespace GiNaC
+
#endif // ndef __GINAC_BASIC_H__