Goose  Artifact [7afbb1ee77]

Artifact 7afbb1ee77433350be6542d6c6414aa26685827eebbd84df839eac1ae46341e1:

  • File bs/builtins/types/overloadset/overloadset.cpp — part of check-in [0db147f117] at 2024-09-15 20:24:31 on branch cir-ssa-refactor — Add clang format settings, reformat everything (user: achavasse size: 1009)

#include "builtins/builtins.h"

using namespace goose::builtins;

bool goose::builtins::IsOverloadSet( const Value& os )
{
    return os.type() == GetValueType< ptr< OverloadSet > >();
}

namespace goose::eir
{
    const Term& Bridge< ptr< sema::OverloadSet > >::Type()
    {
        static auto type =
            ValueToEIR( Value( TypeType(), VEC( TSID( ct_type ), TSID( overloadset ) ) ) );
        return type;
    }

    Value Bridge< ptr< sema::OverloadSet > >::ToValue( const ptr< sema::OverloadSet >& os )
    {
        return Value( Type(), TERM( static_pointer_cast< void >( os ) ) );
    }

    optional< ptr< sema::OverloadSet > > Bridge< ptr< sema::OverloadSet > >::FromValue(
        const Value& v )
    {
        if( !IsOverloadSet( v ) )
            return nullopt;

        auto result = Decompose( v.val(), Val< ptr< void > >() );

        if( !result )
            return nullopt;

        return static_pointer_cast< sema::OverloadSet >( result->get() );
    }
} // namespace goose::eir