]> www.ginac.de Git - ginac.git/blobdiff - ginac/function.pl
* Last week, the FSF has moved their office.
[ginac.git] / ginac / function.pl
index 6b25c70df7203cba947af9518ff7019079f4136c..7a2f6a9d779b9e323052d601e9caffeb95fb3ac2 100755 (executable)
@@ -2,7 +2,7 @@
 
 #  function.pl options: \$maxargs=${maxargs}
 # 
-#  GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany
+#  GiNaC Copyright (C) 1999-2005 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
@@ -16,7 +16,7 @@
 # 
 #  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
+#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 $maxargs=14;
 
@@ -60,6 +60,7 @@ $declare_function_macro = generate(
        <<'END_OF_DECLARE_FUNCTION_MACRO','typename T${N}','const T${N} & p${N}','GiNaC::ex(p${N})');
 #define DECLARE_FUNCTION_${N}P(NAME) \\
 class NAME##_SERIAL { public: static unsigned serial; }; \\
+const unsigned NAME##_NPARAMS = ${N}; \\
 template<${SEQ1}> const GiNaC::function NAME(${SEQ2}) { \\
        return GiNaC::function(NAME##_SERIAL::serial, ${SEQ3}); \\
 }
@@ -226,7 +227,7 @@ $interface=<<END_OF_INTERFACE;
  *  Please do not modify it directly, edit the perl script instead!
  *  function.pl options: \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2005 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
@@ -240,7 +241,7 @@ $interface=<<END_OF_INTERFACE;
  *
  *  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
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #ifndef __GINAC_FUNCTION_H__
@@ -260,7 +261,7 @@ $declare_function_macro
 
 #define REGISTER_FUNCTION(NAME,OPT) \\
 unsigned NAME##_SERIAL::serial = \\
-       GiNaC::function::register_new(GiNaC::function_options(#NAME).OPT);
+       GiNaC::function::register_new(GiNaC::function_options(#NAME, NAME##_NPARAMS).OPT);
 
 namespace GiNaC {
 
@@ -300,6 +301,7 @@ class function_options
 public:
        function_options();
        function_options(std::string const & n, std::string const & tn=std::string());
+       function_options(std::string const & n, unsigned np);
        ~function_options();
        void initialize();
 
@@ -485,7 +487,7 @@ $implementation=<<END_OF_IMPLEMENTATION;
  *  Please do not modify it directly, edit the perl script instead!
  *  function.pl options: \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2005 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
@@ -499,7 +501,7 @@ $implementation=<<END_OF_IMPLEMENTATION;
  *
  *  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
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #include <iostream>
@@ -537,6 +539,13 @@ function_options::function_options(std::string const & n, std::string const & tn
        set_name(n, tn);
 }
 
+function_options::function_options(std::string const & n, unsigned np)
+{
+       initialize();
+       set_name(n, std::string());
+       nparams = np;
+}
+
 function_options::~function_options()
 {
        // nothing to clean up at the moment