## Compiled language which can call C

The C++ binding uses this lower layer to define a function called `VImage::`call()`` which can call any libvips operator with a not-varargs set of variable arguments.

A small Python program walks the set of all libvips operators and generates a set of static bindings. For example:

    VImage VImage::invert( VOption *options )
    {
        VImage out;

        call( "invert", (options ? options : VImage::option()) ->
            set( "in", *this ) ->
            set( "out", &out ) );

        return( out );
    }

So from C++ you can call any libvips operator (though without type-safety) with `VImage::`call()``, or use the member functions on `VImage` to get type-safe calls for at least the required operator arguments.

The `VImage` class also adds automatic reference counting, constant expansion, operator overloads, and various other useful features.