@@ -9,6 +9,7 @@ using NamedDimsArrays:
99 name,
1010 randname,
1111 setname
12+ using Random: Random, AbstractRNG
1213
1314tagpairstring (pair:: Pair ) = repr (first (pair)) * " =>" * repr (last (pair))
1415function tagsstring (tags:: Dict{String,String} )
@@ -24,10 +25,15 @@ struct IndexName <: AbstractName
2425 tags:: Dict{String,String}
2526 plev:: Int
2627end
27- function IndexName (; id:: UInt64 = rand (UInt64), tags= Dict {String,String} (), plev:: Int = 0 )
28+ function IndexName (
29+ rng:: AbstractRNG = Random. default_rng ();
30+ id:: UInt64 = rand (rng, UInt64),
31+ tags= Dict {String,String} (),
32+ plev:: Int = 0 ,
33+ )
2834 return IndexName (id, Dict {String,String} (tags), plev)
2935end
30- NamedDimsArrays. randname (n :: IndexName ) = IndexName ()
36+ NamedDimsArrays. randname (rng :: AbstractRNG , :: Type{<: IndexName} ) = IndexName (rng )
3137
3238id (n:: IndexName ) = n. id
3339tags (n:: IndexName ) = n. tags
@@ -81,8 +87,16 @@ struct Index{T,Value<:AbstractUnitRange{T}} <: AbstractNamedUnitRange{T,Value,In
8187 name:: IndexName
8288end
8389
90+ function Index {T,Value} (
91+ r:: AbstractUnitRange{T} ; kwargs...
92+ ) where {T,Value<: AbstractUnitRange{T} }
93+ return Index {T,Value} (r, IndexName (; kwargs... ))
94+ end
95+ function Index {T} (r:: AbstractUnitRange{T} ; kwargs... ) where {T}
96+ return Index {T,typeof(r)} (r; kwargs... )
97+ end
8498function Index (r:: AbstractUnitRange ; kwargs... )
85- return Index (r, IndexName ( ; kwargs... ) )
99+ return Index {eltype(r)} (r ; kwargs... )
86100end
87101
88102function Index (length:: Int ; kwargs... )
0 commit comments