### Constructor

# Foundry Extension new

#### Declaration [src]

    FoundryExtension*
    foundry_extension_new (
      FoundryContext* context,
      PeasEngine* engine,
      GType interface_type,
      const char* key,
      const char* value
    )

#### Description [src]

Creates a new `FoundryExtension`.

The `FoundryExtension` object can be used to wrap an extension that might need to change at runtime based on various changing parameters. For example, it can watch the loading and unloading of plugins and reload the `FoundryExtension:extension` property.

Additionally, it can match a specific plugin based on the `value` provided.

#### Parameters

`context`

  Type: `FoundryContext`

  An `FoundryContext` or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`engine`

  Type: `PeasEngine`

  A `PeasEngine` or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`interface_type`

  Type: `GType`

  The `GType` of the interface to be implemented.

`key`

  Type: `const char*`

  The key for matching extensions from plugin info external data.

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

`value`

  Type: `const char*`

  The value to use when matching keys.

  The argument can be `NULL`.
  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

#### Return value

Type: `FoundryExtension`

A newly created `FoundryExtension`.

The caller of the function takes ownership of the data, and is responsible for freeing it.