Skip to content

Commit

Permalink
More cleanups for HashDict
Browse files Browse the repository at this point in the history
  • Loading branch information
kmsquire committed Mar 4, 2015
1 parent 91ea71c commit 7a4c643
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
5 changes: 4 additions & 1 deletion src/DataStructures.jl
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,12 @@ module DataStructures
@deprecate queue Queue
@deprecate add! push!

@deprecate OrderedSet(a, b...) OrderedSet({a, b...})
@deprecate HashDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) HashDict{K,V,Unordered}(ks,vs)
@deprecate HashDict(ks, vs) HashDict{Any,Any,Unordered}(ks, vs)

@deprecate OrderedDict(ks, vs) OrderedDict(zip(ks,vs))
@deprecate OrderedDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) OrderedDict{K,V}(zip(ks,vs))
@deprecate OrderedDict{K,V}(::Type{K},::Type{V}) OrderedDict{K,V}()

@deprecate OrderedSet(a, b...) OrderedSet({a, b...})
end
15 changes: 13 additions & 2 deletions src/hashdict.jl
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,23 @@ type HashDict{K,V,O<:Union(Ordered,Unordered)} <: Associative{K,V}
end

HashDict() = HashDict{Any,Any,Unordered}()
HashDict(kv::()) = HashDict()
HashDict(kv) = hash_dict_with_eltype(kv, eltype(kv))

hash_dict_with_eltype{K,V}(kv, ::Type{(K,V)}) = HashDict{K,V}(kv)
hash_dict_with_eltype(kv, t) = HashDict{Any,Any}(kv)

HashDict{K,V}(ks::AbstractArray{K}, vs::AbstractArray{V}) = HashDict{K,V,Unordered}(ks,vs)
HashDict(ks, vs) = HashDict{Any,Any,Unordered}(ks, vs)
HashDict{K,V}(kv::AbstractArray{(K,V)}) = HashDict{K,V,Unordered}(kv)
if VERSION >= v"0.4.0-dev+980"
HashDict{K,V}(ps::Pair{K,V}...) = HashDict{K,V,Unordered}(ps...)
HashDict{K,V}(kv::(Pair{K,V}...,)) = HashDict{K,V}(kv)
HashDict{K} (kv::(Pair{K}...,)) = HashDict{K,Any}(kv)
HashDict{V} (kv::(Pair{TypeVar(:K),V}...,)) = HashDict{Any,V}(kv)
HashDict (kv::(Pair...,)) = HashDict{Any,Any}(kv)

HashDict{K,V}(kv::AbstractArray{Pair{K,V}}) = HashDict{K,V}(kv)

hash_dict_with_eltype{K,V}(kv, ::Type{Pair{K,V}}) = HashDict{K,V}(kv)
end

# TODO: these could be more efficient
Expand Down
8 changes: 4 additions & 4 deletions src/ordereddict.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ end

OrderedDict() = OrderedDict{Any,Any}()
OrderedDict(kv::()) = OrderedDict()
OrderedDict(kv) = ordered_dictwith_eltype(kv, eltype(kv))
OrderedDict(kv) = ordered_dict_with_eltype(kv, eltype(kv))

ordered_dictwith_eltype{K,V}(kv, ::Type{(K,V)}) = OrderedDict{K,V}(kv)
ordered_dictwith_eltype(kv, t) = OrderedDict{Any,Any}(kv)
ordered_dict_with_eltype{K,V}(kv, ::Type{(K,V)}) = OrderedDict{K,V}(kv)
ordered_dict_with_eltype(kv, t) = OrderedDict{Any,Any}(kv)

if VERSION >= v"0.4.0-dev+980"
OrderedDict{K,V}(ps::Pair{K,V}...) = OrderedDict{K,V}(ps...)
Expand All @@ -42,7 +42,7 @@ if VERSION >= v"0.4.0-dev+980"

OrderedDict{K,V}(kv::AbstractArray{Pair{K,V}}) = OrderedDict{K,V}(kv)

ordered_dictwith_eltype{K,V}(kv, ::Type{Pair{K,V}}) = OrderedDict{K,V}(kv)
ordered_dict_with_eltype{K,V}(kv, ::Type{Pair{K,V}}) = OrderedDict{K,V}(kv)
end

copy(d::OrderedDict) = OrderedDict(d)
Expand Down

0 comments on commit 7a4c643

Please sign in to comment.