CircleWrapperFactory.f90 Source File

This File Depends On

sourcefile~~circlewrapperfactory.f90~~EfferentGraph sourcefile~circlewrapperfactory.f90 CircleWrapperFactory.f90 sourcefile~circle.f90 Circle.f90 sourcefile~circle.f90->sourcefile~circlewrapperfactory.f90 sourcefile~circlewrapper.f90 CircleWrapper.f90 sourcefile~circle.f90->sourcefile~circlewrapper.f90 sourcefile~errormessages.f90 ErrorMessages.f90 sourcefile~errormessages.f90->sourcefile~circlewrapperfactory.f90 sourcefile~errormessages.f90->sourcefile~circlewrapper.f90 sourcefile~wrapperfactory.f90 WrapperFactory.f90 sourcefile~wrapperfactory.f90->sourcefile~circlewrapperfactory.f90 sourcefile~dimensionswrapper.f90 DimensionsWrapper.f90 sourcefile~dimensionswrapper.f90->sourcefile~circlewrapperfactory.f90 sourcefile~dimensionswrapper.f90->sourcefile~wrapperfactory.f90 sourcefile~dimensionswrapper0d.f90 DimensionsWrapper0D.f90 sourcefile~dimensionswrapper.f90->sourcefile~dimensionswrapper0d.f90 sourcefile~circlewrapper.f90->sourcefile~circlewrapperfactory.f90 sourcefile~dimensionswrapper0d.f90->sourcefile~circlewrapper.f90
Help

Files Dependent On This One

sourcefile~~circlewrapperfactory.f90~~AfferentGraph sourcefile~circlewrapperfactory.f90 CircleWrapperFactory.f90 sourcefile~extendwrappers.f90 ExtendWrappers.f90 sourcefile~circlewrapperfactory.f90->sourcefile~extendwrappers.f90
Help


Source Code

module CircleWrapperFactory

USE Circle                      !< USE the data type to store
USE CircleWrapper               !< USE the corresponding Wrapper
USE DimensionsWrapper           !< USE the DimensionsWrapper abstract class
USE WrapperFactory              !< USE the WrapperFactory abstract class
USE ErrorMessages               !< USE the ErrorMessages for printing error messages
USE PENF, only: I1P             !< USE I1P data type

implicit none
private

    type, extends(WrapperFactory_t) :: CircleWrapperFactory_t
    private

    contains
        procedure         :: Wrap0D      => CircleWrapperFactory_Wrap0D         !< Wraps scalar Circles
        procedure         :: Wrap1D      => CircleWrapperFactory_Wrap1D         !< Wraps 1D arrays of Circles
        procedure         :: Wrap2D      => CircleWrapperFactory_Wrap2D         !< Wraps 2D arrays of Circles
        procedure         :: Wrap3D      => CircleWrapperFactory_Wrap3D         !< Wraps 3D arrays of Circles
        procedure         :: Wrap4D      => CircleWrapperFactory_Wrap4D         !< Wraps 4D arrays of Circles
        procedure         :: Wrap5D      => CircleWrapperFactory_Wrap5D         !< Wraps 5D arrays of Circles
        procedure         :: Wrap6D      => CircleWrapperFactory_Wrap6D         !< Wraps 6D arrays of Circles
        procedure         :: Wrap7D      => CircleWrapperFactory_Wrap7D         !< Wraps 7D arrays of Circles
        procedure, public :: hasSameType => CircleWrapperFactory_hasSameType    !< Check if the data type of a input Mold is Circle_t
    end type

    type(CircleWrapperFactory_t), public :: WrapperFactoryCircle                !< Public Wrapper Factory (singleton)

contains

    function CircleWrapperFactory_hasSameType(this, Value) result(hasSameType)
    !-----------------------------------------------------------------
    !< Check if Value type agrees with wrapper type
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t), intent(IN) :: this
        class(*),                   intent(IN) :: Value
        logical                                :: hasSameType
    !-----------------------------------------------------------------
        hasSameType = .false.
        select type(Value)
            type is (Circle_t)
                hasSameType = .true.
        end select
    end function CircleWrapperFactory_hasSameType


    function CircleWrapperFactory_Wrap0D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 0D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        if(this%hasSameType(Value)) then
            allocate(CircleWrapper_t::Wrapper)
            call Wrapper%SetDimensions(Dimensions=0_I1P)
            select type (Wrapper)
                type is(CircleWrapper_t)
                    call Wrapper%Set(Value=Value)
            end select
        endif
    end function CircleWrapperFactory_Wrap0D


    function CircleWrapperFactory_Wrap1D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 1D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap1D


    function CircleWrapperFactory_Wrap2D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 2D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap2D


    function CircleWrapperFactory_Wrap3D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 3D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap3D


    function CircleWrapperFactory_Wrap4D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 4D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:,1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap4D


    function CircleWrapperFactory_Wrap5D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 5D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:,1:,1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap5D


    function CircleWrapperFactory_Wrap6D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 6D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:,1:,1:,1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap6D


    function CircleWrapperFactory_Wrap7D(this, Value) result(Wrapper)
    !-----------------------------------------------------------------
    !< Create Circle 7D Wrapper
    !-----------------------------------------------------------------
        class(CircleWrapperFactory_t),           intent(IN)    :: this
        class(*),                                intent(IN)    :: Value(1:,1:,1:,1:,1:,1:,1:)
        class(DimensionsWrapper_t), pointer                    :: Wrapper
    !-----------------------------------------------------------------
        call msg%Error(txt='Setting Value: Only scalar circle data type allowed', &
                            file=__FILE__, line=__LINE__ )
    end function CircleWrapperFactory_Wrap7D

