@@ -114,26 +114,81 @@ pub fn index(input: &Array, seqs: &[Seq]) -> Result<Array, AfError> {
114114 }
115115}
116116
117+ #[ allow( dead_code) ]
117118pub fn row ( input : & Array , row_num : u64 ) -> Result < Array , AfError > {
118- let dims_err = input. dims ( ) ;
119- let dims = match dims_err {
120- Ok ( dim) => dim. clone ( ) ,
121- Err ( e) => panic ! ( "Error unwrapping dims in row(): {}" , e) ,
122- } ;
123-
124119 index ( input, & [ Seq :: new ( row_num as f64 , row_num as f64 , 1.0 )
125- , Seq :: new ( 0.0 , dims[ 1 ] as f64 - 1.0 , 1.0 ) ] )
120+ , Seq :: default ( ) ] )
121+ }
122+
123+ #[ allow( dead_code) ]
124+ pub fn set_row ( input : & Array , new_row : & Array , row_num : u64 ) -> Result < Array , AfError > {
125+ assign_seq ( input, & [ Seq :: new ( row_num as f64 , row_num as f64 , 1.0 ) , Seq :: default ( ) ]
126+ , new_row)
127+ }
128+
129+ #[ allow( dead_code) ]
130+ pub fn rows ( input : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
131+ index ( input, & [ Seq :: new ( first as f64 , last as f64 , 1.0 ) , Seq :: default ( ) ] )
126132}
127133
134+ #[ allow( dead_code) ]
135+ pub fn set_rows ( input : & Array , new_rows : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
136+ assign_seq ( input, & [ Seq :: new ( first as f64 , last as f64 , 1.0 ) , Seq :: default ( ) ]
137+ , new_rows)
138+ }
139+
140+ #[ allow( dead_code) ]
128141pub fn col ( input : & Array , col_num : u64 ) -> Result < Array , AfError > {
129- let dims_err = input. dims ( ) ;
130- let dims = match dims_err {
131- Ok ( dim) => dim. clone ( ) ,
132- Err ( e) => panic ! ( "Error unwrapping dims in row(): {}" , e) ,
133- } ;
142+ index ( input, & [ Seq :: default ( )
143+ , Seq :: new ( col_num as f64 , col_num as f64 , 1.0 ) ] )
144+ }
145+
146+ #[ allow( dead_code) ]
147+ pub fn set_col ( input : & Array , new_col : & Array , col_num : u64 ) -> Result < Array , AfError > {
148+ assign_seq ( input, & [ Seq :: default ( ) , Seq :: new ( col_num as f64 , col_num as f64 , 1.0 ) ]
149+ , new_col)
150+ }
134151
135- index ( input, & [ Seq :: new ( 0.0 , dims[ 0 ] as f64 - 1.0 , 1.0 )
136- , Seq :: new ( col_num as f64 , col_num as f64 , 1.0 ) ] )
152+ #[ allow( dead_code) ]
153+ pub fn cols ( input : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
154+ index ( input, & [ Seq :: default ( )
155+ , Seq :: new ( first as f64 , last as f64 , 1.0 ) ] )
156+ }
157+
158+ #[ allow( dead_code) ]
159+ pub fn set_cols ( input : & Array , new_cols : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
160+ assign_seq ( input, & [ Seq :: default ( ) , Seq :: new ( first as f64 , last as f64 , 1.0 ) ]
161+ , new_cols)
162+ }
163+
164+ #[ allow( dead_code) ]
165+ pub fn slice ( input : & Array , slice_num : u64 ) -> Result < Array , AfError > {
166+ index ( input, & [ Seq :: default ( )
167+ , Seq :: default ( )
168+ , Seq :: new ( slice_num as f64 , slice_num as f64 , 1.0 ) ] )
169+ }
170+
171+ #[ allow( dead_code) ]
172+ pub fn set_slice ( input : & Array , new_slice : & Array , slice_num : u64 ) -> Result < Array , AfError > {
173+ assign_seq ( input, & [ Seq :: default ( )
174+ , Seq :: default ( )
175+ , Seq :: new ( slice_num as f64 , slice_num as f64 , 1.0 ) ]
176+ , new_slice)
177+ }
178+
179+ #[ allow( dead_code) ]
180+ pub fn slices ( input : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
181+ index ( input, & [ Seq :: default ( )
182+ , Seq :: default ( )
183+ , Seq :: new ( first as f64 , last as f64 , 1.0 ) ] )
184+ }
185+
186+ #[ allow( dead_code) ]
187+ pub fn set_slices ( input : & Array , new_slices : & Array , first : u64 , last : u64 ) -> Result < Array , AfError > {
188+ assign_seq ( input, & [ Seq :: default ( )
189+ , Seq :: default ( )
190+ , Seq :: new ( first as f64 , last as f64 , 1.0 ) ]
191+ , new_slices)
137192}
138193
139194pub fn lookup ( input : & Array , indices : & Array , seq_dim : i32 ) -> Result < Array , AfError > {
@@ -148,11 +203,11 @@ pub fn lookup(input: &Array, indices: &Array, seq_dim: i32) -> Result<Array, AfE
148203 }
149204}
150205
151- pub fn assign_seq ( lhs : & Array , ndims : usize , seqs : & [ Seq ] , rhs : & Array ) -> Result < Array , AfError > {
206+ pub fn assign_seq ( lhs : & Array , seqs : & [ Seq ] , rhs : & Array ) -> Result < Array , AfError > {
152207 unsafe {
153208 let mut temp: i64 = 0 ;
154209 let err_val = af_assign_seq ( & mut temp as MutAfArray , lhs. get ( ) as AfArray ,
155- ndims as c_uint , seqs. as_ptr ( ) as * const Seq ,
210+ seqs . len ( ) as c_uint , seqs. as_ptr ( ) as * const Seq ,
156211 rhs. get ( ) as AfArray ) ;
157212 match err_val {
158213 0 => Ok ( Array :: from ( temp) ) ,
0 commit comments