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