Module gt_map

module gt_map

        ! Uses
    use dc_types, only: STRING
    use gt_vartable, only: vid_invalid,                     VTB_CLASS_UNUSED, VTB_CLASS_MEMORY, VTB_CLASS_NETCDF

        ! Types
    public type GT_DIMMAP
    public type MAP_TABLE_ENTRY

        ! Variables
    type (MAP_TABLE_ENTRY), private, save, target, allocatable, dimension (:) :: maptab
    integer, private, parameter :: maptab_init_size = 16

        ! Interfaces
    public interface dimrange

        ! Subroutines and functions
    public subroutine dimrange_by_dimno (var, dimno, dimlo, dimhi)
    public subroutine map_dup (var, source_var)
    public subroutine map_create (var, class, cid, ndims, allcount, stat)
    public subroutine MapTabAdd (mapid, vid)
    public subroutine MapTabDelete (var, err)
    public subroutine map_lookup (var, vid, map, ndims)
    public subroutine map_set (var, map, stat)
    public subroutine var_class (var, class, cid)
    public subroutine map_set_ndims (var, ndims, stat)
    public subroutine map_set_rank (var, rank, stat)
    public subroutine map_to_internal_specs (var, specs, ndims)
    public subroutine map_allocate (map, ndims)
    public subroutine map_apply (var, map)
    public subroutine map_resize (var, ndims)
    public subroutine gtvar_dump (var)
    public integer function dimord_skip_compact (dimord, map)

end module gt_map

Description of Types

GT_DIMMAP

public type GT_DIMMAP
    integer :: dimno
    character (len=STRING) :: url
    integer :: offset
    integer :: step
    integer :: allcount
    integer :: start
    integer :: count
    integer :: stride
    logical :: scalar
end type GT_DIMMAP

MAP_TABLE_ENTRY

public type MAP_TABLE_ENTRY
    integer :: vid
    integer :: ndims
    type (GT_DIMMAP), pointer, dimension (:) :: map
end type MAP_TABLE_ENTRY

Description of Variables

maptab

type (MAP_TABLE_ENTRY), private, save, target, allocatable, dimension (:) :: maptab

maptab_init_size

integer, private, parameter :: maptab_init_size = 16

Description of Interfaces

dimrange

public interface dimrange
    module procedure dimrange_by_dimno
end interface dimrange

Description of Subroutines and Functions

dimrange_by_dimno

public subroutine dimrange_by_dimno (var, dimno, dimlo, dimhi)
    type (gt_variable), intent(in) :: var
    integer, intent(in) :: dimno
    integer, intent(out) :: dimlo
    integer, intent(out) :: dimhi
    ! Calls: close, dimrange, map_lookup, open
end subroutine dimrange_by_dimno

map_dup

public subroutine map_dup (var, source_var)
    type (gt_variable), intent(out) :: var
    type (gt_variable), intent(in) :: source_var
    ! Calls: DbgMessage, MapTabAdd, VarTableAdd, VartableLookup, map_lookup
end subroutine map_dup

map_create

public subroutine map_create (var, class, cid, ndims, allcount, stat)
    type (gt_variable), intent(out) :: var
    integer, intent(in) :: class
    integer, intent(in) :: cid
    integer, intent(in) :: ndims
    integer, intent(in), dimension (:) :: allcount
    integer, intent(out) :: stat
    ! Calls: MapTabAdd, VarTableAdd, map_allocate
end subroutine map_create

MapTabAdd

public subroutine MapTabAdd (mapid, vid)
    integer, intent(out) :: mapid
    integer, intent(in) :: vid
end subroutine MapTabAdd

MapTabDelete

public subroutine MapTabDelete (var, err)
    type (gt_variable), intent(in) :: var
    logical, optional, intent(out) :: err
    ! Calls: DbgMessage, storeerror
end subroutine MapTabDelete

map_lookup

public subroutine map_lookup (var, vid, map, ndims)
    type (gt_variable), intent(in) :: var
    integer, optional, intent(out) :: vid
    type (GT_DIMMAP), optional, intent(out), dimension (:) :: map
    integer, optional, intent(out) :: ndims
end subroutine map_lookup

map_set

public subroutine map_set (var, map, stat)
    type (gt_variable), intent(in) :: var
    type (GT_DIMMAP), intent(in), dimension (:) :: map
    integer, intent(out) :: stat
end subroutine map_set

var_class

public subroutine var_class (var, class, cid)
    type (gt_variable), intent(in) :: var
    integer, optional, intent(out) :: class
    integer, optional, intent(out) :: cid
    ! Calls: map_lookup, vartablelookup
end subroutine var_class

map_set_ndims

public subroutine map_set_ndims (var, ndims, stat)
    type (gt_variable), intent(in) :: var
    integer, intent(in) :: ndims
    integer, intent(out) :: stat
    ! Calls: map_lookup
end subroutine map_set_ndims

map_set_rank

public subroutine map_set_rank (var, rank, stat)
    type (gt_variable), intent(in) :: var
    integer, intent(in) :: rank
    integer, intent(out) :: stat
    ! Calls: map_lookup
end subroutine map_set_rank

map_to_internal_specs

public subroutine map_to_internal_specs (var, specs, ndims)
    type (gt_variable), intent(in) :: var
    integer, pointer, dimension (:, :) :: specs
    integer, optional, intent(out) :: ndims
    ! Calls: map_lookup
end subroutine map_to_internal_specs

map_allocate

public subroutine map_allocate (map, ndims)
    type (GT_DIMMAP), pointer, dimension (:) :: map
    integer, intent(in) :: ndims
end subroutine map_allocate

map_apply

public subroutine map_apply (var, map)
    type (GT_VARIABLE), intent(inout) :: var
    type (GT_DIMMAP), pointer, dimension (:) :: map
end subroutine map_apply

map_resize

public subroutine map_resize (var, ndims)
    type (GT_VARIABLE), intent(in) :: var
    integer, intent(in) :: ndims
    ! Calls: map_allocate
end subroutine map_resize

gtvar_dump

public subroutine gtvar_dump (var)
    type (gt_variable), intent(in) :: var
    ! Calls: DbgMessage, vartable_dump
end subroutine gtvar_dump

dimord_skip_compact

public function dimord_skip_compact (dimord, map) result (result)
    integer, intent(in) :: dimord
    type (GT_DIMMAP), intent(in), dimension (:) :: map
    integer :: result
    ! Calls: DbgMessage
end function dimord_skip_compact