/* Test some permuations of type conversion - both numeric => String * conversions, as well as val => class conversions */ using namespace oadl; class complex { var real, imag; public proc create(r,i) { real = r; if( nargs() > 1 ) { imag = i; } else { imag = 0; } } operator => (rhs) { if (rhs == String) { return "(" ## (real=>String) ## "," ## (imag=>String) ## ")"; } else { return real => rhs; } } operator \=> (lhs) { return new complex(lhs); } } proc main() { var a, b; a = new complex(1,2); b = Int(a); "B is: ", b, "\n"; a = 3.14 => complex; // Use conversion rather than create "A is: ", String(a), "\n"; }