#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