#include <glib-object.h>
#include <dbus/dbus-glib.h>

G_BEGIN_DECLS

/**
 * SwPhotoUploadIface:
 *
 * Dummy typedef representing any implementation of this interface.
 */
typedef struct _SwPhotoUploadIface SwPhotoUploadIface;

/**
 * SwPhotoUploadIfaceClass:
 *
 * The class of SwPhotoUploadIface.
 */
typedef struct _SwPhotoUploadIfaceClass SwPhotoUploadIfaceClass;

GType sw_photo_upload_iface_get_type (void);
#define SW_TYPE_PHOTO_UPLOAD_IFACE \
  (sw_photo_upload_iface_get_type ())
#define SW_PHOTO_UPLOAD_IFACE(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST((obj), SW_TYPE_PHOTO_UPLOAD_IFACE, SwPhotoUploadIface))
#define SW_IS_PHOTO_UPLOAD_IFACE(obj) \
  (G_TYPE_CHECK_INSTANCE_TYPE((obj), SW_TYPE_PHOTO_UPLOAD_IFACE))
#define SW_PHOTO_UPLOAD_IFACE_GET_CLASS(obj) \
  (G_TYPE_INSTANCE_GET_INTERFACE((obj), SW_TYPE_PHOTO_UPLOAD_IFACE, SwPhotoUploadIfaceClass))


typedef void (*sw_photo_upload_iface_upload_photo_impl) (SwPhotoUploadIface *self,
    const gchar *in_local_filename,
    GHashTable *in_fields,
    DBusGMethodInvocation *context);
void sw_photo_upload_iface_implement_upload_photo (SwPhotoUploadIfaceClass *klass, sw_photo_upload_iface_upload_photo_impl impl);
/**
 * sw_photo_upload_iface_return_from_upload_photo:
 * @context: The D-Bus method invocation context
 * @out_opid: gint  (FIXME, generate documentation)
 *
 * Return successfully by calling dbus_g_method_return().
 * This inline function exists only to provide type-safety.
 */
static inline
/* this comment is to stop gtkdoc realising this is static */
void sw_photo_upload_iface_return_from_upload_photo (DBusGMethodInvocation *context,
    gint out_opid);
static inline void
sw_photo_upload_iface_return_from_upload_photo (DBusGMethodInvocation *context,
    gint out_opid)
{
  dbus_g_method_return (context,
      out_opid);
}

void sw_photo_upload_iface_emit_photo_upload_progress (gpointer instance,
    gint arg_opid,
    gint arg_progress,
    const gchar *arg_error_message);


G_END_DECLS
