]> www.ginac.de Git - ginac.git/blobdiff - ginac/parser/default_reader.cpp
Happy New Year!
[ginac.git] / ginac / parser / default_reader.cpp
index 4f8c69c365d19be46be795cd7e003eb4e2a011ad..62c0a506298a048dbca484c6d23683f02e519f0c 100644 (file)
@@ -4,7 +4,7 @@
  **/
 
 /*
- *  GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2019 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
 
 #include "parse_context.h"
 #include "power.h"
+#include "lst.h"
 #include "operators.h"
 #include "inifcns.h"
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
 
-#ifdef HAVE_STDINT_H
-#include <stdint.h> // for uintptr_t
-#endif
+#include <cstdint> // for uintptr_t
 
 namespace GiNaC
 {
@@ -40,15 +36,22 @@ static ex sqrt_reader(const exvector& ev)
 {
        return GiNaC::sqrt(ev[0]);
 }
+
 static ex pow_reader(const exvector& ev)
 {
        return GiNaC::pow(ev[0], ev[1]);
 }
+
 static ex power_reader(const exvector& ev)
 {
        return GiNaC::power(ev[0], ev[1]);
 }
 
+static ex lst_reader(const exvector& ev)
+{
+       return GiNaC::lst(ev.begin(), ev.end());
+}
+
 
 // function::registered_functions() is protected, but we need to access it
 // TODO: add a proper const method to the `function' class, so we don't
@@ -87,13 +90,10 @@ const prototype_table& get_default_reader()
                reader[make_pair("sqrt", 1)] = sqrt_reader;
                reader[make_pair("pow", 2)] = pow_reader;
                reader[make_pair("power", 2)] = power_reader;
-               std::vector<function_options>::const_iterator it =
-                       registered_functions_hack::get_registered_functions().begin();
-               std::vector<function_options>::const_iterator end =
-                       registered_functions_hack::get_registered_functions().end();
+               reader[make_pair("lst", 0)] = lst_reader;
                unsigned serial = 0;
-               for (; it != end; ++it) {
-                       prototype proto = make_pair(it->get_name(), it->get_nparams());
+               for (auto & it : registered_functions_hack::get_registered_functions()) {
+                       prototype proto = make_pair(it.get_name(), it.get_nparams());
                        reader[proto] = encode_serial_as_reader_func(serial);
                        ++serial;
                }
@@ -112,6 +112,7 @@ const prototype_table& get_builtin_reader()
                reader[make_pair("sqrt", 1)] = sqrt_reader;
                reader[make_pair("pow", 2)] = pow_reader;
                reader[make_pair("power", 2)] = power_reader;
+               reader[make_pair("lst", 0)] = lst_reader;
                enum {
                        log,
                        exp,
@@ -142,8 +143,7 @@ const prototype_table& get_builtin_reader()
                        Order,
                        NFUNCTIONS
                };
-               std::vector<function_options>::const_iterator it =
-                       registered_functions_hack::get_registered_functions().begin();
+               auto it = registered_functions_hack::get_registered_functions().begin();
                unsigned serial = 0;
                for ( ; serial<NFUNCTIONS; ++it, ++serial ) {
                        prototype proto = make_pair(it->get_name(), it->get_nparams());