StateRegistry Derived Type

type, public, extends(AbstractRegistry) :: StateRegistry


Inherits

type~~stateregistry~~InheritsGraph type~stateregistry StateRegistry type~abstractregistry AbstractRegistry type~stateregistry->type~abstractregistry type~registryptrmap RegistryPtrMap type~stateregistry->type~registryptrmap subregistries type~stateitemextensionvector StateItemExtensionVector type~stateregistry->type~stateitemextensionvector owned_items type~virtualptfamilymap VirtualPtFamilyMap type~stateregistry->type~virtualptfamilymap family_map type~map_set~5 map_Set type~registryptrmap->type~map_set~5 tree type~vector_wrapper~24 vector_wrapper type~stateitemextensionvector->type~vector_wrapper~24 elements type~map_set~16 map_Set type~virtualptfamilymap->type~map_set~16 tree type~map_s_basenode~16 map_s_BaseNode type~map_set~16->type~map_s_basenode~16 root type~map_s_basenode~5 map_s_BaseNode type~map_set~5->type~map_s_basenode~5 root type~stateitemextension StateItemExtension type~vector_wrapper~24->type~stateitemextension item type~componentdriverptrvector ComponentDriverPtrVector type~stateitemextension->type~componentdriverptrvector consumers type~griddedcomponentdriver GriddedComponentDriver type~stateitemextension->type~griddedcomponentdriver producer type~stateitemspec StateItemSpec type~stateitemextension->type~stateitemspec spec

Inherited by

type~~stateregistry~~InheritedByGraph type~stateregistry StateRegistry type~modelverticalgrid ModelVerticalGrid type~modelverticalgrid->type~stateregistry registry type~outermetacomponent OuterMetaComponent type~outermetacomponent->type~stateregistry registry type~servicespec ServiceSpec type~servicespec->type~stateregistry registry

Constructor

public interface StateRegistry

  • private function new_StateRegistry(name) result(r)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: name

    Return Value type(StateRegistry)


Type-Bound Procedures

procedure, public :: add_extension

  • private function add_extension(this, virtual_pt, extension, rc) result(new_extension)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    type(StateItemExtension), intent(in) :: extension
    integer, intent(out), optional :: rc

    Return Value type(StateItemExtension), pointer

