X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fbasic.h;h=f397b778e15d0492d0a139854c3bbf91f9e7cb7b;hp=a095617155d652a57e45e17fc85d86e471299e46;hb=68c28e9c4381f874acf0cd7a690d36098ac9db23;hpb=6b3768e8c544739ae53321539cb4d1e3112ded1b diff --git a/ginac/basic.h b/ginac/basic.h index a0956171..f397b778 100644 --- a/ginac/basic.h +++ b/ginac/basic.h @@ -2,16 +2,36 @@ * * Interface to GiNaC's ABC. */ -#ifndef _BASIC_H_ -#define _BASIC_H_ +/* + * GiNaC Copyright (C) 1999 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __GINAC_BASIC_H__ +#define __GINAC_BASIC_H__ #include #include #include -#include "flags.h" -#include "tinfos.h" -#include "debugmsg.h" +#include +#include +#include + +namespace GiNaC { class basic; class ex; @@ -35,10 +55,8 @@ class basic public: basic() #ifdef INLINE_BASIC_CONSTRUCTORS - : tinfo_key(TINFO_BASIC), flags(0), refcount(0) + : tinfo_key(TINFO_basic), flags(0), refcount(0) { - debugmsg("basic default constructor",LOGLEVEL_CONSTRUCT); - // nothing to do } #else ; @@ -47,7 +65,6 @@ public: virtual ~basic() #ifdef INLINE_BASIC_CONSTRUCTORS { - debugmsg("basic destructor",LOGLEVEL_DESTRUCT); destroy(0); ASSERT((!(flags & status_flags::dynallocated))||(refcount==0)); } @@ -58,7 +75,6 @@ public: basic(basic const & other) #ifdef INLINE_BASIC_CONSTRUCTORS { - debugmsg("basic copy constructor",LOGLEVEL_CONSTRUCT); copy(other); } #else @@ -81,8 +97,6 @@ protected: #ifdef INLINE_BASIC_CONSTRUCTORS : tinfo_key(ti), flags(0), refcount(0) { - debugmsg("basic constructor with tinfo_key",LOGLEVEL_CONSTRUCT); - // nothing to do } #else ; @@ -164,45 +178,19 @@ extern type_info const & typeid_basic; extern int max_recursion_level; -/* -#ifndef _DEBUG -*/ +// convenience macros #define is_of_type(OBJ,TYPE) \ - (dynamic_cast(const_cast(&OBJ))!=0) + (dynamic_cast(const_cast(&OBJ))!=0) -/* #define is_exactly_of_type(OBJ,TYPE) \ - (typeid(OBJ)==typeid(some_##TYPE)) -*/ -#define is_exactly_of_type(OBJ,TYPE) \ - ((OBJ).tinfo()==(some_##TYPE).tinfo()) - - - /* -#else -#define is_of_type(OBJ,TYPE) \ - (ASSERT(typeid(OBJ)!=typeid(exZERO())), \ - (dynamic_cast(const_cast(&OBJ))!=0)) - -#define is_exactly_of_type(OBJ,TYPE) \ - (ASSERT(typeid(OBJ)!=typeid(exZERO())), \ - (typeid(OBJ)==typeid(some_##TYPE)) -#endif // ndef _DEBUG -*/ + ((OBJ).tinfo()==GiNaC::TINFO_##TYPE) #define is_ex_of_type(OBJ,TYPE) \ - (dynamic_cast(const_cast((OBJ).bp))!=0) - -/* -#define is_ex_exactly_of_type(OBJ,TYPE) \ - (typeid(*(OBJ).bp)==typeid(some_##TYPE)) -*/ + (dynamic_cast(const_cast((OBJ).bp))!=0) #define is_ex_exactly_of_type(OBJ,TYPE) \ - ((*(OBJ).bp).tinfo()==(some_##TYPE).tinfo()) + ((*(OBJ).bp).tinfo()==GiNaC::TINFO_##TYPE) -#define are_ex_trivially_equal(EX1,EX2) \ - ((EX1).bp==(EX2).bp) // global functions @@ -237,4 +225,6 @@ inline unsigned golden_ratio_hash(unsigned n) #endif } -#endif // ndef _BASIC_H_ +} // namespace GiNaC + +#endif // ndef __GINAC_BASIC_H__