end module CircleWrapperFactory

Circle.f90 CircleWrapper.f90 CircleWrapperFactory.f90 compact_real.f90 DimensionsWrapper.f90 DimensionsWrapper0D.f90 DimensionsWrapper0D_DLCA.f90 DimensionsWrapper0D_I1P.f90 DimensionsWrapper0D_I2P.f90 DimensionsWrapper0D_I4P.f90 DimensionsWrapper0D_I8P.f90 DimensionsWrapper0D_L.f90 DimensionsWrapper0D_R4P.f90 DimensionsWrapper0D_R8P.f90 DimensionsWrapper1D.f90 DimensionsWrapper1D_DLCA.f90 DimensionsWrapper1D_I1P.f90 DimensionsWrapper1D_I2P.f90 DimensionsWrapper1D_I4P.f90 DimensionsWrapper1D_I8P.f90 DimensionsWrapper1D_L.f90 DimensionsWrapper1D_R4P.f90 DimensionsWrapper1D_R8P.f90 DimensionsWrapper2D.f90 DimensionsWrapper2D_DLCA.f90 DimensionsWrapper2D_I1P.f90 DimensionsWrapper2D_I2P.f90 DimensionsWrapper2D_I4P.f90 DimensionsWrapper2D_I8P.f90 DimensionsWrapper2D_L.f90 DimensionsWrapper2D_R4P.f90 DimensionsWrapper2D_R8P.f90 DimensionsWrapper3D.f90 DimensionsWrapper3D_DLCA.f90 DimensionsWrapper3D_I1P.f90 DimensionsWrapper3D_I2P.f90 DimensionsWrapper3D_I4P.f90 DimensionsWrapper3D_I8P.f90 DimensionsWrapper3D_L.f90 DimensionsWrapper3D_R4P.f90 DimensionsWrapper3D_R8P.f90 DimensionsWrapper4D.f90 DimensionsWrapper4D_DLCA.f90 DimensionsWrapper4D_I1P.f90 DimensionsWrapper4D_I2P.f90 DimensionsWrapper4D_I4P.f90 DimensionsWrapper4D_I8P.f90 DimensionsWrapper4D_L.f90 DimensionsWrapper4D_R4P.f90 DimensionsWrapper4D_R8P.f90 DimensionsWrapper5D.f90 DimensionsWrapper5D_DLCA.f90 DimensionsWrapper5D_I1P.f90 DimensionsWrapper5D_I2P.f90 DimensionsWrapper5D_I4P.f90 DimensionsWrapper5D_I8P.f90 DimensionsWrapper5D_L.f90 DimensionsWrapper5D_R4P.f90 DimensionsWrapper5D_R8P.f90 DimensionsWrapper6D.f90 DimensionsWrapper6D_DLCA.f90 DimensionsWrapper6D_I1P.f90 DimensionsWrapper6D_I2P.f90 DimensionsWrapper6D_I4P.f90 DimensionsWrapper6D_I8P.f90 DimensionsWrapper6D_L.f90 DimensionsWrapper6D_R4P.f90 DimensionsWrapper6D_R8P.f90 DimensionsWrapper7D.f90 DimensionsWrapper7D_DLCA.f90 DimensionsWrapper7D_I1P.f90 DimensionsWrapper7D_I2P.f90 DimensionsWrapper7D_I4P.f90 DimensionsWrapper7D_I8P.f90 DimensionsWrapper7D_L.f90 DimensionsWrapper7D_R4P.f90 DimensionsWrapper7D_R8P.f90 DLACWrapperFactory.f90 ErrorMessages.f90 ExtendWrappers.f90 FortranParameterList_Example.f90 FPL.f90 FPL_utils.f90 I1PWrapperFactory.f90 I2PWrapperFactory.f90 I4PWrapperFactory.f90 I8PWrapperFactory.f90 LWrapperFactory.f90 ParameterEntry.f90 ParameterEntryDictionary.f90 ParameterList.f90 ParameterList_Test.f90 ParameterList_Wrapper0D_Test.f90 ParameterList_Wrapper1D_Test.f90 ParameterList_Wrapper2D_Test.f90 ParameterList_Wrapper3D_Test.f90 ParameterList_Wrapper4D_Test.f90 ParameterList_Wrapper5D_Test.f90 ParameterList_Wrapper6D_Test.f90 ParameterList_Wrapper7D_Test.f90 ParameterListIterator_Test.f90 ParameterRootEntry.f90 R4PWrapperFactory.f90 R8PWrapperFactory.f90 WrapperFactory.f90 WrapperFactoryList.f90 WrapperFactoryList_DLCA_Test.f90 WrapperFactoryList_I1P_Test.f90 WrapperFactoryList_I2P_Test.f90 WrapperFactoryList_I4P_Test.f90 WrapperFactoryList_I8P_Test.f90 WrapperFactoryList_L_Test.f90 WrapperFactoryList_R4P_Test.f90 WrapperFactoryList_R8P_Test.f90 WrapperFactoryListSingleton.f90