@@ -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