Excluding if I exceed type range by some very weird multi-type expression (almost impossible) can it still generate a problem in some case?
Code: Select all
Procedure.d priifn(e,t.d,f.d)
If e : ProcedureReturn t : EndIf : ProcedureReturn f
EndProcedure
Macro IIFn(e,t,f) ; IIFn(true?, trueNumber, falseNumber)
priifn(Bool(e),t,f)
EndMacro
Macro IIF(e,s,delim="|") ; IIF(true?, "trueString|falseString")
StringField(s,Bool(Not(e))+1,delim) ; delimiter can be multi-characters
EndMacro
CompilerIf #PB_Compiler_Debugger
Macro dq : "
EndMacro
Macro diifexpr(e,s,i="is") ; "non-blocking assert" (no CallDebugger)
Debug ~"File: \""+#PB_Compiler_Filename+
~"\"\nLine "+ #PB_Compiler_Line + ~": \""+ dq#e#dq +~"\" "+i+" "+ IIF(e,s)
EndMacro
CompilerElse
Macro diifexpr(e,s,i=""):EndMacro
CompilerEndIf
Debug ~"--- IIF ---\n"
x=10 : Debug "x = "+x
Debug ""+x+" Point"+ IIF(Not(x=1), "s") ; also IIF(x<>1,"s")
Debug ""+x+" is "+ IIF(x&1, "Odd|Even")
diifexpr(1&#False Or x/(x-8)=5, "true|not true!")
Debug ""
x=1 : Debug "x = "+x
Debug ""+x+" Point"+ IIF(x=1, "|s") ; empty StringField
Debug ~"\n--- IIFn ---\n"
Debug IIFn(1=0, 11, 10)
Debug ""+IIFn(1=0, 11, 10)
x = IIFn(1=0, %1011, $F-4-x)
Debug x
