- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
1 Solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]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 [/plain]
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]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 [/plain]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Steve Lionel (Intel)
This is how it's done. Note that geneSize is not defined here, but I assume you'll take care of that.
[plain]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 [/plain]
Worked.
Thank you.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page