Class | gtdata_memory_internal |
In: |
gtdata/gtdata_memory/gtdata_memory_internal.f90
|
Note that Japanese and English are described in parallel.
Variable : | |||
memtab(:) : | type(GD_MEM_VARIABLE_ENTRY), allocatable, save, target
|
Function : | |
stat : | integer |
var : | type(GD_MEM_VARIABLE), intent(out) |
name : | character(len = *), intent(in) |
integer function memtab_add(var, name) result(stat) use gtdata_memory_types, only: GD_MEM_VARIABLE, GD_MEM_VARIABLE_ENTRY use dc_error, only: gt_enomem type(GD_MEM_VARIABLE), intent(out):: var character(len = *), intent(in):: name type(GD_MEM_VARIABLE_ENTRY), allocatable:: tmptab(:) integer:: i, n if (.not. allocated(memtab)) then allocate(memtab(16), stat=stat) if (stat /= 0) then stat = gt_enomem return endif do, i = 1, size(memtab) memtab(i)%name = "" memtab(i)%xtype = "" nullify(memtab(i)%dbuf) nullify(memtab(i)%attr, memtab(i)%current) enddo endif do, i = 1, size(memtab) if (memtab(i)%name == "") then stat = 0 var = GD_MEM_VARIABLE(i) memtab(i)%name = name return endif end do n = size(memtab) allocate(tmptab(n), stat=stat) if (stat /= 0) then stat = gt_enomem return endif tmptab(:) = memtab(:) deallocate(memtab) allocate(memtab(n * 2), stat=stat) if (stat /= 0) then stat = gt_enomem return endif memtab(1:n) = tmptab(1:n) deallocate(tmptab) do, i = n + 1, n * 2 memtab(i)%name = "" nullify(memtab(i)%dbuf) nullify(memtab(i)%attr, memtab(i)%current) enddo i = n + 1 var = GD_MEM_VARIABLE(i) memtab(i)%name = name end function memtab_add
Function : | |
stat : | integer |
var : | type(GD_MEM_VARIABLE), intent(in) |
ent : | type(GD_MEM_VARIABLE_ENTRY), pointer |
integer function memtab_lookup(var, ent) result(stat) use gtdata_memory_types, only: GD_MEM_VARIABLE, GD_MEM_VARIABLE_ENTRY use netcdf_f77, only: nf_enotvar, nf_noerr type(GD_MEM_VARIABLE), intent(in):: var type(GD_MEM_VARIABLE_ENTRY), pointer:: ent if (.not. allocated(memtab)) goto 999 if (var%id <= 0 .or. var%id > size(memtab)) goto 999 if (memtab(var%id)%name == "") goto 999 ent => memtab(var%id) stat = 0 999 continue nullify(ent) stat = nf_enotvar end function memtab_lookup