From 2bb1562ee79fc9dd8a51ab6403e276cca946abea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?B=C3=A9rang=C3=A8re=20Lamy?= <julien.mahmoud-lamy@inrae.fr>
Date: Tue, 30 Aug 2022 11:51:10 +0200
Subject: [PATCH] add project on polymorphic type instead of multiple types

---
 test_vect_type/a.f90         | 141 +++++++++++++++++++++++++++++++++++
 test_vect_type/progGeneral   | Bin 0 -> 17848 bytes
 test_vect_type/test          | Bin 0 -> 17728 bytes
 test_vect_type/test.f90      |  42 +++++++++++
 test_vect_type/test.o        | Bin 0 -> 3672 bytes
 test_vect_type/test_prog.f90 |  26 +++++++
 test_vect_type/toto.f90      |  41 ++++++++++
 test_vect_type/toto.mod      | Bin 0 -> 300 bytes
 test_vect_type/try           | Bin 0 -> 16968 bytes
 test_vect_type/vector.mod    | Bin 0 -> 1786 bytes
 10 files changed, 250 insertions(+)
 create mode 100644 test_vect_type/a.f90
 create mode 100755 test_vect_type/progGeneral
 create mode 100755 test_vect_type/test
 create mode 100644 test_vect_type/test.f90
 create mode 100644 test_vect_type/test.o
 create mode 100644 test_vect_type/test_prog.f90
 create mode 100644 test_vect_type/toto.f90
 create mode 100644 test_vect_type/toto.mod
 create mode 100755 test_vect_type/try
 create mode 100644 test_vect_type/vector.mod

diff --git a/test_vect_type/a.f90 b/test_vect_type/a.f90
new file mode 100644
index 0000000..a35529c
--- /dev/null
+++ b/test_vect_type/a.f90
@@ -0,0 +1,141 @@
+module alpha
+
+type general
+
+	integer 		:: int_
+	real 			:: float_
+	character 		:: char_
+	class(*), allocatable	:: unknown_
+
+	contains 
+
+	procedure :: SINT 	=> set_integer
+	procedure :: SFLOAT 	=> set_real
+	procedure :: SCHAR 	=> set_character
+	procedure :: SUNKNOWN	=> set_unknown
+	procedure :: PUNKNOWN	=> print_unknown
+
+end type general
+
+contains
+
+subroutine set_integer(self, int_)
+	class(general), intent(inout) :: self
+	integer, intent(inout) :: int_
+	self%int_ = int_ 
+end subroutine set_integer
+
+subroutine set_real(self, float_)
+	class(general), intent(inout) :: self
+	real, intent(inout) :: float_
+	self%float_ = float_ 
+end subroutine set_real
+
+subroutine set_character(self, char_)
+	class(general), intent(inout) :: self
+	character, intent(inout) :: char_
+	self%char_ = char_
+end subroutine set_character
+
+subroutine set_unknown(self, unknown_)
+	class(general), intent(inout) :: self
+	class(*), intent(inout), pointer :: unknown_
+	self%unknown_ = unknown_
+end subroutine set_unknown
+
+subroutine print_unknown(self)
+	class(general), intent(inout) :: self
+	class(*), intent(inout), pointer :: unknown_
+	
+	SELECT TYPE(unknown_)
+		TYPE IS(INTEGER)
+			unknown_ => self%unknown_
+			print*,unknown_
+		TYPE IS(REAL)
+			unknown_ => self%unknown_
+			print*,unknown_
+	END SELECT
+	
+	!ptr => self%unknown_
+	!ptrr => self%unknown_
+	
+	!ptr <= self%unknown_
+	!ptrr <= self%unknown_
+	
+	!SELECT TYPE(self%unknown_)
+	!SELECT TYPE(ptr)
+	!SELECT TYPE(ptrr)
+	!	TYPE IS(INTEGER)
+	!		!print*,self%unknown_
+	!		!print*,ptr
+	!		print*,ptrr
+	!	TYPE IS(REAL)
+	!		!print*,self%unknown_
+	!		!print*,ptr
+	!		print*,ptrr
+	!	!TYPE IS(CHARACTER*1)
+	!	!	print*,self%unknown_
+	!END SELECT
+end subroutine print_unknown
+
+end module alpha
+
+!_______________________
+
+program a
+
+use alpha
+
+implicit none
+
+type(general) 		:: test
+integer 		:: int_1, int_2
+real 			:: float_1, float_2
+character 		:: char_1, char_2 
+
+integer, target		:: int_3
+real, target		:: float_3
+
+ class(*),pointer	:: unknown_1, unknown_2, ptr
+
+int_1 = 10
+int_2 = 20
+float_1 = 15.0
+float_2 = 25.0
+char_1 = 'a'
+char_2 = 'b'
+
+test = general(int_=int_1, float_=float_1, char_=char_1)
+
+unknown_1 => int_3
+unknown_2 => float_3
+
+print*,test%int_, test%float_, test%char_
+
+call test % SINT(int_2)
+call test % SFLOAT(float_2)
+call test % SCHAR(char_2)
+
+print*,test%int_, test%float_, test%char_
+
+call test % SUNKNOWN(unknown_1)
+
+print*,test%unknown_
+
+
+
+
+end program a
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test_vect_type/progGeneral b/test_vect_type/progGeneral
new file mode 100755
index 0000000000000000000000000000000000000000..98d4edd79a5300fba6eed985c8e77ac5baec0eac
GIT binary patch
literal 17848
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
C-y917

