]> www.ginac.de Git - ginac.git/blobdiff - ginac/parser/parse_context.cpp
Changed the parser such that it understands all defined functions
[ginac.git] / ginac / parser / parse_context.cpp
index 5c442023afa0bbaa3f59edcd456f0a9075cb0950..d9790276a0c273ea118e3d51e7367d3a219b5f02 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "parse_context.h"
 
+#include "function.h"
+
 #include <sstream>
 #include <stdexcept>
 
@@ -51,4 +53,22 @@ find_or_insert_symbol(const std::string& name, symtab& syms, const bool strict)
        return sy;
 }
 
+const prototype_table& get_default_reader(bool force_init)
+{
+       using std::make_pair;
+       static bool initialized = false;
+       static prototype_table reader;
+       if ( !initialized || force_init ) {
+               std::vector<function_options> flist = function::get_registered_functions();
+               std::vector<function_options>::iterator i = flist.begin(), end = flist.end();
+               for ( ; i != end; ++i ) {
+                       std::string name = i->get_name();
+                       unsigned narg = i->get_nparams();
+                       reader[make_pair(name, narg)] = function::find_function(name, narg);
+               }
+               initialized = true;
+       }
+       return reader;
+}
+
 } // namespace GiNaC