deprecate SCViewHolder-layRight
[supercollider.git] / SCClassLibrary / Common / Collections / Array2D.sc
blobdde5d9928e2aac2c300f94325c36f6e475e20e9b
1 Array2D : Collection {
2         var <rows, <cols, <array;
3         *new { arg rows=1, cols=1;
4                 ^super.new.init(rows, cols);
5         }
6         init { arg argRows, argCols;
7                 rows = argRows;
8                 cols = argCols;
9                 array = Array.newClear(rows * cols);
10         }
12         at { arg row, col;
13                 ^array.at(row*cols + col)
14         }
15         put { arg row, col, val;
16                 array.put(row*cols + col, val)
17         }
19         asArray { ^array }
20         *fromArray { arg rows,cols, array;
21                 ^this.new(rows,cols).with(array);
22         }
23         with { arg aarray;      array = aarray; }
25         do { arg func;
26                 array.do(func)
27         }
28         colsDo { arg func;
29                 cols.do({ arg ci;
30                         func.value( Array.fill(rows,{ arg ri; this.at(ri,ci) }), ci )
31                 })
32         }
33         rowsDo { arg func;
34                 rows.do({ arg ri;
35                         func.value( Array.fill(cols,{ arg ci; this.at(ri,ci) }), ri )
36                 })
37         }
39         colAt { arg ci;
40                 ^Array.fill(rows,{ arg ri; this.at(ri,ci) })
41         }
42         rowAt { arg ri;
43                 ^array.copyRange(ri * cols, ri * cols + cols - 1)
44         }
46         // overide Array
47         // add { ^thisMethod.shouldNotImplement }
48         printOn { arg stream;
49                 // not a compileable string
50                 stream << this.class.name << "[ " ;
51                 this.rowsDo({ arg r;
52                         r.printOn(stream);
53                 });
54                 stream << " ]" ;
55         }
56         storeOn { arg stream;
57                 var title;
58                 stream << this.class.name << ".fromArray("
59                         <<<* [rows,cols,this.asArray] << ")";
60                 this.storeModifiersOn(stream);
61         }