Sfoglia il codice sorgente

[lua] add lua.Table.create to create a plain lua table.

Dan Korostelev 9 anni fa
parent
commit
aa4bd62da5
2 ha cambiato i file con 9 aggiunte e 7 eliminazioni
  1. 4 4
      std/lua/PairTools.hx
  2. 5 3
      std/lua/Table.hx

+ 4 - 4
std/lua/PairTools.hx

@@ -10,12 +10,12 @@ class PairTools {
 		untyped __lua__("for k,v in _G.pairs(table) do func(k,v) end");
 	}
 	public static function ipairsMap<A,B>(table:Table<Dynamic,A>, func : Int->A->B) : Table<Int,B>  {
-		var ret : Table<Int,B> = cast {};
+		var ret : Table<Int,B> = Table.create();
 		untyped __lua__( "for i,v in _G.ipairs(table) do ret[i] = func(i,v) end;");
 		return ret;
 	}
 	public static function pairsMap<A,B,C>(table:Table<A,B>, func : A->B->C->C) : Table<A,C> {
-		var ret : Table<A,C> = cast {};
+		var ret : Table<A,C> = Table.create();
 		untyped __lua__( "for k,v in _G.pairs(table) do ret[k] = func(k,v) end;");
 		return ret;
 	}
@@ -30,7 +30,7 @@ class PairTools {
 
 
 	public static function ipairsConcat<T>(table1:Table<Int,T>, table2:Table<Int,T>){
-		var ret:Table<Int,T> = cast {};
+		var ret:Table<Int,T> = Table.create();
 		ipairsFold(table1, function(a,b,c:Table<Int,T>){ c[a] = b; return c;}, ret);
 		var size = lua.Table.maxn(ret);
 		ipairsFold(table2, function(a,b,c:Table<Int,T>){ c[a + size] = b; return c;}, ret);
@@ -52,7 +52,7 @@ class PairTools {
 	}
 
 	public static function copy<A,B>(table1:Table<A,B>) : Table<A,B> {
-		var ret : Table<A,B> = cast {};
+		var ret : Table<A,B> = Table.create();
 		untyped __lua__("for k,v in _G.pairs(table1) do ret[k] = v end");
 		return ret;
 	}

+ 5 - 3
std/lua/Table.hx

@@ -1,10 +1,12 @@
 package lua;
 
 /**
-	This library provides generic functions for table manipulation. 
+	This library provides generic functions for table manipulation.
 **/
-@:native("_G.table") 
+@:native("_G.table")
 extern class Table<A,B> implements ArrayAccess<B> implements Dynamic<B> {
+	static inline function create<A,B>():Table<A,B> return untyped __lua__("{}");
+
 	@:overload(function<A,B>(table:Table<A,B>):Void{})
 	public static function concat<A,B>(table:Table<A,B>, ?sep:String) : String;
 
@@ -21,7 +23,7 @@ extern class Table<A,B> implements ArrayAccess<B> implements Dynamic<B> {
 
 	public static function maxn<B>(table: Table<Int,B>) : Int;
 	public static function pack<T>(args:T) : Table<Int,T>;
-	public static function unpack(arg:lua.Table<Dynamic,Dynamic>, ?min:Int, ?max:Int) : Dynamic;
+	public static function unpack(arg:Table<Dynamic,Dynamic>, ?min:Int, ?max:Int) : Dynamic;
 	private static function __init__() : Void {
 		// lua table polyfills
 		haxe.macro.Compiler.includeFile("lua/_lua/_hx_table_polyfill.lua");