Goose  Artifact [34a87ee5ec]

Artifact 34a87ee5ecd7e19506aa5cdd18cea253eb1ada3890b0d828129031c5e19643f2:

  • File bs/builtins/types/template/tvar.h — part of check-in [af650a9e95] at 2019-09-22 14:37:55 on branch trunk — Project renaming. (user: achavasse size: 837)

#ifndef GOOSE_BUILTINS_TYPES_TEMPLATE_TVAR_H
#define GOOSE_BUILTINS_TYPES_TEMPLATE_TVAR_H

namespace goose::builtins
{
    class TVar
    {
        public:
            TVar( const StringId& name ) :
                m_name( name )
            {}

            const auto& name() const { return m_name; }

        private:
            StringId m_name;
    };

    extern bool IsTExpr( const optional< Value >& te );
    extern bool IsTExpr( const Value& te );
    extern bool IsTVar( const Value& tv );
}

namespace goose::ir
{
    template<>
    struct Bridge< builtins::TVar >
    {
        static optional< Term > Domain() { return sema::DomainCompileTime(); }
        static const Term& Type();
        static Value ToValue( builtins::TVar&& tv );
        static optional< builtins::TVar > FromValue( const Value& v );
    };
}

#endif