Skip to content

Commit 15ffa8d

Browse files
committed
added a base class for the bspline types.
1 parent 34c6005 commit 15ffa8d

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/bspline_oo_module.f90

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,23 @@ module bspline_oo_module
2121

2222
implicit none
2323

24-
private
25-
26-
type,public :: bspline_2d
24+
private
25+
26+
type,public,abstract :: bspline_class
27+
!! base class for the b-spline types
28+
contains
29+
procedure(destroy_func),deferred :: destroy !! destructor
30+
end type bspline_class
31+
32+
abstract interface
33+
subroutine destroy_func(me) !! interface for bspline destructor routines
34+
import :: bspline_class
35+
implicit none
36+
class(bspline_class),intent(out) :: me
37+
end subroutine destroy_func
38+
end interface
39+
40+
type,extends(bspline_class),public :: bspline_2d
2741
!! Class for 2d b-spline interpolation.
2842
private
2943
integer :: nx = 0
@@ -39,7 +53,7 @@ module bspline_oo_module
3953
procedure,public :: destroy => destroy_2d
4054
end type bspline_2d
4155

42-
type,public :: bspline_3d
56+
type,extends(bspline_class),public :: bspline_3d
4357
!! Class for 3d b-spline interpolation.
4458
private
4559
integer :: nx = 0
@@ -58,7 +72,7 @@ module bspline_oo_module
5872
procedure,public :: destroy => destroy_3d
5973
end type bspline_3d
6074

61-
type,public :: bspline_4d
75+
type,extends(bspline_class),public :: bspline_4d
6276
!! Class for 4d b-spline interpolation.
6377
private
6478
integer :: nx = 0
@@ -81,7 +95,7 @@ module bspline_oo_module
8195
procedure,public :: destroy => destroy_4d
8296
end type bspline_4d
8397

84-
type,public :: bspline_5d
98+
type,extends(bspline_class),public :: bspline_5d
8599
!! Class for 5d b-spline interpolation.
86100
private
87101
integer :: nx = 0
@@ -106,7 +120,7 @@ module bspline_oo_module
106120
procedure,public :: destroy => destroy_5d
107121
end type bspline_5d
108122

109-
type,public :: bspline_6d
123+
type,extends(bspline_class),public :: bspline_6d
110124
!! Class for 6d b-spline interpolation.
111125
private
112126
integer :: nx = 0

0 commit comments

Comments
 (0)