Forum Jump

Select Group :
Select Forum :
Sorted By :
Sort Order :
From The :
 
Thread Tools  Search this thread 
brunocalado
Total Points:
561
Status Points:
61
Brown Belt
July 2, 2009 4:28 PM PDT
Function Overloading
How can I create a interface for overload this functions?

I need just to use
CALL func(a,b)
for the all functions

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE


Xiaoping Duan (Intel)
Total Points:
714
Status Points:
214
Brown Belt
July 2, 2009 7:54 PM PDT
Rate
 
#1
Quoting - brunocalado
How can I create a interface for overload this functions?

I need just to use
CALL func(a,b)
for the all functions

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE



You can use generic name for procedures like below:

INTERFACE func

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE

END INTERFACE



brunocalado
Total Points:
561
Status Points:
61
Brown Belt
July 3, 2009 5:09 PM PDT
Rate
 
#2 Reply to #1
Not working...

What's wrong?

INTERFACE getRandom
INTEGER FUNCTION getRandomA()
END FUNCTION
INTEGER FUNCTION getRandomB(max)
INTEGER, INTENT(IN) :: max
END FUNCTION
INTEGER FUNCTION getRandomC(min,max)
INTEGER, INTENT(IN) :: min, max
END FUNCTION
END INTERFACE


MODULE test
USE IFPORT
CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE


Steve Lionel (Intel)
Total Points:
112,141
Status Points:
112,141
Black Belt
July 3, 2009 6:06 PM PDT
Rate
 
|Best Answer
#3 Reply to #2
This is how it's done.  Note that geneSize is not defined here, but I assume you'll take care of that.

MODULE test
USE IFPORT

INTERFACE getRandom
MODULE PROCEDURE getRandomA
MODULE PROCEDURE getRandomB
MODULE PROCEDURE getRandomC
END INTERFACE

CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE





brunocalado
Total Points:
561
Status Points:
61
Brown Belt
July 3, 2009 7:44 PM PDT
Rate
 
#4 Reply to #3
This is how it's done.  Note that geneSize is not defined here, but I assume you'll take care of that.

MODULE test
USE IFPORT

INTERFACE getRandom
MODULE PROCEDURE getRandomA
MODULE PROCEDURE getRandomB
MODULE PROCEDURE getRandomC
END INTERFACE

CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE



Worked.

Thank you.




Intel Software Network Forums Statistics

8293 users have contributed to 31241 threads and 99118 posts to date.
In the past 24 hours, we have 12 new thread(s) 11 new posts(s), and 21 new user(s).

In the past 3 days, the most popular thread for everyone has been huge pages on linux? The most posts were made to Pipeline buffer between stages? The post with the most views is Another example attached (Tr

Please welcome our newest member bwillems