瀏覽代碼

change serializer to be able to handle instances of basic classes from other modules

Nicolas Cannasse 15 年之前
父節點
當前提交
d5e3f97cb9
共有 3 個文件被更改,包括 12 次插入8 次删除
  1. 3 0
      doc/CHANGES.txt
  2. 8 8
      std/haxe/Serializer.hx
  3. 1 0
      std/neko/NekoString__.hx

+ 3 - 0
doc/CHANGES.txt

@@ -1,3 +1,6 @@
+2010-??-??: 2.06
+	neko : change serializer to be able to handle instances of basic classes from other modules
+
 2010-01-09: 2.05
 	js : added js.Scroll
 	js : package names are now checked at runtime to avoid clashes with existing libs

+ 8 - 8
std/haxe/Serializer.hx

@@ -177,14 +177,14 @@ class Serializer {
 		case TBool:
 			buf.add(if( v ) "t" else "f");
 		case TClass(c):
-			if( c == String ) {
+			if( #if neko untyped c.__is_String #else c == String #end ) {
 				serializeString(v);
 				return;
 			}
 			if( useCache && serializeRef(v) )
 				return;
-			switch( c ) {
-			case cast Array:
+			switch( #if neko Type.getClassName(c) #else c #end ) {
+			case #if neko "Array" #else cast Array #end:
 				var ucount = 0;
 				buf.add("a");
 				#if flash9
@@ -216,17 +216,17 @@ class Serializer {
 					}
 				}
 				buf.add("h");
-			case cast List:
+			case #if neko "List" #else cast List #end:
 				buf.add("l");
 				var v : List<Dynamic> = v;
 				for( i in v )
 					serialize(i);
 				buf.add("h");
-			case cast Date:
+			case #if neko "Date" #else cast Date #end:
 				var d : Date = v;
 				buf.add("v");
 				buf.add(d.toString());
-			case cast Hash:
+			case #if neko "Hash" #else cast Hash #end:
 				buf.add("b");
 				var v : Hash<Dynamic> = v;
 				for( k in v.keys() ) {
@@ -234,7 +234,7 @@ class Serializer {
 					serialize(v.get(k));
 				}
 				buf.add("h");
-			case cast IntHash:
+			case #if neko "IntHash" #else cast IntHash #end:
 				buf.add("q");
 				var v : IntHash<Dynamic> = v;
 				for( k in v.keys() ) {
@@ -243,7 +243,7 @@ class Serializer {
 					serialize(v.get(k));
 				}
 				buf.add("h");
-			case cast haxe.io.Bytes:
+			case #if neko "haxe.io.Bytes" #else cast haxe.io.Bytes #end:
 				var v : haxe.io.Bytes = v;
 				#if neko
 				var chars = new String(base_encode(v.getData(),untyped BASE64.__s));

+ 1 - 0
std/neko/NekoString__.hx

@@ -27,6 +27,7 @@ package neko;
 class NekoString__ implements String {
 
 	static var __name__ = ["String"];
+	static var __is_String = true;
 	private static var __split : Dynamic = Lib.load("std","string_split",2);
 
 	public var length(default,null) : Int;