load serializer; load math var ser = Serializer(); io.writeln( ser.encode( "abc" ) ) io.writeln( ser.decode( ser.encode( "abc" ) ) ) io.writeln( ser.encode( math ) ) io.writeln( ser.decode( ser.encode( math ) ) ) io.writeln( ser.encode( Serializer ) ) io.writeln( ser.decode( ser.encode( Serializer ) ) ) var list1 = { 1.3, 2.5, 3.6 } var list2 = { (any)(name='dao',year=2006), (123+456C, 'abc'), [1.2, 3.4; 5.6, 7.8], [1.2C, 3.4; 5.6, 7.8], [true, false] } var s1 = ser.encode( list1 ); var s2 = ser.encode( list2 ); io.writeln( s2 ) io.writeln( s1, ser.decode( s1 ) ) io.writeln( s2, ser.decode( s2 ) ) var map1 = { 'abc'->123, 'def'->{} } var s3 = ser.encode( map1 ); io.writeln( s3, ser.decode( s3 ) ) class Klass { var index = 123; var name = 'abc'; routine Klass( ){ index = 789; } routine Klass( i: int, s: string ){ index = i; name = s; } routine Klass( tup: tuple ){ index = tup[0]; name = tup[1]; } routine serialize(){ return index, name } } var object = Klass( 456, 'def' ); io.writeln( object.serialize() ); var ss = ser.encode( object ); io.writeln( ss ); object = (Klass)ser.decode( ss )[0] io.writeln( object, object.index, object.name ); ss = ser.encode( object ); io.writeln( ss ); var objects = ser.decode( ss ) object = objects[0] io.writeln( objects, object.index, object.name ); var e = Exception::Error( 'serialization test' ); ss = ser.encode( e ); io.writeln( ss, std.about(ss) ); e = ser.decode( ss )[0] io.writeln( e, e.summary ); return class MyException : Exception::Error { #use Exception; routine MyException( info = '' ) : Exception::Error( info ){} routine typename(){ return 'MyException' } # To override typename() from Exception; } var e2 = MyException( 'serialization test2' ); ss = ser.encode( e2 ); io.writeln( ss ); e2 = ser.decode( ss )[0] io.writeln( e2, e2.summary );