func init if(linked("Result") and linked("doCompare")) sys.add_var(this.name, 104) end this.setfield('cmp', this.props("Type").value) end func make_cmp(op1, op2) if(linked("Op1")) return('(' + sys.to_type(op1, typeof(op2)) + ' ' + this.props("Type").value + ' ' + op2 + ')') end return('(' + op1 + ' ' + this.props("Type").value + ' ' + sys.to_type(op2, typeof(op1)) + ')') end func doCompare(data) op1 = d("Op1") op2 = d("Op2") if(this.cmp == '?') if(linked("Result")) blk.println(this.codename, ' = ', sys.to_type(op1, 104), ';') if(sys.is_linked(2)) blk.println('if (', this.codename, ') {').inc() end else blk.println('if (', sys.to_type(op1, 104), ') {').inc() end elseif(this.cmp == '!?') if(linked("Result")) blk.println(this.codename, ' = ', sys.to_type(op1, 104), ';') if(sys.is_linked(2)) blk.println('if (!', this.codename, ') {').inc() end else blk.println('if (!', sys.to_type(op1, 104), ') {').inc() end else if(linked("Result")) blk.println(this.codename, ' = ', make_cmp(op1, op2), ';') if(sys.is_linked(2)) blk.println('if (', this.codename, ') {').inc() end else blk.println('if ', make_cmp(op1, op2), ' {').inc() end end if(isdef("OutData")) event("onTrue", data) else event("onTrue") end if(sys.is_linked(2)) blk.dec() if(linked("onFalse")) blk.println('}').println('else {').inc() if(isdef("OutData")) event("onFalse", data) else event("onFalse") end blk.dec() end blk.println('}') end end func Result if(linked("doCompare")) return(this.codename) else if(this.cmp == '?') return(d("Op1")) elseif(this.cmp == '!?') return('!' + d("Op1")) else return('(' + d("Op1") + ' ' + this.cmp + ' ' + d("Op2") + ')') end end end