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