MockAspect.F90 Source File


This file depends on

sourcefile~~mockaspect.f90~~EfferentGraph sourcefile~mockaspect.f90 MockAspect.F90 sourcefile~extensionaction.f90 ExtensionAction.F90 sourcefile~mockaspect.f90->sourcefile~extensionaction.f90 sourcefile~nullaction.f90 NullAction.F90 sourcefile~mockaspect.f90->sourcefile~nullaction.f90 sourcefile~stateitemaspect.f90 StateItemAspect.F90 sourcefile~mockaspect.f90->sourcefile~stateitemaspect.f90 sourcefile~errorhandling.f90 ErrorHandling.F90 sourcefile~extensionaction.f90->sourcefile~errorhandling.f90 sourcefile~nullaction.f90->sourcefile~extensionaction.f90 sourcefile~nullaction.f90->sourcefile~errorhandling.f90 sourcefile~stateitemaspect.f90->sourcefile~errorhandling.f90 sourcefile~mapl_throw.f90 MAPL_Throw.F90 sourcefile~errorhandling.f90->sourcefile~mapl_throw.f90

Files dependent on this one

sourcefile~~mockaspect.f90~~AfferentGraph sourcefile~mockaspect.f90 MockAspect.F90 sourcefile~test_baseaspect.pf Test_BaseAspect.pf sourcefile~test_baseaspect.pf->sourcefile~mockaspect.f90

Source Code

#include "MAPL_Generic.h"

module MockAspect_mod
   use mapl3g_StateItemASpect
   use mapl3g_ExtensionAction
   use mapl3g_NullAction
   implicit none
   private

   public :: MockAspect

   type, extends(StateItemAspect) :: MockAspect
      integer :: value
      logical :: supports_conversion_
   contains
      procedure :: matches
      procedure :: make_action
      procedure :: supports_conversion_general
      procedure :: supports_conversion_specific
   end type MockAspect

   interface MockAspect
      procedure :: new_MockAspect
   end interface MockAspect

contains

   function new_MockAspect(mirror, time_dependent, value, supports_conversion) result(aspect)
      type(MockAspect) :: aspect
      logical, intent(in) :: mirror
      logical, intent(in) :: time_dependent
      integer, intent(in) :: value
      logical, intent(in) :: supports_conversion

      call aspect%set_mirror(mirror)
      call aspect%set_time_dependent(time_dependent)

      aspect%value = value
      aspect%supports_conversion_ = supports_conversion

   end function new_MockAspect

   logical function matches(src, dst)
      class(MockAspect), intent(in) :: src
      class(StateItemAspect), intent(in) :: dst

      select type (dst)
      type is (MockAspect)
         matches = (src%value == dst%value)
      class default
         matches = .false.
      end select
   end function matches

   logical function supports_conversion_general(src)
      class(MockAspect), intent(in) :: src
      supports_conversion_general = src%supports_conversion_
   end function supports_conversion_general

   logical function supports_conversion_specific(src, dst)
      class(MockAspect), intent(in) :: src
      class(StateItemAspect), intent(in) :: dst
      supports_conversion_specific = src%supports_conversion_
   end function supports_conversion_specific

   function make_action(src, dst, rc) result(action)
      class(ExtensionAction), allocatable :: action
      class(MockAspect), intent(in) :: src
      class(StateItemAspect), intent(in) :: dst
      integer, optional, intent(out) :: rc

      action = NullAction()
      if (present(rc)) rc = 0
   end function make_action
   
end module MockAspect_mod