Переглянути джерело

[python] cleanup dict API

Dan Korostelev 10 роки тому
батько
коміт
e861a89ad1
1 змінених файлів з 39 додано та 47 видалено
  1. 39 47
      std/python/Dict.hx

+ 39 - 47
std/python/Dict.hx

@@ -26,75 +26,67 @@ import python.Tuple;
 import python.NativeIterator;
 import python.Syntax;
 
-
-extern class DictView<T> {
-	private function __iter__():NativeIterator<T>;
-	public inline function iter ():NativeIterator<T>
-	{
-		return UBuiltins.iter(this);
-	}
-	public inline function length ():Int
-	{
-		return UBuiltins.len(this);
-	}
-
-	public inline function iterator ():Iterator<T>
-	{
-		return iter();
-	}
-}
-
 @:native("dict")
 extern class Dict<K,V> {
-	public function new ():Void;
+	function new ():Void;
 
-	public inline function length ():Int
-	{
+	var length(get,never):Int;
+	private inline function get_length():Int {
 		return UBuiltins.len(this);
 	}
 
-	public inline function hasKey (k:K):Bool {
-		return DictImpl.hasKey(this,k);
-	}
-
-	public function clear ():Void;
-	public function copy ():Dict<K,V>;
-	public function get (key:K, def:V):V;
+	function get(key:K, ?def:V):V;
 
-	public function update (d:Dict<K,V>):Void;
+	inline function getSafe(key:K):V {
+		return Syntax.arrayAccess(this, key);
+	}
 
-	public function keys ():DictView<K>;
-	public function values ():DictView<V>;
-	public function items ():DictView<Tuple2<K,V>>;
+	inline function set(key:K, val:V):Void {
+		Syntax.arraySet(this, key, val);
+	}
 
+	inline function remove(key:K):Void {
+		Syntax.delete(python.Syntax.arrayAccess(this, key));
+	}
 
-	public inline function set (key:K, val:V):Void {
-		DictImpl.set(this, key, val);
+	inline function hasKey(k:K):Bool {
+		return Syntax.isIn(k, this);
 	}
 
-	public inline function remove (key:K):Void
-	{
-		DictImpl.remove(this, key);
+	function clear():Void;
+	function copy():Dict<K,V>;
+	function items():DictView<Tuple2<K,V>>;
+	function keys():DictView<K>;
+	function pop(key:K, ?def:V):V;
+	function popitem():Tuple2<K,V>;
+	function setdefault(key:K, ?def:V):V;
+	function update(d:Dict<K,V>):Void;
+	function values():DictView<V>;
+
+	inline function iter():NativeIterator<K> {
+		return UBuiltins.iter(this);
 	}
 
-	public inline function iterator ():Iterator<V>
-	{
+	inline function iterator():Iterator<V> {
 		return values().iter();
 	}
+
 	private function __iter__():NativeIterator<K>;
 }
 
-class DictImpl {
-
-	public static inline function hasKey <X>(d:Dict<X, Dynamic>, key:X) {
-		return Syntax.isIn(key, d);
+extern class DictView<T> {
+	var length(get,never):Int;
+	private inline function get_length():Int {
+		return UBuiltins.len(this);
 	}
 
-	public static inline function remove <X>(d:Dict<X, Dynamic>, key:X) {
-		Syntax.delete(python.Syntax.arrayAccess(d, key));
+	inline function iter():NativeIterator<T> {
+		return UBuiltins.iter(this);
 	}
 
-	public static inline function set <K,V>(d:Dict<K, V>, key:K, val:V) {
-		Syntax.arraySet(d, key, val);
+	inline function iterator():Iterator<T> {
+		return iter();
 	}
+
+	private function __iter__():NativeIterator<T>;
 }