Octopus
system_factory_abst.F90
Go to the documentation of this file.
1!! Copyright (C) 2020 M. Oliveira
2!!
3!! This Source Code Form is subject to the terms of the Mozilla Public
4!! License, v. 2.0. If a copy of the MPL was not distributed with this
5!! file, You can obtain one at https://mozilla.org/MPL/2.0/.
6!!
7
11 use system_oct_m
12 implicit none
13
14 private
15 public :: &
17
19 type, abstract :: system_factory_abst_t
20 contains
21 procedure(system_factory_abst_create), deferred :: create
22 procedure(system_factory_abst_block_name), deferred :: block_name
24
25 abstract interface
26 function system_factory_abst_create(this, namespace, name, type) result(system)
28 import system_t
29 import namespace_t
30 class(system_factory_abst_t), intent(in) :: this
31 type(namespace_t), intent(in) :: namespace
32 character(len=*), intent(in) :: name
33 integer, intent(in) :: type
34 class(system_t), pointer :: system
36
37 character(len=80) function system_factory_abst_block_name(this)
38 import :: system_factory_abst_t
39 class(system_factory_abst_t), intent(in) :: this
41 end interface
42
44
45!! Local Variables:
46!! mode: f90
47!! coding: utf-8
48!! End:
This module defines the abstract class for the system factory.
This module implements the abstract system type.
Definition: system.F90:109
Abstract class for systems.
Definition: system.F90:161