diff --git a/src/language/ASTModulesImporter.cpp b/src/language/ASTModulesImporter.cpp index e15268ec1d4859342b4cf89eb22ed2d8861a54eb..257e0d916cde6aaba9ca748272a1f7b9a3550be1 100644 --- a/src/language/ASTModulesImporter.cpp +++ b/src/language/ASTModulesImporter.cpp @@ -5,6 +5,8 @@ #include <PEGGrammar.hpp> +#include <CMathModule.hpp> + void ASTModulesImporter::_importModule(ASTNode& import_node) { @@ -17,6 +19,8 @@ ASTModulesImporter::_importModule(ASTNode& import_node) std::cout << " * importing '" << rang::fgB::green << module_name << rang::style::reset << "' module\n"; if (module_name == "math") { + CMathModule math_module; + std::string symbol_name{"sin"}; auto [i_symbol, success] = m_symbol_table.add(symbol_name, import_node.begin()); diff --git a/src/language/CMakeLists.txt b/src/language/CMakeLists.txt index b88c971c4fdcb1a75514f85109710d8dfa649f06..e00a6a19dd0c350bd0b1493cd2fa011781ddff36 100644 --- a/src/language/CMakeLists.txt +++ b/src/language/CMakeLists.txt @@ -28,6 +28,7 @@ add_library( ASTPrinter.cpp ASTSymbolTableBuilder.cpp ASTSymbolInitializationChecker.cpp + CMathModule.cpp PugsParser.cpp) # Additional dependencies diff --git a/src/language/CMathModule.cpp b/src/language/CMathModule.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2508026aeac10a13509b906b289362d100d83023 --- /dev/null +++ b/src/language/CMathModule.cpp @@ -0,0 +1,9 @@ +#include <CMathModule.hpp> + +#include <iostream> + +CMathModule::CMathModule() +{ + std::cerr << __FILE__ << ':' << __LINE__ << ": CMathModule construction NIY\n"; + std::exit(1); +} diff --git a/src/language/CMathModule.hpp b/src/language/CMathModule.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d7d92998339aee288848a8877c29c889d65120a6 --- /dev/null +++ b/src/language/CMathModule.hpp @@ -0,0 +1,31 @@ +#ifndef CMATH_MODULE_HPP +#define CMATH_MODULE_HPP + +#include <PugsMacros.hpp> + +#include <map> +#include <memory> +#include <string> +#include <vector> + +class ICFunctionEmbedder; +class CMathModule +{ + private: + std::map<std::string, uint64_t> m_name_fid_map; + std::vector<std::shared_ptr<ICFunctionEmbedder>> m_cfunction_list; + + public: + PUGS_INLINE + auto + find(const std::string& name) const + { + return m_name_fid_map.find(name); + } + + CMathModule(); + + ~CMathModule() = default; +}; + +#endif // CMATH_MODULE_HPP