[NAME] ALL.module.core.serializer [TITLE] Serializer [DESCRIPTION] Serializer is the module to provide methods for serializing data structures into strings and deserializing from strings. It also provide methods to serialize and deserialize an entire namespace. These methods include: * serialize(value:any)=>string Serialize a value to string. Primitive types (such as int, string) and container types (such as array, list, map and tuple) are directly serialized. Objects of C data types and Dao classes can be serialized if they define method named serialize() that return data that can be directly serialized. * deserialize(text:string)=>any Deserialize a string into a value. Serializations from primitive types (such as int, string) and container types (such as array, list, map and tuple) can be directly deserialized into values. Serializations from objects of C data types and Dao classes will be deserialized into primitive values or container values first. If the C data types and Dao classes has defined constructors that can take these values as parameters, such constrcuts will be used to construct proper C data objects and Dao objects as the deserialized values. * backup(tofile='backup.sdo',limit=0) Backup the current namespace by serialization to a file. * restore(fromfile='backup.sdo') Restore a namespace from a backup file. Upon loading this module, these methods are imported to the std namespace. Examples, 1 load serializer; 2 3 list1 = { 1.3, 2.5, 3.6 } 4 list2 = { (any)(name=>'dao',year=>2006), (123+456C, 'abc'), [1.2, 3.4; 5.6, 7.8] } 5 6 s1 = std.serialize( list1 ); 7 s2 = std.serialize( list2 ); 8 9 io.writeln( s2 ) 10 io.writeln( s1, std.deserialize( s1 ) ) 11 io.writeln( s2, std.deserialize( s2 ) ) 12 13 map1 = { 'abc'->123, 'def'->{} } 14 s3 = std.serialize( map1 ); 15 io.writeln( s3, std.deserialize( s3 ) ) 16 17 class Klass 18 { 19 var index = 123; 20 var name = 'abc'; 21 22 routine Klass( ){ index = 789; } 23 routine Klass( i : int, s : string ){ index = i; name = s; } 24 routine Klass( tup : tuple<int,string> ){index = tup[0]; name = tup[1]; } 25 routine serialize(){ return index, name } 26 } 27 object = Klass( 456, 'def' ); 28 io.writeln( object.serialize() ); 29 30 ss = std.serialize( object ); 31 io.writeln( ss ); 32 object = (Klass)std.deserialize( ss ) 33 io.writeln( object, object.index, object.name );