Skip to content

Commit

Permalink
Remove deprecated iteration over JuMPContainers (#664)
Browse files Browse the repository at this point in the history
  • Loading branch information
joehuchette committed Feb 9, 2016
1 parent dfe7eca commit d6767be
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 55 deletions.
26 changes: 1 addition & 25 deletions src/JuMPContainer.jl
Expand Up @@ -128,11 +128,10 @@ function getValue(x::JuMPContainer)
end

# delegate zero-argument functions
for f in (:(Base.endof), :(Base.ndims), :(Base.length), :(Base.abs), :(Base.start))
for f in (:(Base.endof), :(Base.ndims), :(Base.length), :(Base.abs))
@eval $f(x::JuMPArray) = $f(x.innerArray)
end

Base.first(x::JuMPDict) = first(x.tupledict)
Base.length(x::JuMPDict) = length(x.tupledict)

Base.ndims{T,N}(x::JuMPDict{T,N}) = N
Expand All @@ -142,29 +141,6 @@ Base.size(x::JuMPArray) = size(x.innerArray)
Base.size(x::JuMPArray,k) = size(x.innerArray,k)
Base.issym(x::JuMPArray) = issym(x.innerArray)

function Base.start(x::JuMPContainer)
warn("Iteration over JuMP containers is deprecated. Use keys(d) and values(d) instead")
start(x.tupledict)
end

@generated function Base.next{T,N,NT}(x::JuMPArray{T,N,NT},k)
keys = [:(x.indexsets[$i][subidx[$i]]) for i in 1:N]
tup = Expr(:tuple, keys..., Expr(:call, :getindex, :x, keys...))
quote
var, gidx = next(x.innerArray, k)
subidx = ind2sub(size(x),k)
$tup, gidx
end
end

function Base.next(x::JuMPDict,k)
((idx,var),gidx) = next(x.tupledict,k)
return (tuple(idx..., var), gidx)
end

Base.done(x::JuMPArray,k) = done(x.innerArray,k)
Base.done(x::JuMPDict,k) = done(x.tupledict,k)

Base.eltype{T}(x::JuMPContainer{T}) = T

Base.full(x::JuMPContainer) = x
Expand Down
30 changes: 0 additions & 30 deletions test/variable.jl
Expand Up @@ -107,36 +107,6 @@ if VERSION >= v"0.4-"
end
end

facts("[variable] JuMPContainer iteration") do
m = Model()
@defVar(m, oia[1:3,1:4,1:2])
@defVar(m, ja[1:3,2:5,1:2])
@defVar(m, jd[1:3,[:red,:blue];true])

@fact length(oia) == 3*4*2 --> true
@fact length(keys(ja)) == length(values(ja)) == 3*4*2 --> true
@fact length(keys(jd)) == length(values(jd)) == 3*2 --> true

# TODO: make this more coherent
index = 1
for k in 1:2, j in 1:4, i in 1:3
@fact oia[i,j,k] === oia[index] --> true
index += 1
end
for (key,val) in zip(keys(ja),values(ja))
@fact ja[key...] === val --> true
end
for (key,val) in zip(keys(jd),values(jd))
@fact jd[key...] === val --> true
end
for (ii,jj,kk,v) in ja
@fact ja[ii,jj,kk] === v --> true
end
for (ii,jj,v) in jd
@fact jd[ii,jj] === v --> true
end
end

facts("[variable] @defVar returning Array{Variable}") do
m = Model()
@defVar(m, x[1:3,1:4,1:2])
Expand Down

0 comments on commit d6767be

Please sign in to comment.