@@ -33,13 +33,20 @@ function IndexName(
3333    )
3434    return  IndexName (id, Dict {String, String} (tags), plev)
3535end 
36- NamedDimsArrays. randname (rng:: AbstractRNG , :: Type{<:IndexName} ) =  IndexName (rng)
36+ function  NamedDimsArrays. randname (rng:: AbstractRNG , n:: IndexName )
37+     return  setid (n, rand (rng, UInt64))
38+ end 
39+ function  NamedDimsArrays. randname (rng:: AbstractRNG , :: Type{<:IndexName} )
40+     return  IndexName (rng)
41+ end 
3742
38- id (n:: IndexName ) =  n . id 
39- tags (n:: IndexName ) =  n . tags
40- plev (n:: IndexName ) =  n . plev
43+ id (n:: IndexName ) =  getfield (n,  :id ) 
44+ tags (n:: IndexName ) =  getfield (n,  : tags) 
45+ plev (n:: IndexName ) =  getfield (n,  : plev) 
4146
47+ setid (n:: IndexName , id) =  @set  n. id =  id
4248settags (n:: IndexName , tags) =  @set  n. tags =  tags
49+ setplev (n:: IndexName , plev) =  @set  n. plev =  plev
4350
4451hastag (n:: IndexName , tagname:: String ) =  haskey (tags (n), tagname)
4552
@@ -56,10 +63,8 @@ function unsettag(n::IndexName, tagname::String)
5663    return  settags (n, newtags)
5764end 
5865
59- setprime (n:: IndexName , plev) =  @set  n. plev =  plev
60- prime (n:: IndexName ) =  setprime (n, plev (n) +  1 )
61- noprime (n:: IndexName ) =  setprime (n, 0 )
62- sim (n:: IndexName ) =  randname (n)
66+ prime (n:: IndexName ) =  setplev (n, plev (n) +  1 )
67+ noprime (n:: IndexName ) =  setplev (n, 0 )
6368
6469function  Base. show (io:: IO , i:: IndexName )
6570    idstr =  " id=$(id (i) %  1000 ) " 
@@ -82,7 +87,9 @@ NamedDimsArrays.name(i::IndexVal) = i.name
8287#  Constructor
8388NamedDimsArrays. named (i:: Integer , name:: IndexName ) =  IndexVal (i, name)
8489
85- struct  Index{T, Value <:  AbstractUnitRange{T} } <:  AbstractNamedUnitRange{T, Value, IndexName} 
90+ struct  Index{
91+         T, Value <:  AbstractUnitRange{T} ,
92+     } <:  AbstractNamedUnitRange{T, Value, IndexName} 
8693    value:: Value 
8794    name:: IndexName 
8895end 
@@ -117,13 +124,9 @@ gettag(i::Index, tagname::String, default) = gettag(name(i), tagname, default)
117124settag (i:: Index , tagname:: String , tag:: String ) =  setname (i, settag (name (i), tagname, tag))
118125unsettag (i:: Index , tagname:: String ) =  setname (i, unsettag (name (i), tagname))
119126
120- setprime (i:: Index , plev) =  setname (i, setprime (name (i), plev))
127+ setplev (i:: Index , plev) =  setname (i, setplev (name (i), plev))
121128prime (i:: Index ) =  setname (i, prime (name (i)))
122129noprime (i:: Index ) =  setname (i, noprime (name (i)))
123- sim (i:: Index ) =  setname (i, sim (name (i)))
124- 
125- #  TODO : Delete this definition?
126- Base. adjoint (i:: Index ) =  prime (i)
127130
128131#  Interface
129132#  TODO : Overload `Base.parent` instead.
0 commit comments