### Function

# Vips call

#### Declaration [src]

    int
    vips_call (
      const char* operation_name,
      ...
    )

#### Description [src]

`vips_call()` calls the named operation, passing in required arguments and then setting any optional ones from the remainder of the arguments as a set of name/value pairs.

For example, `vips_embed()` takes six required arguments, `in`, `out`, `x`, `y`, `width`, `height`, and has two optional arguments, `extend` and `background`. You can run it with `vips_call()` like this:

    VipsImage *in = ...
    VipsImage *out;

    if (vips_call("embed", in, &out, 10, 10, 100, 100,
            "extend", VIPS_EXTEND_COPY,
            NULL))
        ... error

Normally of course you’d just use the `vips_embed()` wrapper function and get type-safety for the required arguments.

See also

`vips_call_split()`, `vips_call_options()`.

This function is not directly available to language bindings.

#### Parameters

`operation_name`

  Type: `const char*`

  Name of operation to call.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`...`

  Type: ``

  Required args, then a `NULL`-terminated list of argument/value pairs.

#### Return value

Type: `int`

0 on success, -1 on error.