Skip to content

Commit 92de2d9

Browse files
author
Joe Petviashvili
committed
fix #181 and #188
1 parent 47fe071 commit 92de2d9

File tree

1 file changed

+3
-11
lines changed

1 file changed

+3
-11
lines changed

src/indexing.jl

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ end
4949
function 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
5253
end
5354

5455
function create_indexers(idx)
@@ -59,18 +60,8 @@ function create_indexers(idx)
5960
indexers
6061
end
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-
7163
function 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)
@@ -80,7 +71,6 @@ end
8071
function 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

Comments
 (0)