literal 0
HcmV?d00001

diff --git a/test_vect_type/test b/test_vect_type/test
new file mode 100755
index 0000000000000000000000000000000000000000..5949588062bf0a1fc1563ded8c5910811fd42f9d
GIT binary patch
literal 17728
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

literal 0
HcmV?d00001

diff --git a/test_vect_type/test.f90 b/test_vect_type/test.f90
new file mode 100644
index 0000000..53b966f
--- /dev/null
+++ b/test_vect_type/test.f90
@@ -0,0 +1,42 @@
+MODULE VECTOR
+
+	IMPLICIT NONE
+
+	TYPE STD_VECTOR
+		CLASS(*), DIMENSION(:), POINTER :: v_ptr
+		INTEGER 			:: v_size_in_array
+		INTEGER 			:: v_size_in_memory
+		integer, dimension(:), allocatable, target :: ptr_int
+		
+		CONTAINS 
+		
+		PROCEDURE :: ALLOC => ALLOCATE_STD_VECTOR
+		!PROCEDURE :: MODIF => MODIF_STD_VECTOR
+		!PROCEDURE :: DEALLOC => DEALLOCATE_STD_VECTOR
+	END TYPE STD_VECTOR
+	
+	CONTAINS 
+	
+	SUBROUTINE ALLOCATE_STD_VECTOR(self, array)
+	
+	CLASS(STD_VECTOR), intent(inout) :: self
+        CLASS(*), intent(in), dimension(:) :: array
+        
+        SELECT TYPE(ARRAY)
+        	TYPE IS(INTEGER)
+        		print*,"hello"
+        		ALLOCATE(self%ptr_int, SOURCE=array)
+        		self%v_ptr => ptr_int
+        		SELECT TYPE(self%v_ptr)
+        			TYPE IS(INTEGER)
+				print*,self%v_ptr
+				!self%v_ptr = self%v_ptr * 1
+        			!print*,self%v_ptr
+        		END SELECT
+        		
+        	CLASS DEFAULT
+        		print*,"error, no type"
+       	END SELECT
+	END SUBROUTINE ALLOCATE_STD_VECTOR
+	
+END MODULE VECTOR
diff --git a/test_vect_type/test.o b/test_vect_type/test.o
new file mode 100644
index 0000000000000000000000000000000000000000..93eadf953d7493b361fe60a19cb38717677df517
GIT binary patch
literal 3672
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

