VTK
Macros
vtkFortran.h File Reference

Go to the source code of this file.

Macros

#define VTK_FORTRAN_NAME(name, NAME)   name##__
 The whole pupose of this header file is to allow us to 'wrap' a c library into Fortran. More...
 
#define VTK_FORTRAN_ARG_STRING(__arg)   const char *__arg##_string, unsigned int __arg##_length
 
#define VTK_FORTRAN_REF_STRING_POINTER(__arg)   __arg##_string
 
#define VTK_FORTRAN_REF_STRING_LENGTH(__arg)   __arg##_length
 
#define VTK_FORTRAN_ARG_INTEGER4(data)   int *data
 
#define VTK_FORTRAN_ARG_REAL4_ARRAY_1D(array)   float *array
 
#define VTK_FORTRAN_ARG_INTEGER8(size)   vtkIdType *size
 
#define VTK_FORTRAN_REF_REAL4_ARRAY_1D(array)   array
 
#define VTK_FORTRAN_ARG_INTEGER8_ARRAY_1D(array)   vtkIdType *array
 
#define VTK_FORTRAN_REF_INTEGER8_ARRAY_1D(array)   array
 
#define VTK_FORTRAN_REF_INTEGER4(data)   *data
 
#define VTK_FORTRAN_REF_INTEGER8(data)   *data
 
#define VTK_FORTRAN_ARG_INTEGER4_ARRAY_1D(array)   int *array
 
#define VTK_FORTRAN_ARG_REAL8(t)   double *t
 
#define VTK_FORTRAN_REF_REAL8(t)   *t
 
#define VTK_FORTRAN_ARG_INT4(n)   int *n
 
#define VTK_FORTRAN_REF_INT4(n)   *n
 

Macro Definition Documentation

#define VTK_FORTRAN_NAME (   name,
  NAME 
)    name##__

The whole pupose of this header file is to allow us to 'wrap' a c library into Fortran.

Here are the basic goals we should reach:

  1. The symbol mangling in fortran is different than is C. For example if you do this fortran: CALL Foo() you either need to define a symbol:
    • void FOO()
    • void foo()
    • void FOO_()
    • void foo_()

Passing array, Fortran start at 1 instead of 0.

  1. Passing STRING array from fortran to C is a bit more tricky.

For more information refer to: [ FORTRAN/C INTEROPERABILITY ] http://www.ibiblio.org/pub/languages/fortran/ch1-11.html

[ Data Type Compatibility ] http://www.ictp.trieste.it/~manuals/programming/sun/fortran/prog_guide/11_cfort.doc.html

Definition at line 43 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_STRING (   __arg)    const char *__arg##_string, unsigned int __arg##_length

Definition at line 46 of file vtkFortran.h.

#define VTK_FORTRAN_REF_STRING_POINTER (   __arg)    __arg##_string

Definition at line 49 of file vtkFortran.h.

#define VTK_FORTRAN_REF_STRING_LENGTH (   __arg)    __arg##_length

Definition at line 52 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_INTEGER4 (   data)    int *data

Definition at line 55 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_REAL4_ARRAY_1D (   array)    float *array

Definition at line 58 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_INTEGER8 (   size)    vtkIdType *size

Definition at line 61 of file vtkFortran.h.

#define VTK_FORTRAN_REF_REAL4_ARRAY_1D (   array)    array

Definition at line 64 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_INTEGER8_ARRAY_1D (   array)    vtkIdType *array

Definition at line 67 of file vtkFortran.h.

#define VTK_FORTRAN_REF_INTEGER8_ARRAY_1D (   array)    array

Definition at line 70 of file vtkFortran.h.

#define VTK_FORTRAN_REF_INTEGER4 (   data)    *data

Definition at line 73 of file vtkFortran.h.

#define VTK_FORTRAN_REF_INTEGER8 (   data)    *data

Definition at line 76 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_INTEGER4_ARRAY_1D (   array)    int *array

Definition at line 79 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_REAL8 (   t)    double *t

Definition at line 82 of file vtkFortran.h.

#define VTK_FORTRAN_REF_REAL8 (   t)    *t

Definition at line 85 of file vtkFortran.h.

#define VTK_FORTRAN_ARG_INT4 (   n)    int *n

Definition at line 88 of file vtkFortran.h.

#define VTK_FORTRAN_REF_INT4 (   n)    *n

Definition at line 91 of file vtkFortran.h.