/* file GlobalEnv.hpp * * author: Roland Conybeare, Jun 2024 */ #pragma once #include "Environment.hpp" #include namespace xo { namespace ast { class GlobalEnv : public Environment { public: ref::brw require_global(ref::brw var) { const std::string & vname = var->name(); auto ix = var_map_.find(vname); if (ix == var_map_.end()) { var_map_[vname] = var.get(); return var; } else { return ix->second; } } /*require_global*/ // ----- Environment ----- virtual ref::brw lookup_var(const std::string & vname) const { auto ix = var_map_.find(vname); if (ix == var_map_.end()) return ref::brw::from_native(nullptr); return ix->second; } private: std::map> var_map_; }; } /*namespace ast*/ } /*namespace xo*/ /* end GlobalEnv.hpp */