@@ -6,8 +6,160 @@ import scala.reflect.ClassTag
6
6
object DynamicTuple {
7
7
8
8
given iarrayOps : [T ](arr : IArray [T ]) {
9
+ def ++ [U >: T : ClassTag ](that : IArray [U ]): IArray [U ] =
10
+ (arr.asInstanceOf [Array [T ]] ++ that.asInstanceOf [Array [U ]]).asInstanceOf
11
+
12
+ def contains (elem : T ): Boolean =
13
+ arr.asInstanceOf [Array [T ]].contains(elem)
14
+
15
+ def count (p : T => Boolean ): Int =
16
+ arr.asInstanceOf [Array [T ]].count(p)
17
+
18
+ def drop (n : Int ): IArray [T ] =
19
+ arr.asInstanceOf [Array [T ]].drop(n).asInstanceOf
20
+
21
+ def dropRight (n : Int ): IArray [T ] =
22
+ arr.asInstanceOf [Array [T ]].dropRight(n).asInstanceOf
23
+
24
+ def dropWhile (p : T => Boolean ): IArray [T ] =
25
+ arr.asInstanceOf [Array [T ]].dropWhile(p).asInstanceOf
26
+
27
+ def exists (p : T => Boolean ): IArray [T ] =
28
+ arr.asInstanceOf [Array [T ]].exists(p).asInstanceOf
29
+
30
+ def filter (p : T => Boolean ): IArray [T ] =
31
+ arr.asInstanceOf [Array [T ]].filter(p).asInstanceOf
32
+
33
+ def filterNot (p : T => Boolean ): IArray [T ] =
34
+ arr.asInstanceOf [Array [T ]].filterNot(p).asInstanceOf
35
+
36
+ def find (p : T => Boolean ): Option [T ] =
37
+ arr.asInstanceOf [Array [T ]].find(p).asInstanceOf
38
+
39
+ def flatMap [U : ClassTag ](f : T => IterableOnce [U ]): IArray [U ] =
40
+ arr.asInstanceOf [Array [T ]].flatMap(f).asInstanceOf
41
+
42
+ def flatten [U : ClassTag ](given T => Iterable [U ]): IArray [U ] =
43
+ arr.asInstanceOf [Array [T ]].flatten.asInstanceOf
44
+
45
+ def fold [U >: T : ClassTag ](z : U )(op : (U , U ) => U ): U =
46
+ arr.asInstanceOf [Array [T ]].fold(z)(op).asInstanceOf
47
+
48
+ def foldLeft [U >: T : ClassTag ](z : U )(op : (U , T ) => U ): U =
49
+ arr.asInstanceOf [Array [T ]].foldLeft(z)(op).asInstanceOf
50
+
51
+ def foldRight [U >: T : ClassTag ](z : U )(op : (T , U ) => U ): U =
52
+ arr.asInstanceOf [Array [T ]].foldRight(z)(op).asInstanceOf
53
+
54
+ def forall (p : T => Boolean ): Boolean =
55
+ arr.asInstanceOf [Array [T ]].forall(p)
56
+
57
+ def foreach [U ](f : T => U ): Unit =
58
+ arr.asInstanceOf [Array [T ]].foreach(f)
59
+
60
+ def head : T =
61
+ arr.asInstanceOf [Array [T ]].head
62
+
63
+ def headOption : Option [T ] =
64
+ arr.asInstanceOf [Array [T ]].headOption
65
+
66
+ def indexOf (elem : T , from : Int = 0 ): Int =
67
+ arr.asInstanceOf [Array [T ]].indexOf(elem, from)
68
+
69
+ def indexWhere (p : T => Boolean , from : Int = 0 ): Int =
70
+ arr.asInstanceOf [Array [T ]].indexWhere(p, from)
71
+
72
+ def indices : Range =
73
+ arr.asInstanceOf [Array [T ]].indices.asInstanceOf
74
+
75
+ def init : IArray [T ] =
76
+ arr.asInstanceOf [Array [T ]].init.asInstanceOf
77
+
78
+ def isEmpty : Boolean =
79
+ arr.asInstanceOf [Array [T ]].isEmpty
80
+
81
+ def iterator : Iterator [T ] =
82
+ arr.asInstanceOf [Array [T ]].iterator
83
+
84
+ def last : T =
85
+ arr.asInstanceOf [Array [T ]].last
86
+
87
+ def lastOption : Option [T ] =
88
+ arr.asInstanceOf [Array [T ]].lastOption
89
+
90
+ def lastIndexOf (elem : T , from : Int = 0 ): Int =
91
+ arr.asInstanceOf [Array [T ]].lastIndexOf(elem, from)
92
+
93
+ def lastIndexWhere (p : T => Boolean , from : Int = 0 ): Int =
94
+ arr.asInstanceOf [Array [T ]].lastIndexWhere(p, from)
95
+
9
96
def map [U : ClassTag ](f : T => U ): IArray [U ] =
10
- arr.asInstanceOf [Array [T ]].map(f).asInstanceOf [IArray [U ]]
97
+ arr.asInstanceOf [Array [T ]].map(f).asInstanceOf
98
+
99
+ def nonEmpty : Boolean =
100
+ arr.asInstanceOf [Array [T ]].nonEmpty
101
+
102
+ def partition (p : T => Boolean ): (IArray [T ], IArray [T ]) = arr.asInstanceOf [Array [T ]].partition(p) match {
103
+ case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
104
+ }
105
+
106
+ def reverse : IArray [T ] =
107
+ arr.asInstanceOf [Array [T ]].reverse.asInstanceOf
108
+
109
+ def scan [U >: T : ClassTag ](z : U )(op : (U , U ) => U ): Array [U ] =
110
+ arr.asInstanceOf [Array [T ]].scan(z)(op).asInstanceOf
111
+
112
+ def scanLeft [U : ClassTag ](z : U )(op : (U , T ) => U ): Array [U ] =
113
+ arr.asInstanceOf [Array [T ]].scanLeft(z)(op).asInstanceOf
114
+
115
+ def scanRight [U : ClassTag ](z : U )(op : (T , U ) => U ): Array [U ] =
116
+ arr.asInstanceOf [Array [T ]].scanRight(z)(op).asInstanceOf
117
+
118
+ def size : Int =
119
+ arr.asInstanceOf [Array [T ]].size
120
+
121
+ def slice (from : Int , until : Int ): Array [T ] =
122
+ arr.asInstanceOf [Array [T ]].slice(from, until).asInstanceOf
123
+
124
+ def sortBy [U : ClassTag ](f : T => U )(given math .Ordering [U ]): IArray [T ] =
125
+ arr.asInstanceOf [Array [T ]].sortBy(f).asInstanceOf
126
+
127
+ def sortWith (f : (T , T ) => Boolean ): IArray [T ] =
128
+ arr.asInstanceOf [Array [T ]].sortWith(f).asInstanceOf
129
+
130
+ def sorted (given math .Ordering [T ]): IArray [T ] =
131
+ arr.asInstanceOf [Array [T ]].sorted.asInstanceOf
132
+
133
+ def span (p : T => Boolean ): (IArray [T ], IArray [T ]) = arr.asInstanceOf [Array [T ]].span(p) match {
134
+ case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
135
+ }
136
+
137
+ def splitAt (n : Int ): (IArray [T ], IArray [T ]) = arr.asInstanceOf [Array [T ]].splitAt(n) match {
138
+ case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
139
+ }
140
+
141
+ def startsWith [U >: T : ClassTag ](that : IArray [U ], offset : Int = 0 ): Boolean =
142
+ arr.asInstanceOf [Array [T ]].startsWith(that.asInstanceOf [Array [U ]])
143
+
144
+ def tail : IArray [T ] =
145
+ arr.asInstanceOf [Array [T ]].tail.asInstanceOf
146
+
147
+ def take (n : Int ): IArray [T ] =
148
+ arr.asInstanceOf [Array [T ]].take(n).asInstanceOf
149
+
150
+ def takeRight (n : Int ): IArray [T ] =
151
+ arr.asInstanceOf [Array [T ]].takeRight(n).asInstanceOf
152
+
153
+ def takeWhile (p : T => Boolean ): IArray [T ] =
154
+ arr.asInstanceOf [Array [T ]].takeWhile(p).asInstanceOf
155
+
156
+ def unzip [U : ClassTag , V : ClassTag ](given T => (U , V )): (IArray [U ], IArray [V ]) =
157
+ arr.asInstanceOf [Array [T ]].unzip(asPair, ct1, ct2) match {
158
+ case (x, y) => (x.asInstanceOf [IArray [U ]], y.asInstanceOf [IArray [V ]])
159
+ }
160
+
161
+ def zip [U : ClassTag ](that : IterableOnce [U ]): IArray [(T , U )] =
162
+ arr.asInstanceOf [Array [T ]].zip(that).asInstanceOf
11
163
}
12
164
13
165
inline val MaxSpecialized = 22
0 commit comments