forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package haxe; | ||
|  | 
 | ||
|  | import lua.Lua.select; | ||
|  | import lua.Table; | ||
|  | import lua.PairTools.copy; | ||
|  | import lua.TableTools.maxn; | ||
|  | import lua.TableTools.pack; | ||
|  | import lua.TableTools.unpack; | ||
|  | import haxe.iterators.RestIterator; | ||
|  | import haxe.iterators.RestKeyValueIterator; | ||
|  | 
 | ||
|  | private typedef NativeRest<T> = Table<Int,T>; | ||
|  | 
 | ||
|  | @:coreApi | ||
|  | abstract Rest<T>(NativeRest<T>) { | ||
|  | 	public var length(get, never):Int; | ||
|  | 	inline function get_length():Int | ||
|  | 		return maxn(this); | ||
|  | 
 | ||
|  | 	@:from static public function of<T>(array:Array<T>):Rest<T> { | ||
|  | 		return new Rest(Table.fromArray(array)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	inline function new(table:Table<Int,T>):Void | ||
|  | 		this = table; | ||
|  | 
 | ||
|  | 	@:arrayAccess inline function get(index:Int):T | ||
|  | 		return this[index + 1]; | ||
|  | 
 | ||
|  | 	@:to public function toArray():Array<T> { | ||
|  | 		return Table.toArray(this); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public inline function iterator():RestIterator<T> | ||
|  | 		return new RestIterator<T>(this); | ||
|  | 
 | ||
|  | 	public inline function keyValueIterator():RestKeyValueIterator<T> | ||
|  | 		return new RestKeyValueIterator<T>(this); | ||
|  | 
 | ||
|  | 	public inline function append(item:T):Rest<T> { | ||
|  | 		var result = copy(this); | ||
|  | 		Table.insert(result, item); | ||
|  | 		return new Rest(result); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public inline function prepend(item:T):Rest<T> { | ||
|  | 		var result = copy(this); | ||
|  | 		Table.insert(result, 1, item); | ||
|  | 		return new Rest(result); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function toString():String { | ||
|  | 		return toArray().toString(); | ||
|  | 	} | ||
|  | } |