Tuple.hx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package python.lib;
  2. import python.lib.Builtin;
  3. import python.Syntax;
  4. extern class Tuple<X> implements ArrayAccess<X> {
  5. public static inline function empty<X>():Tuple<X> {
  6. return Builtin.tuple();
  7. }
  8. public static inline function fromArray<X>(a:Array<X>):Tuple<X> {
  9. return Builtin.tuple(a);
  10. }
  11. public var length(get_length, null):Int;
  12. inline function get_length():Int {
  13. return Builtin.len(this);
  14. }
  15. public inline function at (i:Int):X {
  16. return Syntax.arrayAccess(this, i);
  17. }
  18. public inline function toArray ():Array<X>
  19. {
  20. return Builtin.list(this);
  21. }
  22. }
  23. extern class Tup2 <A,B> extends Tuple<Dynamic>
  24. {
  25. public static inline function create <A,B>(a:A, b:B):Tup2<A,B> return Syntax.tuple(a,b);
  26. public var _1(get, null):A;
  27. public inline function get__1():A return Syntax.arrayAccess(this, 0);
  28. public var _2(get, null):B;
  29. public inline function get__2():B return Syntax.arrayAccess(this, 1);
  30. }
  31. extern class Tup3 <A,B,C> extends Tuple<Dynamic>
  32. {
  33. public static inline function create <A,B,C>(a:A, b:B,c:C):Tup3<A,B,C> return Syntax.tuple(a,b,c);
  34. public var _1(get, null):A;
  35. public inline function get__1():A return Syntax.arrayAccess(this, 0);
  36. public var _2(get, null):B;
  37. public inline function get__2():B return Syntax.arrayAccess(this, 1);
  38. public var _3(get, null):C;
  39. public inline function get__3():C return Syntax.arrayAccess(this, 2);
  40. }
  41. extern class Tup4 <A,B,C,D> extends Tuple<Dynamic>
  42. {
  43. public static inline function create <A,B,C,D>(a:A, b:B,c:C,d:D):Tup4<A,B,C,D> return Syntax.tuple(a,b,c,d);
  44. public var _1(get, null):A;
  45. public inline function get__1():A return Syntax.arrayAccess(this, 0);
  46. public var _2(get, null):B;
  47. public inline function get__2():B return Syntax.arrayAccess(this, 1);
  48. public var _3(get, null):C;
  49. public inline function get__3():C return Syntax.arrayAccess(this, 2);
  50. public var _4(get, null):D;
  51. public inline function get__4():D return Syntax.arrayAccess(this, 3);
  52. }
  53. extern class Tup5 <A,B,C,D,E> extends Tuple<Dynamic>
  54. {
  55. public static inline function create <A,B,C,D,E>(a:A, b:B,c:C,d:D,e:E):Tup5<A,B,C,D,E> return Syntax.tuple(a,b,c,d,e);
  56. public var _1(get, null):A;
  57. public inline function get__1():A return Syntax.arrayAccess(this, 0);
  58. public var _2(get, null):B;
  59. public inline function get__2():B return Syntax.arrayAccess(this, 1);
  60. public var _3(get, null):C;
  61. public inline function get__3():C return Syntax.arrayAccess(this, 2);
  62. public var _4(get, null):D;
  63. public inline function get__4():D return Syntax.arrayAccess(this, 3);
  64. public var _5(get, null):E;
  65. public inline function get__5():E return Syntax.arrayAccess(this, 4);
  66. }