27 character(len=IODA_OBSVAR_MAXSTRLEN) :: vname
28 real(kind_real),
allocatable :: vals(:)
62 character(len=*) :: vname
70 new_node%vname = trim(vname)
71 new_node%next => self%head
78 self%n_nodes = self%n_nodes + 1
86 character(len=*) :: vname
94 do while (
associated(current))
95 if (trim(vname) .eq. trim(current%vname))
then 101 current => current%next
110 character(len=IODA_OBSVAR_MAXSTRLEN) :: vname
118 do while (
associated(current))
119 if (trim(vname) .eq. trim(current%vname))
exit 121 current => current%next
125 if (
associated(current))
then 126 if (
associated(current%next))
then 130 if (
associated(prev))
then 132 prev%next => current%next
135 self%head%next => current%next
140 if (
allocated(current%vals))
then 141 deallocate(current%vals)
145 self%n_nodes = self%n_nodes - 1
160 do while (
associated(current))
165 if (
allocated(current%vals))
then 166 deallocate(current%vals)
169 self%n_nodes = self%n_nodes - 1
subroutine delete_(self)
Finalize the linked list, deallocate all nodes.
integer, parameter ioda_obsvar_maxstrlen
subroutine remove_node_(self, vname)
Remove an element from the linked list.
subroutine setup_(self)
Initialize the linked list.
subroutine get_node_(self, vname, ptr)
Find a node in the linked list by key.
subroutine add_node_(self, vname, ptr)
Add a node to the linked list.