objects_factory Derived Type

type, public :: objects_factory

Factory, create an instance of concrete extension of base_object given its constructor.


Source Code


Type-Bound Procedures

Create a concrete instance of alpha_coefficients or optimal_weights or polynomials or smoothness_indicators.

procedure, public, nopass :: create_base_object

Create a concrete instance of base_object.

  • private subroutine create_base_object(constructor, object)

    Create an instance of concrete extension of base_object given its constructor.

    Arguments

    Type IntentOptional AttributesName
    class(base_object_constructor), intent(in) :: constructor

    Constructor.

    class(base_object), intent(out), allocatable:: object

    Object.

procedure, private, nopass :: create_alpha_coefficients

Create a concrete instance of alpha_coefficients.

procedure, private, nopass :: create_optimal_weights

Create a concrete instance of optimal_weights.

procedure, private, nopass :: create_polynomials

Create a concrete instance of polynomials.

  • private subroutine create_polynomials(constructor, object)

    Create an instance of concrete extension of polynomials given its constructor.

    Arguments

    Type IntentOptional AttributesName
    class(polynomials_constructor), intent(in) :: constructor

    Constructor.

    class(polynomials), intent(out), allocatable:: object

    Object.

procedure, private, nopass :: create_smoothness_indicators

Create a concrete instance of smoothness_indicators.

Source Code

type :: objects_factory
  !< Factory, create an instance of concrete extension of [[base_object]] given its constructor.
  contains
    ! public methods
    generic :: create => create_alpha_coefficients, &
                         create_optimal_weights,    &
                         create_polynomials,        &
                         create_smoothness_indicators !< Create a concrete instance of [[alpha_coefficients]] or
                                                      !< [[optimal_weights]] or [[polynomials]] or [[smoothness_indicators]].
    procedure, nopass :: create_base_object           !< Create a concrete instance of [[base_object]].
    ! private methods
    procedure, nopass, private :: create_alpha_coefficients    !< Create a concrete instance of [[alpha_coefficients]].
    procedure, nopass, private :: create_optimal_weights       !< Create a concrete instance of [[optimal_weights]].
    procedure, nopass, private :: create_polynomials           !< Create a concrete instance of [[polynomials]].
    procedure, nopass, private :: create_smoothness_indicators !< Create a concrete instance of [[smoothness_indicators]].
endtype objects_factory