@@ -21,9 +21,23 @@ module bspline_oo_module
21
21
22
22
implicit none
23
23
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
27
41
! ! Class for 2d b-spline interpolation.
28
42
private
29
43
integer :: nx = 0
@@ -39,7 +53,7 @@ module bspline_oo_module
39
53
procedure ,public :: destroy = > destroy_2d
40
54
end type bspline_2d
41
55
42
- type,public :: bspline_3d
56
+ type,extends(bspline_class), public :: bspline_3d
43
57
! ! Class for 3d b-spline interpolation.
44
58
private
45
59
integer :: nx = 0
@@ -58,7 +72,7 @@ module bspline_oo_module
58
72
procedure ,public :: destroy = > destroy_3d
59
73
end type bspline_3d
60
74
61
- type,public :: bspline_4d
75
+ type,extends(bspline_class), public :: bspline_4d
62
76
! ! Class for 4d b-spline interpolation.
63
77
private
64
78
integer :: nx = 0
@@ -81,7 +95,7 @@ module bspline_oo_module
81
95
procedure ,public :: destroy = > destroy_4d
82
96
end type bspline_4d
83
97
84
- type,public :: bspline_5d
98
+ type,extends(bspline_class), public :: bspline_5d
85
99
! ! Class for 5d b-spline interpolation.
86
100
private
87
101
integer :: nx = 0
@@ -106,7 +120,7 @@ module bspline_oo_module
106
120
procedure ,public :: destroy = > destroy_5d
107
121
end type bspline_5d
108
122
109
- type,public :: bspline_6d
123
+ type,extends(bspline_class), public :: bspline_6d
110
124
! ! Class for 6d b-spline interpolation.
111
125
private
112
126
integer :: nx = 0
0 commit comments