package com.seaofnodes.simple.node; import com.seaofnodes.simple.type.Type; import com.seaofnodes.simple.type.TypeFloat; import com.seaofnodes.simple.type.TypeInteger; public class ToFloatNode extends Node { public ToFloatNode(Node lhs) { super(null, lhs); } @Override public Tag serialTag() { return Tag.ToFloat; } @Override protected String format() { return "(flt)%1"; } @Override public Type compute() { if( in(1)._type.isHigh() ) return TypeFloat.F64.dual(); if( in(1)._type == Type.NIL ) return TypeFloat.FZERO; if( in(1)._type instanceof TypeInteger i0 && i0.isConstant() ) return TypeFloat.constant(i0.value()); return TypeFloat.F64; } @Override public Node idealize() { return null; } @Override Node copy(Node lhs, Node rhs) { return new ToFloatNode(lhs); } }