remove some const in hdf5 - 4 more left

This commit is contained in:
Daniel Schwabeneder 2020-04-26 19:30:22 +02:00
parent 577ac33826
commit ad4f92e36d

View File

@ -44,11 +44,6 @@ end
#==Useful constants #==Useful constants
===============================================================================# ===============================================================================#
const _hdf5_nullable{T} = Union{T, Nothing}
const _hdf5_plotroot = "plot"
const _hdf5_dataroot = "data" #TODO: Eventually move data to different root (easier to locate)?
const _hdf5plot_datatypeid = "TYPE" #Attribute identifying type
const _hdf5plot_countid = "COUNT" #Attribute for storing count
#Dict has problems using "Types" as keys. Initialize in "_initialize_backend": #Dict has problems using "Types" as keys. Initialize in "_initialize_backend":
const HDF5PLOT_MAP_STR2TELEM = Dict{String, Type}() const HDF5PLOT_MAP_STR2TELEM = Dict{String, Type}()
@ -95,7 +90,7 @@ if length(HDF5PLOT_MAP_TELEM2STR) < 1
"AXIS" => Axis, "AXIS" => Axis,
"SURFACE" => Surface, "SURFACE" => Surface,
"SUBPLOT" => Subplot, "SUBPLOT" => Subplot,
"NULLABLE" => _hdf5_nullable, "NULLABLE" => Union{Nothing, T} where T,
) )
merge!(HDF5PLOT_MAP_STR2TELEM, telem2str) merge!(HDF5PLOT_MAP_STR2TELEM, telem2str)
merge!(HDF5PLOT_MAP_TELEM2STR, Dict{Type, String}(v=>k for (k,v) in HDF5PLOT_MAP_STR2TELEM)) merge!(HDF5PLOT_MAP_TELEM2STR, Dict{Type, String}(v=>k for (k,v) in HDF5PLOT_MAP_STR2TELEM))
@ -105,8 +100,8 @@ end
#==Helper functions #==Helper functions
===============================================================================# ===============================================================================#
_hdf5_plotelempath(subpath::String) = "$_hdf5_plotroot/$subpath" _hdf5_plotelempath(subpath::String) = "plot/$subpath"
_hdf5_datapath(subpath::String) = "$_hdf5_dataroot/$subpath" _hdf5_datapath(subpath::String) = "data/$subpath"
_hdf5_map_str2telem(k::String) = HDF5PLOT_MAP_STR2TELEM[k] _hdf5_map_str2telem(k::String) = HDF5PLOT_MAP_STR2TELEM[k]
_hdf5_map_str2telem(v::Vector) = HDF5PLOT_MAP_STR2TELEM[v[1]] _hdf5_map_str2telem(v::Vector) = HDF5PLOT_MAP_STR2TELEM[v[1]]
@ -201,38 +196,38 @@ end
function _hdf5plot_writetype(grp, k::String, tstr::Array{String}) function _hdf5plot_writetype(grp, k::String, tstr::Array{String})
d = HDF5.d_open(grp, k) d = HDF5.d_open(grp, k)
HDF5.a_write(d, _hdf5plot_datatypeid, tstr) HDF5.a_write(d, "TYPE", tstr)
end end
function _hdf5plot_writetype(grp, k::String, T::Type) function _hdf5plot_writetype(grp, k::String, T::Type)
tstr = HDF5PLOT_MAP_TELEM2STR[T] tstr = HDF5PLOT_MAP_TELEM2STR[T]
d = HDF5.d_open(grp, k) d = HDF5.d_open(grp, k)
HDF5.a_write(d, _hdf5plot_datatypeid, tstr) HDF5.a_write(d, "TYPE", tstr)
end end
function _hdf5plot_overwritetype(grp, k::String, T::Type) function _hdf5plot_overwritetype(grp, k::String, T::Type)
tstr = HDF5PLOT_MAP_TELEM2STR[T] tstr = HDF5PLOT_MAP_TELEM2STR[T]
d = HDF5.d_open(grp, k) d = HDF5.d_open(grp, k)
HDF5.a_delete(d, _hdf5plot_datatypeid) HDF5.a_delete(d, "TYPE")
HDF5.a_write(d, _hdf5plot_datatypeid, tstr) HDF5.a_write(d, "TYPE", tstr)
end end
function _hdf5plot_writetype(grp, T::Type) #Write directly to group function _hdf5plot_writetype(grp, T::Type) #Write directly to group
tstr = HDF5PLOT_MAP_TELEM2STR[T] tstr = HDF5PLOT_MAP_TELEM2STR[T]
HDF5.a_write(grp, _hdf5plot_datatypeid, tstr) HDF5.a_write(grp, "TYPE", tstr)
end end
function _hdf5plot_overwritetype(grp, T::Type) #Write directly to group function _hdf5plot_overwritetype(grp, T::Type) #Write directly to group
tstr = HDF5PLOT_MAP_TELEM2STR[T] tstr = HDF5PLOT_MAP_TELEM2STR[T]
HDF5.a_delete(grp, _hdf5plot_datatypeid) HDF5.a_delete(grp, "TYPE")
HDF5.a_write(grp, _hdf5plot_datatypeid, tstr) HDF5.a_write(grp, "TYPE", tstr)
end end
function _hdf5plot_writetype(grp, ::Type{Array{T}}) where T<:Any function _hdf5plot_writetype(grp, ::Type{Array{T}}) where T<:Any
tstr = HDF5PLOT_MAP_TELEM2STR[Array] #ANY tstr = HDF5PLOT_MAP_TELEM2STR[Array] #ANY
HDF5.a_write(grp, _hdf5plot_datatypeid, tstr) HDF5.a_write(grp, "TYPE", tstr)
end end
function _hdf5plot_writetype(grp, ::Type{T}) where T<:BoundingBox function _hdf5plot_writetype(grp, ::Type{T}) where T<:BoundingBox
tstr = HDF5PLOT_MAP_TELEM2STR[BoundingBox] tstr = HDF5PLOT_MAP_TELEM2STR[BoundingBox]
HDF5.a_write(grp, _hdf5plot_datatypeid, tstr) HDF5.a_write(grp, "TYPE", tstr)
end end
function _hdf5plot_writecount(grp, n::Int) #Write directly to group function _hdf5plot_writecount(grp, n::Int) #Write directly to group
HDF5.a_write(grp, _hdf5plot_countid, n) HDF5.a_write(grp, "COUNT", n)
end end
function _hdf5plot_gwritefields(grp, k::String, v) function _hdf5plot_gwritefields(grp, k::String, v)
grp = HDF5.g_create(grp, k) grp = HDF5.g_create(grp, k)
@ -372,7 +367,7 @@ function _hdf5plot_gwrite(grp, k::String, v::Surface)
_hdf5plot_writetype(grp, Surface) _hdf5plot_writetype(grp, Surface)
end end
# #TODO: "Properly" support Nullable using _hdf5plot_writetype? # #TODO: "Properly" support Nullable using _hdf5plot_writetype?
# function _hdf5plot_gwrite(grp, k::String, v::_hdf5_nullable) # function _hdf5plot_gwrite(grp, k::String, v::Union{Nothing, T} where T)
# if isnull(v) # if isnull(v)
# _hdf5plot_gwrite(grp, k, nothing) # _hdf5plot_gwrite(grp, k, nothing)
# else # else
@ -448,7 +443,7 @@ hdf5plot_write(path::AbstractString) = hdf5plot_write(current(), path)
===============================================================================# ===============================================================================#
function _hdf5plot_readcount(grp) #Read directly from group function _hdf5plot_readcount(grp) #Read directly from group
return HDF5.a_read(grp, _hdf5plot_countid) return HDF5.a_read(grp, "COUNT")
end end
_hdf5plot_convert(T::Type{HDF5PlotNative}, v) = v _hdf5plot_convert(T::Type{HDF5PlotNative}, v) = v
@ -589,7 +584,7 @@ function _hdf5plot_read(grp, k::String, T::Type{Length}, dtid::Vector)
return Length{TU,T}(v) return Length{TU,T}(v)
end end
function _hdf5plot_read(grp, k::String) function _hdf5plot_read(grp, k::String)
dtid = HDF5.a_read(grp[k], _hdf5plot_datatypeid) dtid = HDF5.a_read(grp[k], "TYPE")
T = _hdf5_map_str2telem(dtid) #expect exception T = _hdf5_map_str2telem(dtid) #expect exception
return _hdf5plot_read(grp, k, T, dtid) return _hdf5plot_read(grp, k, T, dtid)
end end