<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
              "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<chapter id="chapter-embedding">
  <title>Embedding GPlugin</title>

  <simplesect id="intro">
    <para>
      You can embed GPlugin into any language that has GObject-Introspection
      support, but in this example we're going to look at embedding GPlugin
      into a C based project.
    </para>

    <para>
      GPlugin was designed to be simple to implement and use.  Initialization
      and teardown examples can be found below.
    </para>
  </simplesect>

  <simplesect id="initialization">
    <para>
      During the start up of your application you need to add the following
      code:
      <informalexample><programlisting>
      /* Initialize the GPlugin library */
      gplugin_init();

      /* Tell GPlugin to look for plugins in its default paths */
      gplugin_manager_add_default_paths();

      /* Optionally tell GPlugin to look for plugins in application specific
       * paths.  This will add `$PREFIX/lib/application`.
       */
      gplugin_manager_add_app_paths(PREFIX, "application");

      /* Once you're ready to find/load plugins call g_plugin_manager_refresh.
       */
      gplugin_manager_refresh();
      </programlisting></informalexample>
    </para>
  </simplesect>

  <simplesect id="shutdown">
    <para>
      When your application is shutting down you need to uninitialize GPlugin
      by calling
      <informalexample><programlisting>
      gplugin_uninit();
      </programlisting></informalexample>
    </para>
  </simplesect>
</chapter>