procedure, public :: add_family

  • private subroutine add_family(this, virtual_pt, family, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    type(ExtensionFamily), intent(in) :: family
    integer, intent(out), optional :: rc

procedure, public :: add_primary_spec

  • private subroutine add_primary_spec(this, virtual_pt, spec, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    class(StateItemSpec), intent(in) :: spec
    integer, intent(out), optional :: rc

procedure, public :: add_spec

  • private subroutine add_spec(this, virtual_pt, spec, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    class(StateItemSpec), intent(in) :: spec
    integer, intent(out), optional :: rc

procedure, public :: add_subregistry

  • private subroutine add_subregistry(this, subregistry, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    class(StateRegistry), intent(in), target :: subregistry
    integer, intent(out), optional :: rc

procedure, public :: add_to_states

  • private subroutine add_to_states(this, multi_state, mode, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(MultiState), intent(inout) :: multi_state
    character(len=*), intent(in) :: mode
    integer, intent(out), optional :: rc

procedure, public :: add_virtual_pt

  • private subroutine add_virtual_pt(this, virtual_pt, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    integer, intent(out), optional :: rc

procedure, public :: allocate

  • private subroutine allocate(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: extend

  • private recursive function extend(registry, v_pt, goal_spec, rc) result(extension)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: registry
    type(VirtualConnectionPt), intent(in) :: v_pt
    class(StateItemSpec), intent(in) :: goal_spec
    integer, intent(out), optional :: rc

    Return Value type(StateItemExtension), pointer

procedure, public :: filter

procedure, public :: get_export_couplers

  • private function get_export_couplers(this) result(export_couplers)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this

    Return Value type(ComponentDriverPtrVector)

procedure, public :: get_extension_family

  • private function get_extension_family(this, virtual_pt, rc) result(family)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    integer, intent(out), optional :: rc

    Return Value type(ExtensionFamily), pointer

procedure, public :: get_extensions

  • private function get_extensions(this, virtual_pt, rc) result(extensions)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    integer, intent(out), optional :: rc

    Return Value type(StateItemExtensionPtr), allocatable, (:)

procedure, public :: get_import_couplers

  • private function get_import_couplers(this) result(import_couplers)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this

    Return Value type(ComponentDriverPtrVector)

procedure, public :: get_name

  • private function get_name(this) result(name)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this

    Return Value character(len=:), allocatable

procedure, public :: get_primary_extension

  • private function get_primary_extension(this, virtual_pt, rc) result(primary)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    integer, intent(out), optional :: rc

    Return Value type(StateItemExtension), pointer

generic, public :: get_subregistry => get_subregistry_by_name

  • private function get_subregistry_by_name(this, name, rc) result(subregistry)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    character(len=*), intent(in) :: name
    integer, intent(out), optional :: rc

    Return Value type(StateRegistry), pointer

generic, public :: get_subregistry => get_subregistry_by_conn_pt

  • private function get_subregistry_by_conn_pt(this, conn_pt, rc) result(subregistry)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    type(ConnectionPt), intent(in) :: conn_pt
    integer, intent(out), optional :: rc

    Return Value type(StateRegistry), pointer

procedure, public :: get_subregistry_by_conn_pt

  • private function get_subregistry_by_conn_pt(this, conn_pt, rc) result(subregistry)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    type(ConnectionPt), intent(in) :: conn_pt
    integer, intent(out), optional :: rc

    Return Value type(StateRegistry), pointer

procedure, public :: get_subregistry_by_name

  • private function get_subregistry_by_name(this, name, rc) result(subregistry)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in), target :: this
    character(len=*), intent(in) :: name
    integer, intent(out), optional :: rc

    Return Value type(StateRegistry), pointer

procedure, public :: has_subregistry

  • private function has_subregistry(this, name)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this
    character(len=*), intent(in) :: name

    Return Value logical

procedure, public :: has_virtual_pt

  • private function has_virtual_pt(this, virtual_pt)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt

    Return Value logical

procedure, public :: link_extension

  • private subroutine link_extension(this, virtual_pt, extension, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    type(StateItemExtension), intent(in), pointer :: extension
    integer, intent(out), optional :: rc

procedure, public :: num_owned_items

  • private function num_owned_items(this)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this

    Return Value integer

generic, public :: propagate_exports => propagate_exports_all

  • private subroutine propagate_exports_all(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    integer, intent(out), optional :: rc

generic, public :: propagate_exports => propagate_exports_subregistry

  • private subroutine propagate_exports_subregistry(this, subregistry, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(StateRegistry), intent(in), target :: subregistry
    integer, intent(out), optional :: rc

generic, public :: propagate_exports => propagate_exports_virtual_pt

  • private subroutine propagate_exports_virtual_pt(this, subregistry_name, iter, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    character(len=*), intent(in) :: subregistry_name
    type(VirtualPtFamilyMapIterator), intent(in) :: iter
    integer, intent(out), optional :: rc

procedure, public :: propagate_exports_all

  • private subroutine propagate_exports_all(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: propagate_exports_subregistry

  • private subroutine propagate_exports_subregistry(this, subregistry, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(StateRegistry), intent(in), target :: subregistry
    integer, intent(out), optional :: rc

procedure, public :: propagate_exports_virtual_pt

  • private subroutine propagate_exports_virtual_pt(this, subregistry_name, iter, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    character(len=*), intent(in) :: subregistry_name
    type(VirtualPtFamilyMapIterator), intent(in) :: iter
    integer, intent(out), optional :: rc

generic, public :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_all

  • private subroutine propagate_unsatisfied_imports_all(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    integer, intent(out), optional :: rc

generic, public :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_subregistry

  • private subroutine propagate_unsatisfied_imports_subregistry(this, subregistry, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    class(StateRegistry), intent(in), target :: subregistry
    integer, intent(out), optional :: rc

generic, public :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_virtual_pt

  • private subroutine propagate_unsatisfied_imports_virtual_pt(this, virtual_pt, family, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    type(ExtensionFamily), intent(in) :: family
    integer, intent(out), optional :: rc

procedure, public :: propagate_unsatisfied_imports_all

  • private subroutine propagate_unsatisfied_imports_all(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: propagate_unsatisfied_imports_subregistry

  • private subroutine propagate_unsatisfied_imports_subregistry(this, subregistry, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    class(StateRegistry), intent(in), target :: subregistry
    integer, intent(out), optional :: rc

procedure, public :: propagate_unsatisfied_imports_virtual_pt

  • private subroutine propagate_unsatisfied_imports_virtual_pt(this, virtual_pt, family, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(VirtualConnectionPt), intent(in) :: virtual_pt
    type(ExtensionFamily), intent(in) :: family
    integer, intent(out), optional :: rc

procedure, public :: set_blanket_geometry

  • private subroutine set_blanket_geometry(this, geom, vertical_grid, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(inout), target :: this
    type(ESMF_Geom), intent(in), optional :: geom
    class(VerticalGrid), intent(in), optional :: vertical_grid
    integer, intent(out), optional :: rc

generic, public :: write(formatted) => write_formatted

  • private subroutine write_formatted(this, unit, iotype, v_list, iostat, iomsg)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: v_list(:)
    integer, intent(out) :: iostat
    character(len=*), intent(inout) :: iomsg

procedure, public :: write_formatted

  • private subroutine write_formatted(this, unit, iotype, v_list, iostat, iomsg)

    Arguments

    Type IntentOptional Attributes Name
    class(StateRegistry), intent(in) :: this
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: v_list(:)
    integer, intent(out) :: iostat
    character(len=*), intent(inout) :: iomsg

Source Code

   type, extends(AbstractRegistry) :: StateRegistry
      private
      character(:), allocatable :: name
      type(StateItemExtensionVector) :: owned_items ! specs and couplers
      type(RegistryPtrMap) :: subregistries

      type(VirtualPtFamilyMap) :: family_map

      !# type(GriddedComponentDriverPtrVector) :: export_couplers
      !# type(GriddedComponentDriverPtrVector) :: import_couplers

   contains

      procedure :: add_subregistry
      procedure :: add_virtual_pt
      procedure :: add_primary_spec
      procedure :: link_extension
      procedure :: add_extension
      procedure :: add_spec
      procedure :: add_family

      procedure :: propagate_unsatisfied_imports_all
      procedure :: propagate_unsatisfied_imports_subregistry
      procedure :: propagate_unsatisfied_imports_virtual_pt
      generic :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_all
      generic :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_subregistry
      generic :: propagate_unsatisfied_imports => propagate_unsatisfied_imports_virtual_pt

      procedure :: propagate_exports_all
      procedure :: propagate_exports_subregistry
      procedure :: propagate_exports_virtual_pt
      generic :: propagate_exports => propagate_exports_all
      generic :: propagate_exports => propagate_exports_subregistry
      generic :: propagate_exports => propagate_exports_virtual_pt

      procedure :: get_name
      procedure :: has_virtual_pt
      procedure :: num_owned_items
      procedure :: get_extension_family
      procedure :: get_extensions
      procedure :: get_primary_extension

      procedure :: has_subregistry
      procedure :: get_subregistry_by_name
      procedure :: get_subregistry_by_conn_pt
      generic :: get_subregistry => get_subregistry_by_name
      generic :: get_subregistry => get_subregistry_by_conn_pt

      ! Actions on specs
      procedure :: allocate
      procedure :: set_blanket_geometry
      procedure :: add_to_states

      procedure :: filter ! for MatchConnection

      procedure :: get_export_couplers
      procedure :: get_import_couplers

      procedure :: write_formatted
      generic :: write(formatted) => write_formatted

      procedure :: extend

   end type StateRegistry