#ifndef _PLUGIN_INTERFACE_CONTAINER_H 
#define _PLUGIN_INTERFACE_CONTAINER_H_ 

#include <glib-object.h>
#include "bmpx/vfs.h"

#define BMP_TYPE_PLUGIN_CONTAINER		    (bmp_plugin_container_iface_get_type ())
#define BMP_PLUGIN_CONTAINER(obj)		    (G_TYPE_CHECK_INSTANCE_CAST ((obj), BMP_TYPE_PLUGIN_CONTAINER, BmpPluginContainerInterface))
#define BMP_IS_PLUGIN_CONTAINER(obj)		    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BMP_TYPE_PLUGIN_CONTAINER))
#define BMP_PLUGIN_CONTAINER_GET_IFACE(inst)	    (G_TYPE_INSTANCE_GET_INTERFACE ((inst), BMP_TYPE_PLUGIN_CONTAINER, BmpPluginContainerInterface))

typedef struct _BmpPluginContainer BmpPluginContainer; 
typedef struct _BmpPluginContainerInterface BmpPluginContainerInterface;

struct _BmpPluginContainerInterface {
        GTypeInterface parent;

	gboolean      (*can_process)     (BmpPluginContainerInterface *self, const gchar *uri);
	gboolean      (*handle_set)      (BmpPluginContainerInterface *self, VFSHandle *handle);
	VFSHandle*    (*handle_get)      (BmpPluginContainerInterface *self);
	gboolean      (*handle_remove)   (BmpPluginContainerInterface *self);
	gboolean      (*handle_read)     (BmpPluginContainerInterface *self);
	gboolean      (*handle_write)    (BmpPluginContainerInterface *self);
	const gchar** (*get_export_data) (BmpPluginContainerInterface *self);
};

GType
bmp_plugin_container_iface_get_type (void);

gboolean
bmp_plugin_container_can_process (BmpPluginContainerInterface *self, const gchar *uri);

gboolean
bmp_plugin_container_handle_set (BmpPluginContainerInterface *self, VFSHandle *_handle);

VFSHandle*
bmp_plugin_container_handle_get (BmpPluginContainerInterface *self);

gboolean
bmp_plugin_container_handle_remove (BmpPluginContainerInterface *self);

gboolean
bmp_plugin_container_handle_read   (BmpPluginContainerInterface *self);

gboolean
bmp_plugin_container_handle_write   (BmpPluginContainerInterface *self);

const gchar**
bmp_plugin_container_get_export_data  (BmpPluginContainerInterface *self);

#endif /* _PLUGIN_INTERFACE_CONTAINER_H_ */











