@@ -65,4 +65,106 @@ package object generate {
65
65
def s [CC ](cc : CC )(implicit streamize : CC => MakesParallelStream [String , Stream [String ]]) =
66
66
streamize(cc).parStream
67
67
}
68
+
69
+ trait GenThingsOf [CC [_]] {
70
+ def title : String
71
+ def sizes : Array [Int ]
72
+ }
73
+
74
+ trait IntThingsOf [CC [_]] extends GenThingsOf [CC ] {
75
+ implicit def myCBFi : CanBuildFrom [Nothing , Int , CC [Int ]]
76
+ // Base collection
77
+ val cI = sizes.map(n => Coll .i[CC ](n))
78
+ // Iterator
79
+ def iI (j : Int )(implicit x : CC [Int ] => Iterator [Int ]) = x(cI(j))
80
+ // Steppers (second letter--s = sequential, p = parallel)
81
+ def tsI (j : Int )(implicit x : CC [Int ] => MakesIntSeqStepper ) = Sstep i cI(j)
82
+ def tpI (j : Int )(implicit x : CC [Int ] => MakesIntStepper ) = Pstep i cI(j)
83
+ // Streams
84
+ def ssI (j : Int )(implicit x : CC [Int ] => MakesSequentialStream [java.lang.Integer , IntStream ]) = Sstream i cI(j)
85
+ def spI (j : Int )(implicit x : CC [Int ] => MakesParallelStream [java.lang.Integer , IntStream ]) = Pstream i cI(j)
86
+ // Streams via steppers
87
+ def zsI (j : Int )(implicit x : CC [Int ] => MakesIntSeqStepper ) = SsStream i cI(j)
88
+ def zpI (j : Int )(implicit x : CC [Int ] => MakesIntStepper ) = PsStream i cI(j)
89
+ }
90
+
91
+ trait StringThingsOf [CC [_]] extends GenThingsOf [CC ] {
92
+ implicit def myCBFs : CanBuildFrom [Nothing , String , CC [String ]]
93
+ // Base collection
94
+ val cS = sizes.map(n => Coll .s[CC ](n))
95
+ // Iterator
96
+ def iS (j : Int )(implicit x : CC [String ] => Iterator [String ]) = x(cS(j))
97
+ // Steppers (second letter--s = sequential, p = parallel)
98
+ def tsS (j : Int )(implicit x : CC [String ] => MakesAnySeqStepper [String ]) = Sstep s cS(j)
99
+ def tpS (j : Int )(implicit x : CC [String ] => MakesAnyStepper [String ]) = Pstep s cS(j)
100
+ // Streams
101
+ def ssS (j : Int )(implicit x : CC [String ] => MakesSequentialStream [String , Stream [String ]]) = Sstream s cS(j)
102
+ def spS (j : Int )(implicit x : CC [String ] => MakesParallelStream [String , Stream [String ]]) = Pstream s cS(j)
103
+ // Streams via steppers
104
+ def zsS (j : Int )(implicit x : CC [String ] => MakesAnySeqStepper [String ]) = SsStream s cS(j)
105
+ def zpS (j : Int )(implicit x : CC [String ] => MakesAnyStepper [String ]) = PsStream s cS(j)
106
+ }
107
+
108
+ trait ThingsOf [CC [_]] extends IntThingsOf [CC ] with StringThingsOf [CC ] {}
109
+
110
+ abstract class AbstractThings [CC [_]](val title : String )(
111
+ implicit
112
+ outerCBFi : CanBuildFrom [Nothing , Int , CC [Int ]],
113
+ outerCBFs : CanBuildFrom [Nothing , String , CC [String ]]
114
+ )
115
+ extends ThingsOf [CC ] {
116
+ implicit def myCBFi = outerCBFi
117
+ implicit def myCBFs = outerCBFs
118
+ }
119
+
120
+ class ArrThings (val sizes : Array [Int ]) extends AbstractThings [Array ](" Array" ) {}
121
+
122
+ class IshThings (val sizes : Array [Int ]) extends AbstractThings [collection.immutable.HashSet ](" immutable.HashSet" ) {}
123
+
124
+ class LstThings (val sizes : Array [Int ]) extends AbstractThings [List ](" List" ) {}
125
+
126
+ class IlsThings (val sizes : Array [Int ]) extends AbstractThings [collection.immutable.ListSet ](" immutable.ListSet" ) {}
127
+
128
+ class QueThings (val sizes : Array [Int ]) extends AbstractThings [collection.immutable.Queue ](" immutable.Queue" ) {}
129
+
130
+ class StmThings (val sizes : Array [Int ]) extends AbstractThings [collection.immutable.Stream ](" immutable.Stream" ) {}
131
+
132
+ class TrsThings (val sizes : Array [Int ]) extends AbstractThings [collection.immutable.TreeSet ](" immutable.TreeSet" ) {}
133
+
134
+ class VecThings (val sizes : Array [Int ]) extends AbstractThings [Vector ](" Vector" ) {}
135
+
136
+ class ArbThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.ArrayBuffer ](" mutable.ArrayBuffer" ) {}
137
+
138
+ class ArsThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.ArraySeq ](" mutable.ArraySeq" ) {}
139
+
140
+ class AstThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.ArrayStack ](" mutable.ArrayStack" ) {}
141
+
142
+ class MhsThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.HashSet ](" mutable.HashSet" ) {}
143
+
144
+ class LhsThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.LinkedHashSet ](" mutable.LinkedHashSet" ) {}
145
+
146
+ class PrqThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.PriorityQueue ](" mutable.PriorityQueue" ) {}
147
+
148
+ class MuqThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.Queue ](" mutable.Queue" ) {}
149
+
150
+ class WraThings (val sizes : Array [Int ]) extends AbstractThings [collection.mutable.WrappedArray ](" mutable.WrappedArray" ) {}
151
+
152
+ class Things (sizes : Array [Int ] = Array (0 , 1 , 2 , 5 , 7 , 15 , 16 , 32 , 33 , 64 , 129 , 256 , 1023 , 2914 , 7151 , 50000 , 200000 , 1000000 )) {
153
+ lazy val arr = new ArrThings (sizes)
154
+ lazy val ish = new IshThings (sizes)
155
+ lazy val lst = new LstThings (sizes)
156
+ lazy val ils = new IlsThings (sizes)
157
+ lazy val que = new QueThings (sizes)
158
+ lazy val stm = new StmThings (sizes)
159
+ lazy val trs = new TrsThings (sizes)
160
+ lazy val vec = new VecThings (sizes)
161
+ lazy val arb = new ArbThings (sizes)
162
+ lazy val ars = new ArsThings (sizes)
163
+ lazy val ast = new AstThings (sizes)
164
+ lazy val mhs = new MhsThings (sizes)
165
+ lazy val lhs = new LhsThings (sizes)
166
+ lazy val prq = new PrqThings (sizes)
167
+ lazy val muq = new MuqThings (sizes)
168
+ lazy val wra = new WraThings (sizes)
169
+ }
68
170
}
0 commit comments