/* metadata.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __SRC_METADATA_METADATA_H__
#define __SRC_METADATA_METADATA_H__

#include <glib-object.h>
#include <gio/gio.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define TYPE_MEDIA_METADATA (media_metadata_get_type ())
#define MEDIA_METADATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_METADATA, MediaMetadata))
#define MEDIA_METADATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_METADATA, MediaMetadataClass))
#define IS_MEDIA_METADATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_METADATA))
#define IS_MEDIA_METADATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_METADATA))
#define MEDIA_METADATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_METADATA, MediaMetadataClass))

typedef struct _MediaMetadata MediaMetadata;
typedef struct _MediaMetadataClass MediaMetadataClass;
typedef struct _MediaMetadataPrivate MediaMetadataPrivate;

#define TYPE_METADATA_DATE_TIME (metadata_date_time_get_type ())
#define METADATA_DATE_TIME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_METADATA_DATE_TIME, MetadataDateTime))
#define METADATA_DATE_TIME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_METADATA_DATE_TIME, MetadataDateTimeClass))
#define IS_METADATA_DATE_TIME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_METADATA_DATE_TIME))
#define IS_METADATA_DATE_TIME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_METADATA_DATE_TIME))
#define METADATA_DATE_TIME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_METADATA_DATE_TIME, MetadataDateTimeClass))

typedef struct _MetadataDateTime MetadataDateTime;
typedef struct _MetadataDateTimeClass MetadataDateTimeClass;

#define TYPE_METADATA_DATE_TIME_ERROR (metadata_date_time_error_get_type ())
typedef struct _MetadataDateTimePrivate MetadataDateTimePrivate;

#define TYPE_METADATA_RATIONAL (metadata_rational_get_type ())
typedef struct _MetadataRational MetadataRational;

struct _MediaMetadata {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MediaMetadataPrivate * priv;
};

struct _MediaMetadataClass {
	GTypeClass parent_class;
	void (*finalize) (MediaMetadata *self);
	void (*read_from_file) (MediaMetadata* self, GFile* file, GError** error);
	MetadataDateTime* (*get_creation_date_time) (MediaMetadata* self);
	gchar* (*get_title) (MediaMetadata* self);
	gchar* (*get_comment) (MediaMetadata* self);
};

typedef enum  {
	METADATA_DATE_TIME_ERROR_INVALID_FORMAT,
	METADATA_DATE_TIME_ERROR_UNSUPPORTED_FORMAT
} MetadataDateTimeError;
#define METADATA_DATE_TIME_ERROR metadata_date_time_error_quark ()

struct _MetadataDateTime {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MetadataDateTimePrivate * priv;
};

struct _MetadataDateTimeClass {
	GTypeClass parent_class;
	void (*finalize) (MetadataDateTime *self);
};

struct _MetadataRational {
	gint numerator;
	gint denominator;
};

VALA_EXTERN gpointer media_metadata_ref (gpointer instance);
VALA_EXTERN void media_metadata_unref (gpointer instance);
VALA_EXTERN GParamSpec* param_spec_media_metadata (const gchar* name,
                                       const gchar* nick,
                                       const gchar* blurb,
                                       GType object_type,
                                       GParamFlags flags);
VALA_EXTERN void value_set_media_metadata (GValue* value,
                               gpointer v_object);
VALA_EXTERN void value_take_media_metadata (GValue* value,
                                gpointer v_object);
VALA_EXTERN gpointer value_get_media_metadata (const GValue* value);
VALA_EXTERN GType media_metadata_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MediaMetadata, media_metadata_unref)
VALA_EXTERN gpointer metadata_date_time_ref (gpointer instance);
VALA_EXTERN void metadata_date_time_unref (gpointer instance);
VALA_EXTERN GParamSpec* param_spec_metadata_date_time (const gchar* name,
                                           const gchar* nick,
                                           const gchar* blurb,
                                           GType object_type,
                                           GParamFlags flags);
VALA_EXTERN void value_set_metadata_date_time (GValue* value,
                                   gpointer v_object);
VALA_EXTERN void value_take_metadata_date_time (GValue* value,
                                    gpointer v_object);
VALA_EXTERN gpointer value_get_metadata_date_time (const GValue* value);
VALA_EXTERN GType metadata_date_time_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetadataDateTime, metadata_date_time_unref)
VALA_EXTERN void media_metadata_read_from_file (MediaMetadata* self,
                                    GFile* file,
                                    GError** error);
VALA_EXTERN MetadataDateTime* media_metadata_get_creation_date_time (MediaMetadata* self);
VALA_EXTERN gchar* media_metadata_get_title (MediaMetadata* self);
VALA_EXTERN gchar* media_metadata_get_comment (MediaMetadata* self);
VALA_EXTERN MediaMetadata* media_metadata_construct (GType object_type);
VALA_EXTERN GQuark metadata_date_time_error_quark (void);
VALA_EXTERN GType metadata_date_time_error_get_type (void) G_GNUC_CONST ;
VALA_EXTERN MetadataDateTime* metadata_date_time_new (GDateTime* timestamp);
VALA_EXTERN MetadataDateTime* metadata_date_time_construct (GType object_type,
                                                GDateTime* timestamp);
VALA_EXTERN MetadataDateTime* metadata_date_time_new_from_exif (const gchar* label,
                                                    GError** error);
VALA_EXTERN MetadataDateTime* metadata_date_time_construct_from_exif (GType object_type,
                                                          const gchar* label,
                                                          GError** error);
VALA_EXTERN MetadataDateTime* metadata_date_time_new_from_iptc (const gchar* date,
                                                    const gchar* time,
                                                    GError** error);
VALA_EXTERN MetadataDateTime* metadata_date_time_construct_from_iptc (GType object_type,
                                                          const gchar* date,
                                                          const gchar* time,
                                                          GError** error);
VALA_EXTERN MetadataDateTime* metadata_date_time_new_from_xmp (const gchar* label,
                                                   GError** error);
VALA_EXTERN MetadataDateTime* metadata_date_time_construct_from_xmp (GType object_type,
                                                         const gchar* label,
                                                         GError** error);
VALA_EXTERN GDateTime* metadata_date_time_get_timestamp (MetadataDateTime* self);
VALA_EXTERN gchar* metadata_date_time_get_exif_label (MetadataDateTime* self);
VALA_EXTERN gchar* metadata_date_time_get_xmp_label (MetadataDateTime* self);
VALA_EXTERN gboolean metadata_date_time_from_exif_date_time (const gchar* date_time,
                                                 GDateTime** timestamp);
VALA_EXTERN gchar* metadata_date_time_to_exif_date_time (GDateTime* timestamp);
VALA_EXTERN gchar* metadata_date_time_to_string (MetadataDateTime* self);
VALA_EXTERN GType metadata_rational_get_type (void) G_GNUC_CONST ;
VALA_EXTERN MetadataRational* metadata_rational_dup (const MetadataRational* self);
VALA_EXTERN void metadata_rational_free (MetadataRational* self);
VALA_EXTERN void metadata_rational_init_invalid (MetadataRational *self);
VALA_EXTERN void metadata_rational_init (MetadataRational *self,
                             gint numerator,
                             gint denominator);
VALA_EXTERN gboolean metadata_rational_is_valid (MetadataRational *self);
VALA_EXTERN gchar* metadata_rational_to_string (MetadataRational *self);

G_END_DECLS

#endif
