#ifndef _PLUGIN_INTERFACE_FLOW_H 
#define _PLUGIN_INTERFACE_FLOW_H_ 

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

#define BMP_TYPE_PLUGIN_FLOW		       (bmp_plugin_flow_iface_get_type ())
#define BMP_PLUGIN_FLOW(obj)		       (G_TYPE_CHECK_INSTANCE_CAST ((obj), BMP_TYPE_PLUGIN_FLOW, BmpPluginFlowInterface))
#define BMP_IS_PLUGIN_FLOW(obj)		       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BMP_TYPE_PLUGIN_FLOW))
#define BMP_PLUGIN_FLOW_GET_IFACE(inst)	       (G_TYPE_INSTANCE_GET_INTERFACE ((inst), BMP_TYPE_PLUGIN_FLOW, BmpPluginFlowInterface))


typedef struct _BmpPluginFlow BmpPluginFlow; 
typedef struct _BmpPluginFlowInterface BmpPluginFlowInterface;

struct _BmpPluginFlowInterface {
        GTypeInterface parent;

	BmpPlaybackHistoryItem* (*item_next)   (BmpPluginFlowInterface *self, const BmpListType *list, gint _idx);
	BmpPlaybackHistoryItem* (*item_prev)   (BmpPluginFlowInterface *self, const BmpListType *list, gint _idx);
	void			(*reset_state) (BmpPluginFlowInterface *self);
};

GType
bmp_plugin_flow_iface_get_type (void);

BmpPlaybackHistoryItem*
bmp_plugin_flow_item_prev (BmpPluginFlowInterface *self, const BmpListType *list, gint _idx);

BmpPlaybackHistoryItem*
bmp_plugin_flow_item_next (BmpPluginFlowInterface *self, const BmpListType *list, gint _idx);

void
bmp_plugin_flow_reset_state (BmpPluginFlowInterface *self);

#endif /* _PLUGIN_INTERFACE_FLOW_H_ */
