The process of creating a buffer. The C wrapper may create an additional function for each wrapped function. This function has additional arguments needed for the Fortran interface to pass the metadata of the argument such as the size.

C wrapper

The wrapper with a C API. When wrapping C++, the C wrapper will be C++ code but functions will use extern "C" block to allow them to be called from C and Fortran using the bind(C) keyword.


Holds a pointer to a C++ class instance and some memory management flags. The name was inspired by the Python PyCapsule type.

Fortran wrapper

Fortran functions which call the C wrapper functions.


A collection of C++ declarations wrapped at the same time. This creates a Fortran or Python module.

native type

Integer or real of any size.

shadow class

A Fortran derived type which contains a capsule and type-bound functions to provide a Fortran object-oriented interface similar to a C++ class. Similar to a PyObject struct in Python.


A block of code which implements the wrapper. It is generated by Shroud but can be replaced with a user provided implementation. A splicer also provides a place to insert code into a generated file a well defined places. This allows user provided code to be preserved when regenerating wrappers.