literal 0
HcmV?d00001

diff --git a/test_vect_type/test_prog.f90 b/test_vect_type/test_prog.f90
new file mode 100644
index 0000000..e9e0891
--- /dev/null
+++ b/test_vect_type/test_prog.f90
@@ -0,0 +1,26 @@
+program test
+
+use VECTOR
+
+implicit none
+
+integer, dimension(:), allocatable, TARGET :: tester
+class(*), dimension(:), pointer :: tester_ptr
+type(STD_VECTOR) :: v_tester
+
+allocate(tester(10))
+
+tester_ptr => tester
+
+!tester(:) = [(i, i=1,10,2)]
+tester(:) = (/1,2,3,4,5,6,7,8,9,10/)
+!print*,tester
+
+!v_tester.alloc(tester)
+!call alloc(v_tester, tester)
+call v_tester%alloc(tester_ptr)
+
+tester <= v_tester%v_ptr
+print*,tester
+
+end program test
diff --git a/test_vect_type/toto.f90 b/test_vect_type/toto.f90
new file mode 100644
index 0000000..63d9426
--- /dev/null
+++ b/test_vect_type/toto.f90
@@ -0,0 +1,41 @@
+module toto
+
+	implicit none
+	
+	interface totos
+	
+		PROCEDURE toto1, toto2
+	
+	end interface totos
+	
+	contains
+	
+	subroutine toto1(titi)
+	
+		integer, intent(inout) :: titi		
+		print*,titi
+		
+	end subroutine toto1
+	
+	subroutine toto2(titi)
+	
+		real, intent(inout) :: titi		
+		print*,titi
+		
+	end subroutine toto2
+	
+end module toto
+
+program try
+
+	use toto
+
+	implicit none
+
+	integer :: alpha
+	real :: beta
+	
+	call totos(alpha)
+	call totos(beta) 
+
+end program try
diff --git a/test_vect_type/toto.mod b/test_vect_type/toto.mod
new file mode 100644
index 0000000000000000000000000000000000000000..7d8f0f6796e3e49dbd4fc2f08b565b6cc5edca02
GIT binary patch
literal 300
zcmV+{0n`2;iwFP!000001HIBsPlGTR2k?78#dB*pXv*7Oj%?J02*p&Y@n{@NNSq`L
z{rt9+R-DT`xER{B4-Nc($<xhEDJqe0*tgsF*BU<R?$ESvfc+T5OIJVl^%izryNAB*
z+w0wuB0@a4#6WiAA+=SLV4ZQmFsv8?2;G^Tkv+5v1|JA1%2ehIB){e5BfrXc#dzh)
zJ5jD}fyNamP?JA-F+8?bu%R|g`bF1YqR<HZV~NgUsT4mjhG;A)Tjx^<+{=|HWtDOE
zyD8R|nM0uoDlnMf|50;oS)4@86sGB$0i#B&JP(P;l9g&$##O+{KEX6Cl|}JneyZUc
yCLkISwm#pj#dpK}ZwA4V+yRE-e7e54V?!uJ?&44gUB4&<9{L2*jlyJ&0{{R5wvUbg

literal 0
HcmV?d00001

diff --git a/test_vect_type/try b/test_vect_type/try
new file mode 100755
index 0000000000000000000000000000000000000000..f1745c1e9dbf3650dd10a2657b8d3ddc0f8c94cf
GIT binary patch
literal 16968
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

literal 0
HcmV?d00001

diff --git a/test_vect_type/vector.mod b/test_vect_type/vector.mod
new file mode 100644
index 0000000000000000000000000000000000000000..7d7f6134ab727e52ac16e371678360f5a4edc132
GIT binary patch
literal 1786
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

literal 0
HcmV?d00001

-- 
GitLab