function::function(unsigned ser, ${SEQ1})
: exprseq(${SEQ2}), serial(ser)
{
- debugmsg(\"function ctor from unsigned,${N}*ex\",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
END_OF_CONSTRUCTORS_IMPLEMENTATION
const unsigned function_index_##NAME= \\
GiNaC::function::register_new(GiNaC::function_options(#NAME).OPT);
-// The TYPECHECK-macros were used inside the _evalf() functions. They are
-// considered obsolete now: (FIXME: remove them)
-
-#define BEGIN_TYPECHECK \\
-bool automatic_typecheck=true;
-
-#define TYPECHECK(VAR,TYPE) \\
-if (!is_exactly_a<TYPE>(VAR)) { \\
- automatic_typecheck=false; \\
-} else
-
-#define TYPECHECK_INTEGER(VAR) \\
-if (!(VAR).info(GiNaC::info_flags::integer)) { \\
- automatic_typecheck=false; \\
-} else
-
-#define END_TYPECHECK(RV) \\
-{} \\
-if (!automatic_typecheck) { \\
- return RV.hold(); \\
-}
-
namespace GiNaC {
class function;
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <iostream>
#include <string>
#include <stdexcept>
#include <list>
#include "inifcns.h"
#include "tostring.h"
#include "utils.h"
-#include "debugmsg.h"
#include "remember.h"
namespace GiNaC {
GINAC_IMPLEMENT_REGISTERED_CLASS(function, exprseq)
//////////
-// default ctor, dtor, copy ctor assignment operator and helpers
+// default ctor, dtor, copy ctor, assignment operator and helpers
//////////
// public
function::function() : serial(0)
{
- debugmsg("function default ctor",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
function::function(unsigned ser) : serial(ser)
{
- debugmsg("function ctor from unsigned",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
function::function(unsigned ser, const exprseq & es) : exprseq(es), serial(ser)
{
- debugmsg("function ctor from unsigned,exprseq",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
function::function(unsigned ser, const exvector & v, bool discardable)
: exprseq(v,discardable), serial(ser)
{
- debugmsg("function ctor from string,exvector,bool",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
function::function(unsigned ser, exvector * vp)
: exprseq(vp), serial(ser)
{
- debugmsg("function ctor from unsigned,exvector *",LOGLEVEL_CONSTRUCT);
tinfo_key = TINFO_function;
}
/** Construct object from archive_node. */
function::function(const archive_node &n, const lst &sym_lst) : inherited(n, sym_lst)
{
- debugmsg("function ctor from archive_node", LOGLEVEL_CONSTRUCT);
-
// Find serial number by function name
std::string s;
if (n.find_string("name", s)) {
void function::print(const print_context & c, unsigned level) const
{
- debugmsg("function print", LOGLEVEL_PRINT);
-
GINAC_ASSERT(serial<registered_functions().size());
if (is_of_type(c, print_tree)) {
ex function::coeff(const ex & s, int n) const
{
if (is_equal(ex_to<basic>(s)))
- return n==1 ? _ex1() : _ex0();
+ return n==1 ? _ex1 : _ex0;
else
- return n==0 ? ex(*this) : _ex0();
+ return n==0 ? ex(*this) : _ex0;
}
ex function::eval(int level) const
if (sig != INT_MAX) {
// Something has changed while sorting arguments, more evaluations later
if (sig == 0)
- return _ex0();
+ return _ex0;
return ex(sig) * thisexprseq(v);
}
}