# Vala Plugins

You MUST have the Vala bindings installed on your system for this to work. They are built by default.

## Example Vala Plugin

Like all plugins in GPlugin, Vala plugins must also implement the `gplugin_query`, `gplugin_load`, and `gplugin_unload` functions.

Due to the way `GPlugin.PluginInfo` info works, you must subclass it and set your values in the new constructor.

The following is a basic Vala plugin.

    		using GPlugin;

    		public class BasicPluginInfo : GPlugin.PluginInfo {
    			public BasicPluginInfo() {
    				string[] authors = {"author1"};

    				Object(
    					id: "gplugin/vala-basic-plugin",
    					abi_version: 0x01020304,
    					name: "basic plugin",
    					authors: authors,
    					category: "test",
    					version: "version",
    					license_id: "license",
    					summary: "summary",
    					website: "website",
    					description: "description"
    				);
    			}
    		}

    		public GPlugin.PluginInfo gplugin_query(out Error error) {
    			error = null;

    			return new BasicPluginInfo();
    		}

    		public bool gplugin_load(GPlugin.Plugin plugin, out Error error) {
    			error = null;

    			return true;
    		}

    		public bool gplugin_unload(GPlugin.Plugin plugin, out Error error) {
    			error = null;

    			return true;
    		}