22
33use std:: cast;
44use std:: vec;
5+ use std:: vec_ng:: Vec ;
56
67/// Information about a dimension of an array
78#[ deriving( Eq , Clone , Show ) ]
@@ -71,8 +72,8 @@ trait InternalArray<T> : Array<T> {
7172/// A multi-dimensional array
7273#[ deriving( Eq , Clone ) ]
7374pub struct ArrayBase < T > {
74- priv info : ~ [ DimensionInfo ] ,
75- priv data : ~ [ T ] ,
75+ priv info : Vec < DimensionInfo > ,
76+ priv data : Vec < T > ,
7677}
7778
7879impl < T > ArrayBase < T > {
@@ -85,7 +86,7 @@ impl<T> ArrayBase<T> {
8586 ///
8687 /// Fails if there are 0 dimensions or the number of elements provided does
8788 /// not match the number of elements specified.
88- pub fn from_raw ( data : ~ [ T ] , info : ~ [ DimensionInfo ] )
89+ pub fn from_raw ( data : Vec < T > , info : Vec < DimensionInfo > )
8990 -> ArrayBase < T > {
9091 assert ! ( !info. is_empty( ) , "Cannot create a 0x0 array" ) ;
9192 assert ! ( data. len( ) == info. iter( ) . fold( 1 , |acc, i| acc * i. len) ,
@@ -97,12 +98,12 @@ impl<T> ArrayBase<T> {
9798 }
9899
99100 /// Creates a new one-dimensional array from a vector.
100- pub fn from_vec ( data : ~ [ T ] , lower_bound : int ) -> ArrayBase < T > {
101+ pub fn from_vec ( data : Vec < T > , lower_bound : int ) -> ArrayBase < T > {
101102 ArrayBase {
102- info : ~ [ DimensionInfo {
103+ info : vec ! ( DimensionInfo {
103104 len: data. len( ) ,
104105 lower_bound: lower_bound
105- } ] ,
106+ } ) ,
106107 data : data
107108 }
108109 }
@@ -138,7 +139,7 @@ impl<T> ArrayBase<T> {
138139 for ( info1, info2) in self . info . iter ( ) . skip ( 1 ) . zip ( other. info . iter ( ) ) {
139140 assert ! ( info1 == info2, "Cannot join differently shaped arrays" ) ;
140141 }
141- self . info [ 0 ] . len += 1 ;
142+ self . info . get_mut ( 0 ) . len += 1 ;
142143 self . data . push_all_move ( other. data ) ;
143144 }
144145
@@ -174,7 +175,7 @@ impl<T> MutableArray<T> for ArrayBase<T> {}
174175
175176impl < T > InternalArray < T > for ArrayBase < T > {
176177 fn raw_get < ' a > ( & ' a self , idx : uint , _size : uint ) -> & ' a T {
177- & self . data [ idx]
178+ self . data . get ( idx)
178179 }
179180}
180181
@@ -252,7 +253,7 @@ mod tests {
252253
253254 #[ test]
254255 fn test_from_vec ( ) {
255- let a = ArrayBase :: from_vec ( ~ [ 0 , 1 , 2 ] , -1 ) ;
256+ let a = ArrayBase :: from_vec ( vec ! ( 0 , 1 , 2 ) , -1 ) ;
256257 assert ! ( [ DimensionInfo { len: 3 , lower_bound: -1 } ] ==
257258 a. dimension_info( ) ) ;
258259 assert_eq ! ( & 0 , a. get( -1 ) ) ;
@@ -263,30 +264,30 @@ mod tests {
263264 #[ test]
264265 #[ should_fail]
265266 fn test_get_2d_fail ( ) {
266- let mut a = ArrayBase :: from_vec ( ~ [ 0 , 1 , 2 ] , -1 ) ;
267+ let mut a = ArrayBase :: from_vec ( vec ! ( 0 , 1 , 2 ) , -1 ) ;
267268 a. wrap ( 1 ) ;
268269 a. get ( 1 ) ;
269270 }
270271
271272 #[ test]
272273 #[ should_fail]
273274 fn test_2d_slice_range_fail_low ( ) {
274- let mut a = ArrayBase :: from_vec ( ~ [ 0 , 1 , 2 ] , -1 ) ;
275+ let mut a = ArrayBase :: from_vec ( vec ! ( 0 , 1 , 2 ) , -1 ) ;
275276 a. wrap ( 1 ) ;
276277 a. slice ( 0 ) ;
277278 }
278279
279280 #[ test]
280281 #[ should_fail]
281282 fn test_2d_slice_range_fail_high ( ) {
282- let mut a = ArrayBase :: from_vec ( ~ [ 0 , 1 , 2 ] , -1 ) ;
283+ let mut a = ArrayBase :: from_vec ( vec ! ( 0 , 1 , 2 ) , -1 ) ;
283284 a. wrap ( 1 ) ;
284285 a. slice ( 2 ) ;
285286 }
286287
287288 #[ test]
288289 fn test_2d_slice_get ( ) {
289- let mut a = ArrayBase :: from_vec ( ~ [ 0 , 1 , 2 ] , -1 ) ;
290+ let mut a = ArrayBase :: from_vec ( vec ! ( 0 , 1 , 2 ) , -1 ) ;
290291 a. wrap ( 1 ) ;
291292 let s = a. slice ( 1 ) ;
292293 assert_eq ! ( & 0 , s. get( -1 ) ) ;
@@ -297,33 +298,33 @@ mod tests {
297298 #[ test]
298299 #[ should_fail]
299300 fn test_push_move_wrong_lower_bound ( ) {
300- let mut a = ArrayBase :: from_vec ( ~ [ 1 ] , -1 ) ;
301- a. push_move ( ArrayBase :: from_vec ( ~ [ 2 ] , 0 ) ) ;
301+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 ) , -1 ) ;
302+ a. push_move ( ArrayBase :: from_vec ( vec ! ( 2 ) , 0 ) ) ;
302303 }
303304
304305 #[ test]
305306 #[ should_fail]
306307 fn test_push_move_wrong_dims ( ) {
307- let mut a = ArrayBase :: from_vec ( ~ [ 1 ] , -1 ) ;
308+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 ) , -1 ) ;
308309 a. wrap ( 1 ) ;
309- a. push_move ( ArrayBase :: from_vec ( ~ [ 1 , 2 ] , -1 ) ) ;
310+ a. push_move ( ArrayBase :: from_vec ( vec ! ( 1 , 2 ) , -1 ) ) ;
310311 }
311312
312313 #[ test]
313314 #[ should_fail]
314315 fn test_push_move_wrong_dim_count ( ) {
315- let mut a = ArrayBase :: from_vec ( ~ [ 1 ] , -1 ) ;
316+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 ) , -1 ) ;
316317 a. wrap ( 1 ) ;
317- let mut b = ArrayBase :: from_vec ( ~ [ 2 ] , -1 ) ;
318+ let mut b = ArrayBase :: from_vec ( vec ! ( 2 ) , -1 ) ;
318319 b. wrap ( 1 ) ;
319320 a. push_move ( b) ;
320321 }
321322
322323 #[ test]
323324 fn test_push_move_ok ( ) {
324- let mut a = ArrayBase :: from_vec ( ~ [ 1 , 2 ] , 0 ) ;
325+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 , 2 ) , 0 ) ;
325326 a. wrap ( 0 ) ;
326- a. push_move ( ArrayBase :: from_vec ( ~ [ 3 , 4 ] , 0 ) ) ;
327+ a. push_move ( ArrayBase :: from_vec ( vec ! ( 3 , 4 ) , 0 ) ) ;
327328 let s = a. slice ( 0 ) ;
328329 assert_eq ! ( & 1 , s. get( 0 ) ) ;
329330 assert_eq ! ( & 2 , s. get( 1 ) ) ;
@@ -334,13 +335,13 @@ mod tests {
334335
335336 #[ test]
336337 fn test_3d ( ) {
337- let mut a = ArrayBase :: from_vec ( ~ [ 0 , 1 ] , 0 ) ;
338+ let mut a = ArrayBase :: from_vec ( vec ! ( 0 , 1 ) , 0 ) ;
338339 a. wrap ( 0 ) ;
339- a. push_move ( ArrayBase :: from_vec ( ~ [ 2 , 3 ] , 0 ) ) ;
340+ a. push_move ( ArrayBase :: from_vec ( vec ! ( 2 , 3 ) , 0 ) ) ;
340341 a. wrap ( 0 ) ;
341- let mut b = ArrayBase :: from_vec ( ~ [ 4 , 5 ] , 0 ) ;
342+ let mut b = ArrayBase :: from_vec ( vec ! ( 4 , 5 ) , 0 ) ;
342343 b. wrap ( 0 ) ;
343- b. push_move ( ArrayBase :: from_vec ( ~ [ 6 , 7 ] , 0 ) ) ;
344+ b. push_move ( ArrayBase :: from_vec ( vec ! ( 6 , 7 ) , 0 ) ) ;
344345 a. push_move ( b) ;
345346 let s1 = a. slice ( 0 ) ;
346347 let s2 = s1. slice ( 0 ) ;
@@ -360,7 +361,7 @@ mod tests {
360361
361362 #[ test]
362363 fn test_mut ( ) {
363- let mut a = ArrayBase :: from_vec ( ~ [ 1 , 2 ] , 0 ) ;
364+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 , 2 ) , 0 ) ;
364365 a. wrap ( 0 ) ;
365366 {
366367 let mut s = a. slice_mut ( 0 ) ;
@@ -373,14 +374,14 @@ mod tests {
373374 #[ test]
374375 #[ should_fail]
375376 fn test_base_overslice ( ) {
376- let a = ArrayBase :: from_vec ( ~ [ 1 ] , 0 ) ;
377+ let a = ArrayBase :: from_vec ( vec ! ( 1 ) , 0 ) ;
377378 a. slice ( 0 ) ;
378379 }
379380
380381 #[ test]
381382 #[ should_fail]
382383 fn test_slice_overslice ( ) {
383- let mut a = ArrayBase :: from_vec ( ~ [ 1 ] , 0 ) ;
384+ let mut a = ArrayBase :: from_vec ( vec ! ( 1 ) , 0 ) ;
384385 a. wrap ( 0 ) ;
385386 let s = a. slice ( 0 ) ;
386387 s. slice ( 0 ) ;
0 commit comments