## C to Fortran wrapper

The C to Fortran wrapper is implemented in Tcl, so you need an installation of this dynamic language or a run-time shell (see below) to use it.

### Instructions for use

The wrapper can be run as follows:

        tclsh cwrap.tcl header.h header2.h ...

Or, if you use the tclkit run-time shell:

        tclkit cwrap.tcl header.h header2.h ...

(and type "exit" to stop the program)

It will produce the following Fortran and C files:

- header_wrap.c: The C wrapper functions that transform the Fortran call into a proper C call
- header_mod.f90: A Fortran module (called "header") that contains the interfaces for the wrapper functions
- header_iso.f90: A Fortran 2003 module containing interfaces to the C functions using the standard ISO C binding module.

## Limitations

This is a first version of the wrapper, it is not able to do very much. In particular:

- No conversion yet of Fortran strings to C strings
- Only one calling convention for passing the length of strings
- No customisation for user-defined types
- No support for functions that return pointers
- No support for structs or complicated typedefs
- No support for function arguments

Something that would be nice to have is a way of dealing with NULLs in Fortran, as NULLs are frequently used in C as defaults or missing arguments.

It is very probable that the wrapper breaks if the C header has a somewhat unusual layout.

## Getting a Tcl run-time shell

To use this wrapper you need to know nothing of Tcl, but you do need the Tcl shell or the Tclkit shell.

If you work on a Linux or UNIX system or on MacOS, chances are that you already have the Tcl shell, tclsh.

If you are on Windows, you may either want to install Tcl (for instance: from http://www.activestate.com) or, alternatively, get the Tclkit shell. This is a single-file run-time environment for Tcl and its graphical user-interface component Tk. You can get it from: http://www.equi4.com

More information on Tcl and Tk:
http://www.tcl.tk
http://wiki.tcl.tk

There is an abundance of online tutorials on Tcl/Tk.