### Function

# Vips call_required_optional

#### Declaration [src]

    int
    vips_call_required_optional (
      VipsOperation** operation,
      va_list required,
      va_list optional
    )

#### Description [src]

This is the main entry point for the C and C++ varargs APIs. `operation` is executed, supplying `required` and `optional` arguments.

Beware, this can change `operation` to point at an old, cached one.

This function is not directly available to language bindings.

#### Parameters

`operation`

  Type: `VipsOperation`

  The operation to execute.

  The data is owned by the caller of the function.

`required`

  Type: `va_list`

  `va_list` of required arguments.

`optional`

  Type: `va_list`

  `NULL`-terminated `va_list` of name / value pairs.

#### Return value

Type: `int`

0 on success, -1 on error.