forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
142
Kha/Tools/macos/std/flash/_std/haxe/ds/IntMap.hx
Normal file
142
Kha/Tools/macos/std/flash/_std/haxe/ds/IntMap.hx
Normal file
@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Copyright (C)2005-2019 Haxe Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package haxe.ds;
|
||||
|
||||
@:coreApi class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
|
||||
private var h:flash.utils.Dictionary;
|
||||
|
||||
public function new():Void {
|
||||
h = new flash.utils.Dictionary();
|
||||
}
|
||||
|
||||
public inline function set(key:Int, value:T):Void {
|
||||
untyped h[key] = value;
|
||||
}
|
||||
|
||||
public inline function get(key:Int):Null<T> {
|
||||
return untyped h[key];
|
||||
}
|
||||
|
||||
public inline function exists(key:Int):Bool {
|
||||
return untyped __in__(key, h);
|
||||
}
|
||||
|
||||
public function remove(key:Int):Bool {
|
||||
if (!exists(key))
|
||||
return false;
|
||||
untyped __delete__(h, key);
|
||||
return true;
|
||||
}
|
||||
|
||||
public inline function keys():Iterator<Int> {
|
||||
return new IntMapKeysIterator(h);
|
||||
}
|
||||
|
||||
public inline function iterator():Iterator<T> {
|
||||
return new IntMapValuesIterator<T>(h);
|
||||
}
|
||||
|
||||
@:runtime public inline function keyValueIterator():KeyValueIterator<Int, T> {
|
||||
return new haxe.iterators.MapKeyValueIterator(this);
|
||||
}
|
||||
|
||||
public function copy():IntMap<T> {
|
||||
var copied = new IntMap();
|
||||
for (key in keys())
|
||||
copied.set(key, get(key));
|
||||
return copied;
|
||||
}
|
||||
|
||||
public function toString():String {
|
||||
var s = new StringBuf();
|
||||
s.add("{");
|
||||
var it = keys();
|
||||
for (i in it) {
|
||||
s.add(i);
|
||||
s.add(" => ");
|
||||
s.add(Std.string(get(i)));
|
||||
if (it.hasNext())
|
||||
s.add(", ");
|
||||
}
|
||||
s.add("}");
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
public inline function clear():Void {
|
||||
h = new flash.utils.Dictionary();
|
||||
}
|
||||
}
|
||||
|
||||
// this version uses __has_next__/__forin__ special SWF opcodes for iteration with no allocation
|
||||
|
||||
@:allow(haxe.ds.IntMap)
|
||||
private class IntMapKeysIterator {
|
||||
var h:flash.utils.Dictionary;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
|
||||
inline function new(h:flash.utils.Dictionary):Void {
|
||||
this.h = h;
|
||||
this.index = 0;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():Int {
|
||||
var r:Int = untyped __forin__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
@:allow(haxe.ds.IntMap)
|
||||
private class IntMapValuesIterator<T> {
|
||||
var h:flash.utils.Dictionary;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
|
||||
inline function new(h:flash.utils.Dictionary):Void {
|
||||
this.h = h;
|
||||
this.index = 0;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():T {
|
||||
var r = untyped __foreach__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
return r;
|
||||
}
|
||||
}
|
141
Kha/Tools/macos/std/flash/_std/haxe/ds/ObjectMap.hx
Normal file
141
Kha/Tools/macos/std/flash/_std/haxe/ds/ObjectMap.hx
Normal file
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Copyright (C)2005-2019 Haxe Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package haxe.ds;
|
||||
|
||||
@:coreApi
|
||||
class ObjectMap<K:{}, V> extends flash.utils.Dictionary implements haxe.Constraints.IMap<K, V> {
|
||||
public function new() {
|
||||
super(false);
|
||||
}
|
||||
|
||||
public inline function get(key:K):Null<V> {
|
||||
return untyped this[key];
|
||||
}
|
||||
|
||||
public inline function set(key:K, value:V):Void {
|
||||
untyped this[key] = value;
|
||||
}
|
||||
|
||||
public inline function exists(key:K):Bool {
|
||||
return untyped this[key] != null;
|
||||
}
|
||||
|
||||
public function remove(key:K):Bool {
|
||||
var has = exists(key);
|
||||
untyped __delete__(this, key);
|
||||
return has;
|
||||
}
|
||||
|
||||
public function keys():Iterator<K> {
|
||||
return NativePropertyIterator.iterator(this);
|
||||
}
|
||||
|
||||
public function iterator():Iterator<V> {
|
||||
return NativeValueIterator.iterator(this);
|
||||
}
|
||||
|
||||
@:runtime public inline function keyValueIterator():KeyValueIterator<K, V> {
|
||||
return new haxe.iterators.MapKeyValueIterator(this);
|
||||
}
|
||||
|
||||
public function copy():ObjectMap<K, V> {
|
||||
var copied = new ObjectMap();
|
||||
for (key in keys())
|
||||
copied.set(key, get(key));
|
||||
return copied;
|
||||
}
|
||||
|
||||
public function toString():String {
|
||||
var s = "";
|
||||
var it = keys();
|
||||
for (i in it) {
|
||||
s += (s == "" ? "" : ",") + Std.string(i);
|
||||
s += " => ";
|
||||
s += Std.string(get(i));
|
||||
}
|
||||
return s + "}";
|
||||
}
|
||||
|
||||
public function clear():Void {
|
||||
for (i in keys())
|
||||
untyped __delete__(this, i);
|
||||
}
|
||||
}
|
||||
|
||||
private class NativePropertyIterator {
|
||||
var collection:Dynamic;
|
||||
var index:Int = 0;
|
||||
|
||||
public static inline function iterator(collection:Dynamic):NativePropertyIterator {
|
||||
var result = new NativePropertyIterator();
|
||||
result.collection = collection;
|
||||
return result;
|
||||
}
|
||||
|
||||
function new() {}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var c = collection;
|
||||
var i = index;
|
||||
var result = untyped __has_next__(c, i);
|
||||
collection = c;
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
|
||||
public inline function next():Dynamic {
|
||||
var i = index;
|
||||
var result = untyped __forin__(collection, i);
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private class NativeValueIterator {
|
||||
var collection:Dynamic;
|
||||
var index:Int = 0;
|
||||
|
||||
public static inline function iterator(collection:Dynamic):NativeValueIterator {
|
||||
var result = new NativeValueIterator();
|
||||
result.collection = collection;
|
||||
return result;
|
||||
}
|
||||
|
||||
function new() {}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var c = collection;
|
||||
var i = index;
|
||||
var result = untyped __has_next__(c, i);
|
||||
collection = c;
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
|
||||
public inline function next():Dynamic {
|
||||
var i = index;
|
||||
var result = untyped __foreach__(collection, i);
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
}
|
202
Kha/Tools/macos/std/flash/_std/haxe/ds/StringMap.hx
Normal file
202
Kha/Tools/macos/std/flash/_std/haxe/ds/StringMap.hx
Normal file
@ -0,0 +1,202 @@
|
||||
/*
|
||||
* Copyright (C)2005-2019 Haxe Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package haxe.ds;
|
||||
|
||||
@:coreApi class StringMap<T> implements haxe.Constraints.IMap<String, T> {
|
||||
private var h:Dynamic;
|
||||
private var rh:Dynamic;
|
||||
|
||||
static var reserved = {};
|
||||
|
||||
public function new():Void {
|
||||
h = {};
|
||||
}
|
||||
|
||||
inline function isReserved(key:String):Bool {
|
||||
return untyped __in__(key, reserved);
|
||||
}
|
||||
|
||||
public inline function set(key:String, value:T):Void {
|
||||
if (isReserved(key))
|
||||
setReserved(key, value);
|
||||
else
|
||||
untyped h[key] = value;
|
||||
}
|
||||
|
||||
public inline function get(key:String):Null<T> {
|
||||
if (isReserved(key))
|
||||
return getReserved(key);
|
||||
return untyped h[key];
|
||||
}
|
||||
|
||||
public inline function exists(key:String):Bool {
|
||||
if (isReserved(key))
|
||||
return existsReserved(key);
|
||||
return untyped __in__(key, h);
|
||||
}
|
||||
|
||||
function setReserved(key:String, value:T):Void {
|
||||
if (rh == null)
|
||||
rh = {};
|
||||
untyped rh["$" + key] = value;
|
||||
}
|
||||
|
||||
function getReserved(key:String):Null<T> {
|
||||
return rh == null ? null : untyped rh["$" + key];
|
||||
}
|
||||
|
||||
function existsReserved(key:String):Bool {
|
||||
if (rh == null)
|
||||
return false;
|
||||
return untyped __in__("$" + key, rh);
|
||||
}
|
||||
|
||||
public function remove(key:String):Bool {
|
||||
if (isReserved(key)) {
|
||||
key = "$" + key;
|
||||
if (rh == null || !untyped __in__(key, rh))
|
||||
return false;
|
||||
untyped __delete__(rh, key);
|
||||
return true;
|
||||
} else {
|
||||
if (!untyped __in__(key, h))
|
||||
return false;
|
||||
untyped __delete__(h, key);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public inline function keys():Iterator<String> {
|
||||
return new StringMapKeysIterator(h, rh);
|
||||
}
|
||||
|
||||
public inline function iterator():Iterator<T> {
|
||||
return new StringMapValuesIterator<T>(h, rh);
|
||||
}
|
||||
|
||||
@:runtime public inline function keyValueIterator():KeyValueIterator<String, T> {
|
||||
return new haxe.iterators.MapKeyValueIterator(this);
|
||||
}
|
||||
|
||||
public function copy():StringMap<T> {
|
||||
var copied = new StringMap();
|
||||
for (key in keys())
|
||||
copied.set(key, get(key));
|
||||
return copied;
|
||||
}
|
||||
|
||||
public function toString():String {
|
||||
var s = new StringBuf();
|
||||
s.add("{");
|
||||
var it = keys();
|
||||
for (i in it) {
|
||||
s.add(i);
|
||||
s.add(" => ");
|
||||
s.add(Std.string(get(i)));
|
||||
if (it.hasNext())
|
||||
s.add(", ");
|
||||
}
|
||||
s.add("}");
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
public inline function clear():Void {
|
||||
h = {};
|
||||
rh = null;
|
||||
}
|
||||
}
|
||||
|
||||
// this version uses __has_next__/__forin__ special SWF opcodes for iteration with no allocation
|
||||
|
||||
@:allow(haxe.ds.StringMap)
|
||||
private class StringMapKeysIterator {
|
||||
var h:Dynamic;
|
||||
var rh:Dynamic;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
var isReserved:Bool;
|
||||
|
||||
inline function new(h:Dynamic, rh:Dynamic):Void {
|
||||
this.h = h;
|
||||
this.rh = rh;
|
||||
this.index = 0;
|
||||
isReserved = false;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
if (!n && rh != null) {
|
||||
h = this.h = rh;
|
||||
index = this.index = 0;
|
||||
rh = null;
|
||||
isReserved = true;
|
||||
n = untyped __has_next__(h, index);
|
||||
}
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():String {
|
||||
var r:String = untyped __forin__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
if (isReserved)
|
||||
r = r.substr(1);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
@:allow(haxe.ds.StringMap)
|
||||
private class StringMapValuesIterator<T> {
|
||||
var h:Dynamic;
|
||||
var rh:Dynamic;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
|
||||
inline function new(h:Dynamic, rh:Dynamic):Void {
|
||||
this.h = h;
|
||||
this.rh = rh;
|
||||
this.index = 0;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
if (!n && rh != null) {
|
||||
h = this.h = rh;
|
||||
index = this.index = 0;
|
||||
rh = null;
|
||||
n = untyped __has_next__(h, index);
|
||||
}
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():T {
|
||||
var r = untyped __foreach__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
return r;
|
||||
}
|
||||
}
|
147
Kha/Tools/macos/std/flash/_std/haxe/ds/UnsafeStringMap.hx
Normal file
147
Kha/Tools/macos/std/flash/_std/haxe/ds/UnsafeStringMap.hx
Normal file
@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Copyright (C)2005-2019 Haxe Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package haxe.ds;
|
||||
|
||||
/**
|
||||
This is similar to `StringMap` excepts that it does not sanitize the keys.
|
||||
As a result, it will be faster to access the map for reading, but it might fail
|
||||
with some reserved keys such as `constructor` or `prototype`.
|
||||
**/
|
||||
class UnsafeStringMap<T> implements haxe.Constraints.IMap<String, T> {
|
||||
private var h:flash.utils.Dictionary;
|
||||
|
||||
public function new():Void {
|
||||
h = new flash.utils.Dictionary();
|
||||
}
|
||||
|
||||
public inline function set(key:String, value:T):Void {
|
||||
untyped h[key] = value;
|
||||
}
|
||||
|
||||
public inline function get(key:String):Null<T> {
|
||||
return untyped h[key];
|
||||
}
|
||||
|
||||
public inline function exists(key:String):Bool {
|
||||
return untyped __in__(key, h);
|
||||
}
|
||||
|
||||
public function remove(key:String):Bool {
|
||||
if (untyped !h.hasOwnProperty(key))
|
||||
return false;
|
||||
untyped __delete__(h, key);
|
||||
return true;
|
||||
}
|
||||
|
||||
public inline function keys():Iterator<String> {
|
||||
return new UnsafeStringMapKeysIterator(h);
|
||||
}
|
||||
|
||||
public inline function iterator():Iterator<T> {
|
||||
return new UnsafeStringMapValuesIterator<T>(h);
|
||||
}
|
||||
|
||||
public inline function keyValueIterator():KeyValueIterator<String, T> {
|
||||
return new haxe.iterators.MapKeyValueIterator(this);
|
||||
}
|
||||
|
||||
public function copy():UnsafeStringMap<T> {
|
||||
var copied = new UnsafeStringMap();
|
||||
for (key in keys())
|
||||
copied.set(key, get(key));
|
||||
return copied;
|
||||
}
|
||||
|
||||
public function toString():String {
|
||||
var s = new StringBuf();
|
||||
s.add("{");
|
||||
var it = keys();
|
||||
for (i in it) {
|
||||
s.add(i);
|
||||
s.add(" => ");
|
||||
s.add(Std.string(get(i)));
|
||||
if (it.hasNext())
|
||||
s.add(", ");
|
||||
}
|
||||
s.add("}");
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
public inline function clear():Void {
|
||||
h = new flash.utils.Dictionary();
|
||||
}
|
||||
}
|
||||
|
||||
// this version uses __has_next__/__forin__ special SWF opcodes for iteration with no allocation
|
||||
|
||||
@:allow(haxe.ds.UnsafeStringMap)
|
||||
private class UnsafeStringMapKeysIterator {
|
||||
var h:flash.utils.Dictionary;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
|
||||
inline function new(h:flash.utils.Dictionary):Void {
|
||||
this.h = h;
|
||||
this.index = 0;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():String {
|
||||
var r:String = untyped __forin__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
@:allow(haxe.ds.UnsafeStringMap)
|
||||
private class UnsafeStringMapValuesIterator<T> {
|
||||
var h:flash.utils.Dictionary;
|
||||
var index:Int;
|
||||
var nextIndex:Int;
|
||||
|
||||
inline function new(h:flash.utils.Dictionary):Void {
|
||||
this.h = h;
|
||||
this.index = 0;
|
||||
hasNext();
|
||||
}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var h = h, index = index; // tmp vars required for __has_next
|
||||
var n = untyped __has_next__(h, index);
|
||||
this.nextIndex = index; // store next index
|
||||
return n;
|
||||
}
|
||||
|
||||
public inline function next():T {
|
||||
var r = untyped __foreach__(h, nextIndex);
|
||||
index = nextIndex;
|
||||
return r;
|
||||
}
|
||||
}
|
141
Kha/Tools/macos/std/flash/_std/haxe/ds/WeakMap.hx
Normal file
141
Kha/Tools/macos/std/flash/_std/haxe/ds/WeakMap.hx
Normal file
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Copyright (C)2005-2019 Haxe Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package haxe.ds;
|
||||
|
||||
@:coreApi
|
||||
class WeakMap<K:{}, V> extends flash.utils.Dictionary implements haxe.Constraints.IMap<K, V> {
|
||||
public function new() {
|
||||
super(true);
|
||||
}
|
||||
|
||||
public inline function get(key:K):Null<V> {
|
||||
return untyped this[key];
|
||||
}
|
||||
|
||||
public inline function set(key:K, value:V):Void {
|
||||
untyped this[key] = value;
|
||||
}
|
||||
|
||||
public inline function exists(key:K):Bool {
|
||||
return untyped this[key] != null;
|
||||
}
|
||||
|
||||
public function remove(key:K):Bool {
|
||||
var has = exists(key);
|
||||
untyped __delete__(this, key);
|
||||
return has;
|
||||
}
|
||||
|
||||
public function keys():Iterator<K> {
|
||||
return NativePropertyIterator.iterator(this);
|
||||
}
|
||||
|
||||
public function iterator():Iterator<V> {
|
||||
return NativeValueIterator.iterator(this);
|
||||
}
|
||||
|
||||
public inline function keyValueIterator():KeyValueIterator<K, V> {
|
||||
return new haxe.iterators.MapKeyValueIterator(this);
|
||||
}
|
||||
|
||||
public function copy():WeakMap<K, V> {
|
||||
var copied = new WeakMap();
|
||||
for (key in keys())
|
||||
copied.set(key, get(key));
|
||||
return copied;
|
||||
}
|
||||
|
||||
public function toString():String {
|
||||
var s = "";
|
||||
var it = keys();
|
||||
for (i in it) {
|
||||
s += (s == "" ? "" : ",") + Std.string(i);
|
||||
s += " => ";
|
||||
s += Std.string(get(i));
|
||||
}
|
||||
return s + "}";
|
||||
}
|
||||
|
||||
public function clear():Void {
|
||||
for (i in keys())
|
||||
untyped __delete__(this, i);
|
||||
}
|
||||
}
|
||||
|
||||
private class NativePropertyIterator {
|
||||
var collection:Dynamic;
|
||||
var index:Int = 0;
|
||||
|
||||
public static inline function iterator(collection:Dynamic):NativePropertyIterator {
|
||||
var result = new NativePropertyIterator();
|
||||
result.collection = collection;
|
||||
return result;
|
||||
}
|
||||
|
||||
function new() {}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var c = collection;
|
||||
var i = index;
|
||||
var result = untyped __has_next__(c, i);
|
||||
collection = c;
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
|
||||
public inline function next():Dynamic {
|
||||
var i = index;
|
||||
var result = untyped __forin__(collection, i);
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private class NativeValueIterator {
|
||||
var collection:Dynamic;
|
||||
var index:Int = 0;
|
||||
|
||||
public static inline function iterator(collection:Dynamic):NativeValueIterator {
|
||||
var result = new NativeValueIterator();
|
||||
result.collection = collection;
|
||||
return result;
|
||||
}
|
||||
|
||||
function new() {}
|
||||
|
||||
public inline function hasNext():Bool {
|
||||
var c = collection;
|
||||
var i = index;
|
||||
var result = untyped __has_next__(c, i);
|
||||
collection = c;
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
|
||||
public inline function next():Dynamic {
|
||||
var i = index;
|
||||
var result = untyped __foreach__(collection, i);
|
||||
index = i;
|
||||
return result;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user