next up previous contents
Next: Calling Methods From FORTRAN Up: FORTRAN 90 Bindings Previous: FORTRAN 90 Bindings   Contents


Basic Types


Table 11.1: SIDL to FORTRAN 90 type mapping
SIDL TYPE FORTRAN 90 TYPE
int INTEGER (SELECTED_INT_KIND(9))
long INTEGER (SELECTED_INT_KIND(18))
float REAL (SELECTED_REAL_KIND(6,37))
double REAL (SELECTED_REAL_KIND(15, 307))
bool LOGICAL
char CHARACTER (LEN=1)
string CHARACTER*(*)
fcomplex COMPLEX (SELECTED_REAL_KIND(6, 37))
dcomplex COMPLEX (SELECTED_REAL_KIND(15, 307))
enum INTEGER (SELECTED_INT_KIND(9))
opaque INTEGER (SELECTED_INT_KIND(18))

For pointer types, such as opaque, interface, class, and array, the equivalent of a SIDL double is used. That is, the intermediate object reference assumes a 64-bit integer is used to enable portability between systems with a 32 bit address space and those with a 64 bit address space. On a 32 bit system, the upper 32 bits of these quantities are ignored. Systems with more than 64-bit pointers aren't currently supported.

Generally, clients should treat opaque, interface, class and array values as black boxes. However, there is one value that is special. A value of zero for any of these quantities indicates that the value does not refer to an object. Zero is the equivalent of NULL. Any nonzero value is or should be a valid object reference. Developers writing in FORTRAN 90 should initialize values to be passed as in or inout parameters to zero or a valid object reference.

The SIDL string type mapping is currently identical to that of the FORTRAN 77 mapping. That is, all FORTRAN 90 strings have a limited fixed size. When implementing a subroutine with an out parameter, the size of the string is limited to 1024 characters.

Enumerated types are just integer values. The constants are defined in an includable file assuming your FORTRAN 90 compiler supports some form of including.


next up previous contents
Next: Calling Methods From FORTRAN Up: FORTRAN 90 Bindings Previous: FORTRAN 90 Bindings   Contents


babel-0.8.0
users_guide Last Modified 2003-01-14

http://www.llnl.gov/CASC/components
components@llnl.gov