Module gt_mem

module gt_mem

        ! Uses
    use dc_types, only: string, token

        ! Types
    public type attr_chain
    public type MEM_VARIABLE_ENTRY
    public type MEM_VARIABLE

        ! Variables
    type (mem_variable_entry), private, allocatable, save, target, dimension (:) :: memtab

        ! Interfaces
    public interface Create
    public interface Close
    public interface Attr_Rewind
    public interface attr_next
    public interface attr_true
    public interface del_attr
    public interface put_attr
    public interface get_attr

        ! Subroutines and functions
    private integer function memtab_add (var, name)
    public subroutine memcreated (var, url, length, xtype, long_name, overwrite, err)
    private integer function memtab_lookup (var, ent)
    public subroutine memclose (var)
    public subroutine MemAttrGet (var, name, value, err)
    public subroutine MemAttrGetV (var, name, value, err)
    public subroutine MemAttrDel (var, name, err)
    public logical function MemAttrTrue (var, name, default)
    public subroutine memAttrRewind (var)
    public subroutine memAttrNext (var, name, err)
    public subroutine memattradd (var, attrname, attrval)
    public subroutine memattradd_v (var, attrname, attrval)

end module gt_mem

Description of Types

attr_chain

public type attr_chain
    type (attr_chain), pointer :: next
    character (len=token) :: name
    character, pointer, dimension (:) :: cbuf
end type attr_chain

MEM_VARIABLE_ENTRY

public type MEM_VARIABLE_ENTRY
    character (len=token) :: name
    character (len=token) :: xtype
    double precision, pointer, dimension (:) :: dbuf
    type (attr_chain), pointer :: attr
    type (attr_chain), pointer :: current
end type MEM_VARIABLE_ENTRY

MEM_VARIABLE

public type MEM_VARIABLE
    integer :: id
end type MEM_VARIABLE

Description of Variables

memtab

type (mem_variable_entry), private, allocatable, save, target, dimension (:) :: memtab

Description of Interfaces

Create

public interface Create
    module procedure MemCreateD
end interface Create

Close

public interface Close
    module procedure MemClose
end interface Close

Attr_Rewind

public interface Attr_Rewind
    module procedure MemAttrRewind
end interface Attr_Rewind

attr_next

public interface attr_next
    module procedure MemAttrNext
end interface attr_next

attr_true

public interface attr_true
    module procedure MemAttrTrue
end interface attr_true

del_attr

public interface del_attr
    module procedure MemAttrDel
end interface del_attr

put_attr

public interface put_attr
    module procedure memattradd_v
    module procedure memattradd
end interface put_attr

get_attr

public interface get_attr
    module procedure MemAttrGet
    module procedure MemAttrGetV
end interface get_attr

Description of Subroutines and Functions

memtab_add

private function memtab_add (var, name) result (stat)
    type (mem_variable), intent(out) :: var
    character (len=*), intent(in) :: name
    integer :: stat
end function memtab_add

memcreated

public subroutine memcreated (var, url, length, xtype, long_name, overwrite, err)
    type (MEM_VARIABLE), intent(out) :: var
    character (len=*), intent(in) :: url
    integer, intent(in) :: length
    character (len=*), optional, intent(in) :: xtype
    character (len=*), optional, intent(in) :: long_name
    logical, optional, intent(in) :: overwrite
    logical, optional, intent(out) :: err
    ! Calls: memattradd
end subroutine memcreated

memtab_lookup

private function memtab_lookup (var, ent) result (stat)
    type (mem_variable), intent(in) :: var
    type (mem_variable_entry), pointer :: ent
    integer :: stat
end function memtab_lookup

memclose

public subroutine memclose (var)
    type (mem_variable), intent(in) :: var
end subroutine memclose

MemAttrGet

public subroutine MemAttrGet (var, name, value, err)
    type (mem_variable), intent(in) :: var
    character (len=*), intent(in) :: name
    character (len=*), intent(out) :: value
    logical, optional, intent(out) :: err
    ! Calls: StoreError
end subroutine MemAttrGet

MemAttrGetV

public subroutine MemAttrGetV (var, name, value, err)
    type (mem_variable), intent(in) :: var
    character (len=*), intent(in) :: name
    type (vstring), intent(out) :: value
    logical, optional, intent(out) :: err
    ! Calls: StoreError
end subroutine MemAttrGetV

MemAttrDel

public subroutine MemAttrDel (var, name, err)
    type (MEM_VARIABLE), intent(in) :: var
    character (len=*), intent(in) :: name
    logical, optional, intent(out) :: err
    ! Calls: StoreError
end subroutine MemAttrDel

MemAttrTrue

public function MemAttrTrue (var, name, default) result (result)
    type (MEM_VARIABLE), intent(in) :: var
    character (len=*), intent(in) :: name
    logical, optional, intent(in) :: default
    logical :: result
end function MemAttrTrue

memAttrRewind

public subroutine memAttrRewind (var)
    type (MEM_VARIABLE), intent(in) :: var
end subroutine memAttrRewind

memAttrNext

public subroutine memAttrNext (var, name, err)
    type (MEM_VARIABLE), intent(in) :: var
    character (len=*), intent(out) :: name
    logical, optional, intent(out) :: err
end subroutine memAttrNext

memattradd

public subroutine memattradd (var, attrname, attrval)
    type (MEM_VARIABLE), intent(in) :: var
    character (len=*), intent(in) :: attrname
    character (len=*), intent(in) :: attrval
end subroutine memattradd

memattradd_v

public subroutine memattradd_v (var, attrname, attrval)
    type (MEM_VARIABLE), intent(in) :: var
    character (len=*), intent(in) :: attrname
    type (vstring), intent(in) :: attrval
end subroutine memattradd_v