#ifndef QLOW_SEM_CONTEXT_H #define QLOW_SEM_CONTEXT_H #include #include #include #include #include "Type.h" namespace qlow::sem { class Type; class Context; } namespace std { template<> struct hash> { size_t operator() (const std::reference_wrapper& t) const; }; } class qlow::sem::Context { private: std::string test = "ayayay"; std::vector types; std::unordered_map, TypeId, std::hash>, std::equal_to> typesMap; public: TypeId addType(Type&& type); std::optional> getType(TypeId tid); TypeId getPointerTo(TypeId id); TypeId getArrayOf(TypeId id); }; #endif // QLOW_SEM_CONTEXT_H