grim/purple-objects-docbook

added a separate page for hashes and removed them from the ciphers hierarchy
<?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="plugins">
<title>Plugins</title>
<para>
Plugins won't change too much when it comes to plugin developers, but
theres a bit that will change in the backend to make better use of the
type system.
</para>
<para>
The obvious changes in <xref linkend="plugin-hierarchy"/> is that
PurplePlugin is now an abstract class and there is a new
PurpleNativePlugin class. These changes have been made to avoid having
to shoehorn the Perl, TCL, and Mono plugins into the C centric
PurplePlugin that we currently have. The PurplePluginLoader's will do
the actual work of translating between the purple C/GObject API and the
language to which the loader is implementing.
</para>
<figure id="plugin-hierarchy">
<title>Plugin Object Hierarchy</title>
<graphic fileref="graphs/plugins.png"/>
</figure>
<para>
Theres a noticable size difference in the PurplePlugin shown in
<xref linkend="plugin-class"/>. All of the meta information has been
moved to the new boxed type PurplePluginInfo. The versioning info has
been moved to be loader dependent as well. PurplePluginType is thrown
out since we can the use of interfaces for PurpleProtocolPlugin,
PurplePluginLoader, and so on, are all interfaces and can be checked
by the usual GObject methods.
</para>
<figure id="plugin-class">
<title>Plugin Class</title>
<graphic fileref="graphs/plugin.png"/>
</figure>
<figure id="plugin-info">
<title>Plugin Info Struct</title>
<graphic fileref="graphs/plugin-info.png"/>
</figure>
<figure id="plugin-state">
<title>Plugin State Enum</title>
<graphic fileref="graphs/plugin-state.png"/>
</figure>
</chapter>