4949function assign_gen (lhs:: AFArray ,ndims:: dim_t ,indices,rhs:: AFArray )
5050 out = RefValue {af_array} (lhs. arr)
5151 _error (ccall ((:af_assign_gen ,af_lib),af_err,(Ptr{af_array},af_array,dim_t,Ptr{af_index_t},af_array),out,lhs. arr,ndims,indices,rhs. arr))
52+ lhs. arr = out. x
5253end
5354
5455function create_indexers (idx)
@@ -59,18 +60,8 @@ function create_indexers(idx)
5960 indexers
6061end
6162
62- function getindex {T} (a:: AFArray{T} , idx:: Union{Range,Int,Colon,AFArray} ...)
63- assertslow (" getindex" )
64- @assert length (idx) <= length (size (a))
65- indexers = create_indexers (idx)
66- out = index_gen (a, length (idx), indexers)
67- release_indexers (indexers)
68- out
69- end
70-
7163function getindex {T} (a:: AFArray{T} , idx:: Union{Range,Colon,AFArray} , idx1:: Int... )
7264 assertslow (" getindex" )
73- @assert length (idx1) == length (size (a)) - 1
7465 indexers = create_indexers ((idx, idx1... ))
7566 out = index_gen_1 (a, length (idx1)+ 1 , indexers)
7667 release_indexers (indexers)
8071function getindex {T} (a:: AFArray{T} , idx0:: Union{Range,Colon,AFArray,Int} ,
8172 idx:: Union{Range,Colon,AFArray} , idx1:: Int... )
8273 assertslow (" getindex" )
83- @assert length (idx1) == length (size (a)) - 2
8474 indexers = create_indexers ((idx0, idx, idx1... ))
8575 out = index_gen_2 (a, length (idx1)+ 2 , indexers)
8676 release_indexers (indexers)
@@ -142,6 +132,8 @@ function get_sizes(idx::Tuple, lhs::AFArray)
142132 s[i] = size (lhs,i)
143133 elseif typeof (idx[i]) <: Integer
144134 s[i] = 1
135+ elseif typeof (idx[i]) <: AFArray{Bool}
136+ s[i] = sum (idx[i])
145137 elseif typeof (idx[i]) <: AFArray
146138 s[i] = length (idx[i])
147139 end
0 commit comments