#include "builtins/builtins.h"
#include "ir/ir.h"
using namespace goose::builtins;
namespace goose::ir
{
const Term& Bridge< ValueWrapper >::Type()
{
static auto type = ValueToIRExpr( Value( TypeType(), VEC( TSID( ct_type ), TSID( ext_valuewrapper ) ) ) );
return type;
}
Value Bridge< ValueWrapper >::ToValue( const ValueWrapper& vw )
{
return Value( Type(), Quote( ValueToIRExpr( vw.get() ) ) );
}
optional< Value > Bridge< ValueWrapper >::FromValue( const Value& v )
{
if( v.type() != Type() )
return nullopt;
auto uq = Unquote( v.val() );
if( !uq )
return nullopt;
return ValueFromIRExpr( *uq );
}
}