Dict.hx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package python.lib;
  2. import python.lib.Builtin;
  3. import python.lib.Tuple;
  4. import python.NativeIterator;
  5. import python.Syntax;
  6. extern class DictView<T> {
  7. public inline function iter ():NativeIterator<T>
  8. {
  9. return Builtin.iter(this);
  10. }
  11. public inline function length ():Int
  12. {
  13. return Builtin.len(this);
  14. }
  15. public inline function iterator ():Iterator<T>
  16. {
  17. return iter();
  18. }
  19. }
  20. @:pythonImport("builtins", "dict")
  21. extern class Dict <K, V>
  22. {
  23. public function new ():Void;
  24. public inline function length ():Int
  25. {
  26. return python.lib.Builtin.len(this);
  27. }
  28. public inline function hasKey (k:K):Bool {
  29. return DictImpl.hasKey(this,k);
  30. }
  31. public function clear ():Void;
  32. public function copy ():Dict<K,V>;
  33. public function get (key:K, def:V):V;
  34. public function update (d:Dict<K,V>):Void;
  35. public function keys ():DictView<K>;
  36. public function values ():DictView<V>;
  37. public function items ():DictView<Tup2<K,V>>;
  38. public inline function set (key:K, val:V):Void {
  39. DictImpl.set(this, key, val);
  40. }
  41. public inline function remove (key:K):Void
  42. {
  43. DictImpl.remove(this, key);
  44. }
  45. public inline function iterator ():Iterator<V>
  46. {
  47. return values().iter();
  48. }
  49. public function __iter__():NativeIterator<K>;
  50. }
  51. class DictImpl {
  52. public static inline function hasKey <X>(d:Dict<X, Dynamic>, key:X) {
  53. return Syntax.isIn(key, d);
  54. }
  55. public static inline function remove <X>(d:Dict<X, Dynamic>, key:X) {
  56. Syntax.delete(python.Syntax.arrayAccess(d, key));
  57. }
  58. public static inline function set <K,V>(d:Dict<K, V>, key:K, val:V) {
  59. Syntax.arraySet(d, key, val);
  60. }
  61. }