summaryrefslogtreecommitdiff
path: root/src/main/java/com/seaofnodes/simple/node/ToFloatNode.java
blob: 151a326e42c248b26b1a29d34f80e08c069e8fd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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); }
}