/* rygel-ruih.h generated by valac 0.46.5, the Vala compiler, do not modify */

#ifndef __SRC_LIBRYGEL_RUIH_RYGEL_RUIH_H__
#define __SRC_LIBRYGEL_RUIH_RYGEL_RUIH_H__

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gee.h>
#include <libxml/tree.h>
#include "rygel-core.h"
#include <gio/gio.h>

G_BEGIN_DECLS

#define TYPE_FILTER_ENTRY (filter_entry_get_type ())
#define FILTER_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FILTER_ENTRY, FilterEntry))
#define FILTER_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FILTER_ENTRY, FilterEntryClass))
#define IS_FILTER_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FILTER_ENTRY))
#define IS_FILTER_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FILTER_ENTRY))
#define FILTER_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FILTER_ENTRY, FilterEntryClass))

typedef struct _FilterEntry FilterEntry;
typedef struct _FilterEntryClass FilterEntryClass;
typedef struct _FilterEntryPrivate FilterEntryPrivate;

#define TYPE_UI_LISTING (ui_listing_get_type ())
#define UI_LISTING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UI_LISTING, UIListing))
#define UI_LISTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UI_LISTING, UIListingClass))
#define IS_UI_LISTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UI_LISTING))
#define IS_UI_LISTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UI_LISTING))
#define UI_LISTING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UI_LISTING, UIListingClass))

typedef struct _UIListing UIListing;
typedef struct _UIListingClass UIListingClass;
typedef struct _UIListingPrivate UIListingPrivate;

#define TYPE_PROTOCOL_ELEM (protocol_elem_get_type ())
#define PROTOCOL_ELEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROTOCOL_ELEM, ProtocolElem))
#define PROTOCOL_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROTOCOL_ELEM, ProtocolElemClass))
#define IS_PROTOCOL_ELEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROTOCOL_ELEM))
#define IS_PROTOCOL_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROTOCOL_ELEM))
#define PROTOCOL_ELEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROTOCOL_ELEM, ProtocolElemClass))

typedef struct _ProtocolElem ProtocolElem;
typedef struct _ProtocolElemClass ProtocolElemClass;

#define TYPE_ICON_ELEM (icon_elem_get_type ())
#define ICON_ELEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ICON_ELEM, IconElem))
#define ICON_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ICON_ELEM, IconElemClass))
#define IS_ICON_ELEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ICON_ELEM))
#define IS_ICON_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ICON_ELEM))
#define ICON_ELEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ICON_ELEM, IconElemClass))

typedef struct _IconElem IconElem;
typedef struct _IconElemClass IconElemClass;
typedef struct _IconElemPrivate IconElemPrivate;
typedef struct _ProtocolElemPrivate ProtocolElemPrivate;

#define RYGEL_TYPE_RUIH_SERVER_PLUGIN (rygel_ruih_server_plugin_get_type ())
#define RYGEL_RUIH_SERVER_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RYGEL_TYPE_RUIH_SERVER_PLUGIN, RygelRuihServerPlugin))
#define RYGEL_RUIH_SERVER_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RYGEL_TYPE_RUIH_SERVER_PLUGIN, RygelRuihServerPluginClass))
#define RYGEL_IS_RUIH_SERVER_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RYGEL_TYPE_RUIH_SERVER_PLUGIN))
#define RYGEL_IS_RUIH_SERVER_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RYGEL_TYPE_RUIH_SERVER_PLUGIN))
#define RYGEL_RUIH_SERVER_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RYGEL_TYPE_RUIH_SERVER_PLUGIN, RygelRuihServerPluginClass))

typedef struct _RygelRuihServerPlugin RygelRuihServerPlugin;
typedef struct _RygelRuihServerPluginClass RygelRuihServerPluginClass;
typedef struct _RygelRuihServerPluginPrivate RygelRuihServerPluginPrivate;

#define RYGEL_TYPE_RUIH_SERVER (rygel_ruih_server_get_type ())
#define RYGEL_RUIH_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RYGEL_TYPE_RUIH_SERVER, RygelRuihServer))
#define RYGEL_RUIH_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RYGEL_TYPE_RUIH_SERVER, RygelRuihServerClass))
#define RYGEL_IS_RUIH_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RYGEL_TYPE_RUIH_SERVER))
#define RYGEL_IS_RUIH_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RYGEL_TYPE_RUIH_SERVER))
#define RYGEL_RUIH_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RYGEL_TYPE_RUIH_SERVER, RygelRuihServerClass))

typedef struct _RygelRuihServer RygelRuihServer;
typedef struct _RygelRuihServerClass RygelRuihServerClass;
typedef struct _RygelRuihServerPrivate RygelRuihServerPrivate;

