---
name: "gen-ctl-io"
section: "1"
platform: "linux"
package: "libctl-dev"
version: "4.5.1-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gen-ctl-io"
---

# gen-ctl-io(1)

generate C interface code for libctl control files

## NAME

gen-ctl-io - generate C interface code for libctl control files

## SYNOPSIS

**gen-ctl-io** \[OPTION\]... \[*spec-file*\]

## DESCRIPTION

**gen-ctl-io** generates C code to import/export the input/output variables used in a libctl control file. **gen-ctl-io** generates files like *ctl-io.h* and *ctl-io.c*.  These files define global variables, data structures, and functions for the input/output variables, classes, and function interfaces defined in the *spec-file* argument, automating the interaction between C and Guile.

The arguments such as **--code** and  **--header** are used to control whether *ctl-io.c* or *ctl-io.h*, etcetera, are generated.  If no argument is specified then both of these files are generated by default, for backwards compatibility.

libctl is a free library to aid in interfacing scientific software with the GNU Guile scripting and extension language.  Documentation for it may be found online at the libctl home page: *http://ab-initio.mit.edu/libctl*

## OPTIONS

- **--code**

  Generate C (or C++) source code to implement the Guile interface functions.  The default output file name is ctl-io.c (in C) or ctl-io.cpp (in C++).

- **--header**

  Generate the header file declaring the interface data types and functions. The default output file name is ctl-io.h (in C) or ctl-io.hpp (in C++).

- **--swig**

  Generate a SWIG interface definition file declaring automatic conversions for the various libctl data types.  The default output file name is ctl-io.i.

- **--cxx**

  Generate C++ code instead of C code.

- **-o** *file*

  Use  *file* as the output file name instead of the defaults (above).

## BUGS

Send bug reports to S. G. Johnson, stevenj@alum.mit.edu.

## AUTHORS

Written by Steven G. Johnson.