#define RYGEL_TYPE_RUIH_SERVICE_MANAGER (rygel_ruih_service_manager_get_type ())
#define RYGEL_RUIH_SERVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RYGEL_TYPE_RUIH_SERVICE_MANAGER, RygelRuihServiceManager))
#define RYGEL_RUIH_SERVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RYGEL_TYPE_RUIH_SERVICE_MANAGER, RygelRuihServiceManagerClass))
#define RYGEL_IS_RUIH_SERVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RYGEL_TYPE_RUIH_SERVICE_MANAGER))
#define RYGEL_IS_RUIH_SERVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RYGEL_TYPE_RUIH_SERVICE_MANAGER))
#define RYGEL_RUIH_SERVICE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RYGEL_TYPE_RUIH_SERVICE_MANAGER, RygelRuihServiceManagerClass))

typedef struct _RygelRuihServiceManager RygelRuihServiceManager;
typedef struct _RygelRuihServiceManagerClass RygelRuihServiceManagerClass;
typedef struct _RygelRuihServiceManagerPrivate RygelRuihServiceManagerPrivate;

#define TYPE_UI_ELEM (ui_elem_get_type ())
#define UI_ELEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UI_ELEM, UIElem))
#define UI_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UI_ELEM, UIElemClass))
#define IS_UI_ELEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UI_ELEM))
#define IS_UI_ELEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UI_ELEM))
#define UI_ELEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UI_ELEM, UIElemClass))

typedef struct _UIElem UIElem;
typedef struct _UIElemClass UIElemClass;
typedef struct _UIElemPrivate UIElemPrivate;

#define TYPE_WILD_CARD_FILTER_ENTRY (wild_card_filter_entry_get_type ())
#define WILD_CARD_FILTER_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WILD_CARD_FILTER_ENTRY, WildCardFilterEntry))
#define WILD_CARD_FILTER_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WILD_CARD_FILTER_ENTRY, WildCardFilterEntryClass))
#define IS_WILD_CARD_FILTER_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WILD_CARD_FILTER_ENTRY))
#define IS_WILD_CARD_FILTER_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_WILD_CARD_FILTER_ENTRY))
#define WILD_CARD_FILTER_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_WILD_CARD_FILTER_ENTRY, WildCardFilterEntryClass))

typedef struct _WildCardFilterEntry WildCardFilterEntry;
typedef struct _WildCardFilterEntryClass WildCardFilterEntryClass;
typedef struct _WildCardFilterEntryPrivate WildCardFilterEntryPrivate;

struct _FilterEntry {
	GTypeInstance parent_instance;
	volatile int ref_count;
	FilterEntryPrivate * priv;
};

struct _FilterEntryClass {
	GTypeClass parent_class;
	void (*finalize) (FilterEntry *self);
	gboolean (*matches) (FilterEntry* self, const gchar* name, const gchar* value);
};

struct _UIListing {
	GTypeInstance parent_instance;
	volatile int ref_count;
	UIListingPrivate * priv;
};

struct _UIListingClass {
	GTypeClass parent_class;
	void (*finalize) (UIListing *self);
	gboolean (*match) (UIListing* self, GeeArrayList* protocols, GeeArrayList* filters);
	gchar* (*to_ui_listing) (UIListing* self, GeeArrayList* filters);
};

struct _IconElem {
	UIListing parent_instance;
	IconElemPrivate * priv;
};

struct _IconElemClass {
	UIListingClass parent_class;
};

typedef enum  {
	RYGEL_RUIH_SERVICE_ERROR_OPERATION_REJECTED = 701,
	RYGEL_RUIH_SERVICE_ERROR_INVALID_FILTER = 702
} RygelRuihServiceError;
#define RYGEL_RUIH_SERVICE_ERROR rygel_ruih_service_error_quark ()
struct _ProtocolElem {
	UIListing parent_instance;
	ProtocolElemPrivate * priv;
};

struct _ProtocolElemClass {
	UIListingClass parent_class;
};

struct _RygelRuihServerPlugin {
	RygelPlugin parent_instance;
	RygelRuihServerPluginPrivate * priv;
};

struct _RygelRuihServerPluginClass {
	RygelPluginClass parent_class;
};

struct _RygelRuihServer {
	RygelMediaDevice parent_instance;
	RygelRuihServerPrivate * priv;
};

struct _RygelRuihServerClass {
	RygelMediaDeviceClass parent_class;
};

struct _RygelRuihServiceManager {
	GObject parent_instance;
	RygelRuihServiceManagerPrivate * priv;
	GCancellable* cancellable;
};

struct _RygelRuihServiceManagerClass {
	GObjectClass parent_class;
};

struct _UIElem {
	UIListing parent_instance;
	UIElemPrivate * priv;
};

struct _UIElemClass {
	UIListingClass parent_class;
};

struct _WildCardFilterEntry {
	FilterEntry parent_instance;
	WildCardFilterEntryPrivate * priv;
};

struct _WildCardFilterEntryClass {
	FilterEntryClass parent_class;
};

gpointer filter_entry_ref (gpointer instance);
void filter_entry_unref (gpointer instance);
GParamSpec* param_spec_filter_entry (const gchar* name,
                                     const gchar* nick,
                                     const gchar* blurb,
                                     GType object_type,
                                     GParamFlags flags);
void value_set_filter_entry (GValue* value,
                             gpointer v_object);
void value_take_filter_entry (GValue* value,
                              gpointer v_object);
gpointer value_get_filter_entry (const GValue* value);
GType filter_entry_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilterEntry, filter_entry_unref)
FilterEntry* filter_entry_new (const gchar* name,
                               const gchar* value);
FilterEntry* filter_entry_construct (GType object_type,
                                     const gchar* name,
                                     const gchar* value);
gboolean filter_entry_matches (FilterEntry* self,
                               const gchar* name,
                               const gchar* value);
gpointer ui_listing_ref (gpointer instance);
void ui_listing_unref (gpointer instance);
GParamSpec* param_spec_ui_listing (const gchar* name,
                                   const gchar* nick,
                                   const gchar* blurb,
                                   GType object_type,
                                   GParamFlags flags);
void value_set_ui_listing (GValue* value,
                           gpointer v_object);
void value_take_ui_listing (GValue* value,
                            gpointer v_object);
gpointer value_get_ui_listing (const GValue* value);
GType ui_listing_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UIListing, ui_listing_unref)
GType protocol_elem_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtocolElem, ui_listing_unref)
GType icon_elem_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconElem, ui_listing_unref)
GQuark rygel_ruih_service_error_quark (void);
IconElem* icon_elem_new (xmlNode* node,
                         GError** error);
IconElem* icon_elem_construct (GType object_type,
                               xmlNode* node,
                               GError** error);
ProtocolElem* protocol_elem_new (xmlNode* node,
                                 GError** error);
ProtocolElem* protocol_elem_construct (GType object_type,
                                       xmlNode* node,
                                       GError** error);
gchar* protocol_elem_get_short_name (ProtocolElem* self);
gchar* protocol_elem_get_protocol_info (ProtocolElem* self);
GType rygel_ruih_server_plugin_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RygelRuihServerPlugin, g_object_unref)
RygelRuihServerPlugin* rygel_ruih_server_plugin_new (const gchar* name,
                                                     const gchar* title,
                                                     const gchar* description,
                                                     RygelPluginCapabilities capabilities);
RygelRuihServerPlugin* rygel_ruih_server_plugin_construct (GType object_type,
                                                           const gchar* name,
                                                           const gchar* title,
                                                           const gchar* description,
                                                           RygelPluginCapabilities capabilities);
GType rygel_ruih_server_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RygelRuihServer, g_object_unref)
RygelRuihServer* rygel_ruih_server_new (const gchar* title,
                                        RygelPluginCapabilities capabilities);
RygelRuihServer* rygel_ruih_server_construct (GType object_type,
                                              const gchar* title,
                                              RygelPluginCapabilities capabilities);
GType rygel_ruih_service_manager_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RygelRuihServiceManager, g_object_unref)
#define RYGEL_RUIH_SERVICE_MANAGER_UI_LISTING_FILE_NAME "UIList.xml"
RygelRuihServiceManager* rygel_ruih_service_manager_get_default (void);
gboolean rygel_ruih_service_manager_ui_list_available (RygelRuihServiceManager* self);
void rygel_ruih_service_manager_set_ui_list (RygelRuihServiceManager* self,
                                             const gchar* ui_list_file_path,
                                             GError** error);
gchar* rygel_ruih_service_manager_get_compatible_uis (RygelRuihServiceManager* self,
                                                      const gchar* device_profile,
                                                      const gchar* filter,
                                                      GError** error);
RygelRuihServiceManager* rygel_ruih_service_manager_new (void);
RygelRuihServiceManager* rygel_ruih_service_manager_construct (GType object_type);
GType ui_elem_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UIElem, ui_listing_unref)
UIElem* ui_elem_new (xmlNode* node,
                     GError** error);
UIElem* ui_elem_construct (GType object_type,
                           xmlNode* node,
                           GError** error);
#define UI_LISTING_DESCRIPTION "description"
#define UI_LISTING_FORK "fork"
#define UI_LISTING_ICON "icon"
#define UI_LISTING_ICONLIST "iconList"
#define UI_LISTING_LIFETIME "lifetime"
#define UI_LISTING_NAME "name"
#define UI_LISTING_PROTOCOL "protocol"
#define UI_LISTING_PROTOCOL_INFO "protocolInfo"
#define UI_LISTING_SHORT_NAME "shortName"
#define UI_LISTING_UI "ui"
#define UI_LISTING_URI "uri"
#define UI_LISTING_UIID "uiID"
gboolean ui_listing_match (UIListing* self,
                           GeeArrayList* protocols,
                           GeeArrayList* filters);
gchar* ui_listing_to_ui_listing (UIListing* self,
                                 GeeArrayList* filters);
gchar* ui_listing_to_xml (UIListing* self,
                          GeeHashMap* hash_map);
gboolean ui_listing_filters_match (UIListing* self,
                                   GeeArrayList* filters,
                                   const gchar* name,
                                   const gchar* value);
UIListing* ui_listing_construct (GType object_type);
GType wild_card_filter_entry_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WildCardFilterEntry, filter_entry_unref)
WildCardFilterEntry* wild_card_filter_entry_new (void);
WildCardFilterEntry* wild_card_filter_entry_construct (GType object_type);

G_END_DECLS

#endif
