/* PhotoMetadata.c generated by valac 0.34.7, the Vala compiler
 * generated from PhotoMetadata.vala, do not modify */

/* Copyright 2016 Software Freedom Conservancy Inc.
 *
 * This software is licensed under the GNU Lesser General Public License
 * (version 2.1 or later).  See the COPYING file in this distribution.
 */
/**/
/* PhotoMetadata*/
/**/
/* PhotoMetadata is a wrapper class around gexiv2.  The reasoning for this is (a) to facilitate*/
/* interface changes to meet Shotwell's requirements without needing modifications of the library*/
/* itself, and (b) some requirements for this class (i.e. obtaining raw metadata) is not available*/
/* in gexiv2, and so must be done by hand.*/
/**/
/* Although it's perceived that Exiv2 will remain Shotwell's metadata library of choice, this*/
/* may change in the future, and so this wrapper helps with that as well.*/
/**/
/* There is no expectation of thread-safety in this class (yet).*/
/**/
/* Tags come from Exiv2's naming scheme:*/
/* http://www.exiv2.org/metadata.html*/
/**/

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gio/gio.h>
#include <gexiv2/gexiv2.h>
#include <libexif/exif-data.h>
#include <libexif/exif-mem.h>
#include <float.h>
#include <math.h>
#include <gobject/gvaluecollector.h>


#define TYPE_METADATA_DOMAIN (metadata_domain_get_type ())

#define TYPE_KEYWORD_TRANSFORMER (keyword_transformer_get_type ())
#define KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_KEYWORD_TRANSFORMER, KeywordTransformer))
#define KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_KEYWORD_TRANSFORMER, KeywordTransformerClass))
#define IS_KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_KEYWORD_TRANSFORMER))
#define IS_KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_KEYWORD_TRANSFORMER))
#define KEYWORD_TRANSFORMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_KEYWORD_TRANSFORMER, KeywordTransformerClass))

typedef struct _KeywordTransformer KeywordTransformer;
typedef struct _KeywordTransformerClass KeywordTransformerClass;
typedef struct _KeywordTransformerPrivate KeywordTransformerPrivate;
typedef struct _ParamSpecKeywordTransformer ParamSpecKeywordTransformer;

#define TYPE_NULL_KEYWORD_TRANSFORMER (null_keyword_transformer_get_type ())
#define NULL_KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NULL_KEYWORD_TRANSFORMER, NullKeywordTransformer))
#define NULL_KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NULL_KEYWORD_TRANSFORMER, NullKeywordTransformerClass))
#define IS_NULL_KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NULL_KEYWORD_TRANSFORMER))
#define IS_NULL_KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NULL_KEYWORD_TRANSFORMER))
#define NULL_KEYWORD_TRANSFORMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NULL_KEYWORD_TRANSFORMER, NullKeywordTransformerClass))

typedef struct _NullKeywordTransformer NullKeywordTransformer;
typedef struct _NullKeywordTransformerClass NullKeywordTransformerClass;
typedef struct _NullKeywordTransformerPrivate NullKeywordTransformerPrivate;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_ACD_SEE_KEYWORD_TRANSFORMER (acd_see_keyword_transformer_get_type ())
#define ACD_SEE_KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformer))
#define ACD_SEE_KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformerClass))
#define IS_ACD_SEE_KEYWORD_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ACD_SEE_KEYWORD_TRANSFORMER))
#define IS_ACD_SEE_KEYWORD_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ACD_SEE_KEYWORD_TRANSFORMER))
#define ACD_SEE_KEYWORD_TRANSFORMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformerClass))

typedef struct _ACDSeeKeywordTransformer ACDSeeKeywordTransformer;
typedef struct _ACDSeeKeywordTransformerClass ACDSeeKeywordTransformerClass;
typedef struct _ACDSeeKeywordTransformerPrivate ACDSeeKeywordTransformerPrivate;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _g_markup_parse_context_unref0(var) ((var == NULL) ? NULL : (var = (g_markup_parse_context_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))

#define TYPE_HIERARCHICAL_KEYWORD_FIELD (hierarchical_keyword_field_get_type ())
#define HIERARCHICAL_KEYWORD_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HIERARCHICAL_KEYWORD_FIELD, HierarchicalKeywordField))
#define HIERARCHICAL_KEYWORD_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HIERARCHICAL_KEYWORD_FIELD, HierarchicalKeywordFieldClass))
#define IS_HIERARCHICAL_KEYWORD_FIELD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HIERARCHICAL_KEYWORD_FIELD))
#define IS_HIERARCHICAL_KEYWORD_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HIERARCHICAL_KEYWORD_FIELD))
#define HIERARCHICAL_KEYWORD_FIELD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HIERARCHICAL_KEYWORD_FIELD, HierarchicalKeywordFieldClass))

typedef struct _HierarchicalKeywordField HierarchicalKeywordField;
typedef struct _HierarchicalKeywordFieldClass HierarchicalKeywordFieldClass;
typedef struct _HierarchicalKeywordFieldPrivate HierarchicalKeywordFieldPrivate;
#define _keyword_transformer_unref0(var) ((var == NULL) ? NULL : (var = (keyword_transformer_unref (var), NULL)))
typedef struct _ParamSpecHierarchicalKeywordField ParamSpecHierarchicalKeywordField;

#define TYPE_PHOTO_PREVIEW (photo_preview_get_type ())
#define PHOTO_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_PREVIEW, PhotoPreview))
#define PHOTO_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_PREVIEW, PhotoPreviewClass))
#define IS_PHOTO_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_PREVIEW))
#define IS_PHOTO_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_PREVIEW))
#define PHOTO_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_PREVIEW, PhotoPreviewClass))

typedef struct _PhotoPreview PhotoPreview;
typedef struct _PhotoPreviewClass PhotoPreviewClass;
typedef struct _PhotoPreviewPrivate PhotoPreviewPrivate;

#define TYPE_DIMENSIONS (dimensions_get_type ())
typedef struct _Dimensions Dimensions;
#define _g_bytes_unref0(var) ((var == NULL) ? NULL : (var = (g_bytes_unref (var), NULL)))
typedef struct _ParamSpecPhotoPreview ParamSpecPhotoPreview;

#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_PHOTO_METADATA (photo_metadata_get_type ())
#define PHOTO_METADATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_METADATA, PhotoMetadata))
#define PHOTO_METADATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_METADATA, PhotoMetadataClass))
#define IS_PHOTO_METADATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_METADATA))
#define IS_PHOTO_METADATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_METADATA))
#define PHOTO_METADATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_METADATA, PhotoMetadataClass))

typedef struct _PhotoMetadata PhotoMetadata;
typedef struct _PhotoMetadataClass PhotoMetadataClass;
typedef struct _PhotoMetadataPrivate PhotoMetadataPrivate;

#define PHOTO_METADATA_TYPE_SET_OPTION (photo_metadata_set_option_get_type ())
#define _exif_data_unref0(var) ((var == NULL) ? NULL : (var = (exif_data_unref (var), NULL)))

#define TYPE_PREPARE_INPUT_TEXT_OPTIONS (prepare_input_text_options_get_type ())
typedef struct _Block1Data Block1Data;
#define _media_metadata_unref0(var) ((var == NULL) ? NULL : (var = (media_metadata_unref (var), NULL)))
typedef struct _Block2Data Block2Data;
typedef struct _Block3Data Block3Data;

#define TYPE_METADATA_RATIONAL (metadata_rational_get_type ())
typedef struct _MetadataRational MetadataRational;
typedef struct _Block4Data Block4Data;
#define _metadata_date_time_unref0(var) ((var == NULL) ? NULL : (var = (metadata_date_time_unref (var), NULL)))
typedef struct _Block5Data Block5Data;
#define _exif_mem_unref0(var) ((var == NULL) ? NULL : (var = (exif_mem_unref (var), NULL)))
#define _g_checksum_free0(var) ((var == NULL) ? NULL : (var = (g_checksum_free (var), NULL)))

#define PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW (photo_metadata_internal_photo_preview_get_type ())
#define PHOTO_METADATA_INTERNAL_PHOTO_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, PhotoMetadataInternalPhotoPreview))
#define PHOTO_METADATA_INTERNAL_PHOTO_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, PhotoMetadataInternalPhotoPreviewClass))
#define PHOTO_METADATA_IS_INTERNAL_PHOTO_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW))
#define PHOTO_METADATA_IS_INTERNAL_PHOTO_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW))
#define PHOTO_METADATA_INTERNAL_PHOTO_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, PhotoMetadataInternalPhotoPreviewClass))

typedef struct _PhotoMetadataInternalPhotoPreview PhotoMetadataInternalPhotoPreview;
typedef struct _PhotoMetadataInternalPhotoPreviewClass PhotoMetadataInternalPhotoPreviewClass;
typedef struct _Block6Data Block6Data;

#define TYPE_HIERARCHICAL_TAG_INDEX (hierarchical_tag_index_get_type ())
#define HIERARCHICAL_TAG_INDEX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HIERARCHICAL_TAG_INDEX, HierarchicalTagIndex))
#define HIERARCHICAL_TAG_INDEX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HIERARCHICAL_TAG_INDEX, HierarchicalTagIndexClass))
#define IS_HIERARCHICAL_TAG_INDEX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HIERARCHICAL_TAG_INDEX))
#define IS_HIERARCHICAL_TAG_INDEX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HIERARCHICAL_TAG_INDEX))
#define HIERARCHICAL_TAG_INDEX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HIERARCHICAL_TAG_INDEX, HierarchicalTagIndexClass))

typedef struct _HierarchicalTagIndex HierarchicalTagIndex;
typedef struct _HierarchicalTagIndexClass HierarchicalTagIndexClass;
#define _hierarchical_keyword_field_unref0(var) ((var == NULL) ? NULL : (var = (hierarchical_keyword_field_unref (var), NULL)))
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
#define _hierarchical_tag_index_unref0(var) ((var == NULL) ? NULL : (var = (hierarchical_tag_index_unref (var), NULL)))

#define TYPE_ORIENTATION (orientation_get_type ())

#define TYPE_RATING (rating_get_type ())
typedef struct _PhotoMetadataInternalPhotoPreviewPrivate PhotoMetadataInternalPhotoPreviewPrivate;
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

typedef enum  {
	METADATA_DOMAIN_UNKNOWN,
	METADATA_DOMAIN_EXIF,
	METADATA_DOMAIN_XMP,
	METADATA_DOMAIN_IPTC
} MetadataDomain;

struct _KeywordTransformer {
	GTypeInstance parent_instance;
	volatile int ref_count;
	KeywordTransformerPrivate * priv;
};

struct _KeywordTransformerClass {
	GTypeClass parent_class;
	void (*finalize) (KeywordTransformer *self);
	GeeList* (*transform) (KeywordTransformer* self, const gchar* input, GError** error);
};

struct _ParamSpecKeywordTransformer {
	GParamSpec parent_instance;
};

struct _NullKeywordTransformer {
	KeywordTransformer parent_instance;
	NullKeywordTransformerPrivate * priv;
};

struct _NullKeywordTransformerClass {
	KeywordTransformerClass parent_class;
};

struct _ACDSeeKeywordTransformer {
	KeywordTransformer parent_instance;
	ACDSeeKeywordTransformerPrivate * priv;
};

struct _ACDSeeKeywordTransformerClass {
	KeywordTransformerClass parent_class;
};

struct _ACDSeeKeywordTransformerPrivate {
	GMarkupParser parser;
	GError* error;
	GeeArrayQueue* stack;
	GeeArrayList* result;
	gboolean assigned;
};

struct _HierarchicalKeywordField {
	GTypeInstance parent_instance;
	volatile int ref_count;
	HierarchicalKeywordFieldPrivate * priv;
	gchar* field_name;
	gchar* path_separator;
	gboolean wants_leading_separator;
	gboolean is_writeable;
	KeywordTransformer* transformer;
};

struct _HierarchicalKeywordFieldClass {
	GTypeClass parent_class;
	void (*finalize) (HierarchicalKeywordField *self);
};

struct _ParamSpecHierarchicalKeywordField {
	GParamSpec parent_instance;
};

struct _PhotoPreview {
	GTypeInstance parent_instance;
	volatile int ref_count;
	PhotoPreviewPrivate * priv;
};

struct _PhotoPreviewClass {
	GTypeClass parent_class;
	void (*finalize) (PhotoPreview *self);
	GBytes* (*flatten) (PhotoPreview* self, GError** error);
	GdkPixbuf* (*get_pixbuf) (PhotoPreview* self, GError** error);
};

struct _Dimensions {
	gint width;
	gint height;
};

struct _PhotoPreviewPrivate {
	gchar* name;
	Dimensions dimensions;
	guint32 size;
	gchar* mime_type;
	gchar* extension;
};

struct _ParamSpecPhotoPreview {
	GParamSpec parent_instance;
};

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);
};

struct _PhotoMetadata {
	MediaMetadata parent_instance;
	PhotoMetadataPrivate * priv;
};

struct _PhotoMetadataClass {
	MediaMetadataClass parent_class;
};

struct _PhotoMetadataPrivate {
	GExiv2Metadata* exiv2;
	ExifData* exif;
	gchar* source_name;
	gchar* metadata_hash;
	gchar* thumbnail_md5;
};

typedef enum  {
	PHOTO_METADATA_SET_OPTION_ALL_DOMAINS,
	PHOTO_METADATA_SET_OPTION_ONLY_IF_DOMAIN_PRESENT,
	PHOTO_METADATA_SET_OPTION_AT_LEAST_DEFAULT_DOMAIN
} PhotoMetadataSetOption;

typedef enum  {
	PREPARE_INPUT_TEXT_OPTIONS_EMPTY_IS_NULL = 1 << 0,
	PREPARE_INPUT_TEXT_OPTIONS_VALIDATE = 1 << 1,
	PREPARE_INPUT_TEXT_OPTIONS_INVALID_IS_NULL = 1 << 2,
	PREPARE_INPUT_TEXT_OPTIONS_STRIP = 1 << 3,
	PREPARE_INPUT_TEXT_OPTIONS_STRIP_CRLF = 1 << 4,
	PREPARE_INPUT_TEXT_OPTIONS_NORMALIZE = 1 << 5,
	PREPARE_INPUT_TEXT_OPTIONS_DEFAULT = ((((PREPARE_INPUT_TEXT_OPTIONS_EMPTY_IS_NULL | PREPARE_INPUT_TEXT_OPTIONS_VALIDATE) | PREPARE_INPUT_TEXT_OPTIONS_INVALID_IS_NULL) | PREPARE_INPUT_TEXT_OPTIONS_STRIP_CRLF) | PREPARE_INPUT_TEXT_OPTIONS_STRIP) | PREPARE_INPUT_TEXT_OPTIONS_NORMALIZE
} PrepareInputTextOptions;

typedef void (*PhotoMetadataSetGenericValue) (const gchar* tag, void* user_data);
struct _Block1Data {
	int _ref_count_;
	PhotoMetadata* self;
	gchar* value;
};

struct _Block2Data {
	int _ref_count_;
	PhotoMetadata* self;
	GeeCollection* values;
};

struct _Block3Data {
	int _ref_count_;
	PhotoMetadata* self;
	glong value;
};

struct _MetadataRational {
	gint numerator;
	gint denominator;
};

struct _Block4Data {
	int _ref_count_;
	PhotoMetadata* self;
	MetadataRational rational;
};

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 _Block5Data {
	int _ref_count_;
	PhotoMetadata* self;
	MetadataDateTime* date_time;
};

struct _Block6Data {
	int _ref_count_;
	PhotoMetadata* self;
	gchar* comment;
};

typedef enum  {
	ORIENTATION_MIN = 1,
	ORIENTATION_TOP_LEFT = 1,
	ORIENTATION_TOP_RIGHT = 2,
	ORIENTATION_BOTTOM_RIGHT = 3,
	ORIENTATION_BOTTOM_LEFT = 4,
	ORIENTATION_LEFT_TOP = 5,
	ORIENTATION_RIGHT_TOP = 6,
	ORIENTATION_RIGHT_BOTTOM = 7,
	ORIENTATION_LEFT_BOTTOM = 8,
	ORIENTATION_MAX = 8
} Orientation;

typedef enum  {
	RATING_REJECTED = -1,
	RATING_UNRATED = 0,
	RATING_ONE = 1,
	RATING_TWO = 2,
	RATING_THREE = 3,
	RATING_FOUR = 4,
	RATING_FIVE = 5
} Rating;

struct _PhotoMetadataInternalPhotoPreview {
	PhotoPreview parent_instance;
	PhotoMetadataInternalPhotoPreviewPrivate * priv;
	PhotoMetadata* owner;
	guint number;
};

struct _PhotoMetadataInternalPhotoPreviewClass {
	PhotoPreviewClass parent_class;
};


static gpointer keyword_transformer_parent_class = NULL;
static gpointer null_keyword_transformer_parent_class = NULL;
static gpointer acd_see_keyword_transformer_parent_class = NULL;
static gpointer hierarchical_keyword_field_parent_class = NULL;
static gpointer photo_preview_parent_class = NULL;
static gpointer photo_metadata_parent_class = NULL;
static gchar** photo_metadata_DATE_TIME_TAGS;
static gint photo_metadata_DATE_TIME_TAGS_length1;
static gchar** photo_metadata_DATE_TIME_TAGS = NULL;
static gint photo_metadata_DATE_TIME_TAGS_length1 = 0;
static gint _photo_metadata_DATE_TIME_TAGS_size_ = 0;
static gchar** photo_metadata_EXPOSURE_DATE_TIME_TAGS;
static gint photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1;
static gchar** photo_metadata_EXPOSURE_DATE_TIME_TAGS = NULL;
static gint photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1 = 0;
static gint _photo_metadata_EXPOSURE_DATE_TIME_TAGS_size_ = 0;
static gchar** photo_metadata_DIGITIZED_DATE_TIME_TAGS;
static gint photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1;
static gchar** photo_metadata_DIGITIZED_DATE_TIME_TAGS = NULL;
static gint photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1 = 0;
static gint _photo_metadata_DIGITIZED_DATE_TIME_TAGS_size_ = 0;
static gchar** photo_metadata_WIDTH_TAGS;
static gint photo_metadata_WIDTH_TAGS_length1;
static gchar** photo_metadata_WIDTH_TAGS = NULL;
static gint photo_metadata_WIDTH_TAGS_length1 = 0;
static gint _photo_metadata_WIDTH_TAGS_size_ = 0;
extern gchar** photo_metadata_HEIGHT_TAGS;
extern gint photo_metadata_HEIGHT_TAGS_length1;
gchar** photo_metadata_HEIGHT_TAGS = NULL;
gint photo_metadata_HEIGHT_TAGS_length1 = 0;
static gchar** photo_metadata_STANDARD_TITLE_TAGS;
static gint photo_metadata_STANDARD_TITLE_TAGS_length1;
static gchar** photo_metadata_STANDARD_TITLE_TAGS = NULL;
static gint photo_metadata_STANDARD_TITLE_TAGS_length1 = 0;
static gint _photo_metadata_STANDARD_TITLE_TAGS_size_ = 0;
static gchar** photo_metadata_COMMENT_TAGS;
static gint photo_metadata_COMMENT_TAGS_length1;
static gchar** photo_metadata_COMMENT_TAGS = NULL;
static gint photo_metadata_COMMENT_TAGS_length1 = 0;
static gint _photo_metadata_COMMENT_TAGS_size_ = 0;
static gchar** photo_metadata_KEYWORD_TAGS;
static gint photo_metadata_KEYWORD_TAGS_length1;
static gchar** photo_metadata_KEYWORD_TAGS = NULL;
static gint photo_metadata_KEYWORD_TAGS_length1 = 0;
static gint _photo_metadata_KEYWORD_TAGS_size_ = 0;
static HierarchicalKeywordField** photo_metadata_HIERARCHICAL_KEYWORD_TAGS;
static gint photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1;
static HierarchicalKeywordField** photo_metadata_HIERARCHICAL_KEYWORD_TAGS = NULL;
static gint photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1 = 0;
static gint _photo_metadata_HIERARCHICAL_KEYWORD_TAGS_size_ = 0;
static gchar** photo_metadata_ARTIST_TAGS;
static gint photo_metadata_ARTIST_TAGS_length1;
static gchar** photo_metadata_ARTIST_TAGS = NULL;
static gint photo_metadata_ARTIST_TAGS_length1 = 0;
static gint _photo_metadata_ARTIST_TAGS_size_ = 0;
static gchar** photo_metadata_RATING_TAGS;
static gint photo_metadata_RATING_TAGS_length1;
static gchar** photo_metadata_RATING_TAGS = NULL;
static gint photo_metadata_RATING_TAGS_length1 = 0;
static gint _photo_metadata_RATING_TAGS_size_ = 0;
static gpointer photo_metadata_internal_photo_preview_parent_class = NULL;

GType metadata_domain_get_type (void) G_GNUC_CONST;
gpointer keyword_transformer_ref (gpointer instance);
void keyword_transformer_unref (gpointer instance);
GParamSpec* param_spec_keyword_transformer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_keyword_transformer (GValue* value, gpointer v_object);
void value_take_keyword_transformer (GValue* value, gpointer v_object);
gpointer value_get_keyword_transformer (const GValue* value);
GType keyword_transformer_get_type (void) G_GNUC_CONST;
enum  {
	KEYWORD_TRANSFORMER_DUMMY_PROPERTY
};
GeeList* keyword_transformer_transform (KeywordTransformer* self, const gchar* input, GError** error);
static GeeList* keyword_transformer_real_transform (KeywordTransformer* self, const gchar* input, GError** error);
KeywordTransformer* keyword_transformer_construct (GType object_type);
static void keyword_transformer_finalize (KeywordTransformer* obj);
GType null_keyword_transformer_get_type (void) G_GNUC_CONST;
enum  {
	NULL_KEYWORD_TRANSFORMER_DUMMY_PROPERTY
};
static GeeList* null_keyword_transformer_real_transform (KeywordTransformer* base, const gchar* input, GError** error);
NullKeywordTransformer* null_keyword_transformer_new (void);
NullKeywordTransformer* null_keyword_transformer_construct (GType object_type);
GType acd_see_keyword_transformer_get_type (void) G_GNUC_CONST;
#define ACD_SEE_KEYWORD_TRANSFORMER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformerPrivate))
enum  {
	ACD_SEE_KEYWORD_TRANSFORMER_DUMMY_PROPERTY
};
ACDSeeKeywordTransformer* acd_see_keyword_transformer_new (void);
ACDSeeKeywordTransformer* acd_see_keyword_transformer_construct (GType object_type);
static void acd_see_keyword_transformer_on_start (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* name, gchar** attribute_names, gchar** attribute_values, GError** error);
static void _acd_see_keyword_transformer_on_start_gmarkup_parser_start_element_func (GMarkupParseContext* context, const gchar* element_name, gchar** attribute_names, gchar** attribute_values, gpointer self, GError** error);
static void acd_see_keyword_transformer_on_end (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* name, GError** error);
static void _acd_see_keyword_transformer_on_end_gmarkup_parser_end_element_func (GMarkupParseContext* context, const gchar* element_name, gpointer self, GError** error);
static void acd_see_keyword_transformer_on_text (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* text, GError** error);
static void _acd_see_keyword_transformer_on_text_gmarkup_parser_text_func (GMarkupParseContext* context, const gchar* text, gsize text_len, gpointer self, GError** error);
static void acd_see_keyword_transformer_on_error (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, GError* _error_);
static void _acd_see_keyword_transformer_on_error_gmarkup_parser_error_func (GMarkupParseContext* context, GError* _error_, gpointer self);
static GeeList* acd_see_keyword_transformer_real_transform (KeywordTransformer* base, const gchar* input, GError** error);
static void acd_see_keyword_transformer_finalize (KeywordTransformer* obj);
gpointer hierarchical_keyword_field_ref (gpointer instance);
void hierarchical_keyword_field_unref (gpointer instance);
GParamSpec* param_spec_hierarchical_keyword_field (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_hierarchical_keyword_field (GValue* value, gpointer v_object);
void value_take_hierarchical_keyword_field (GValue* value, gpointer v_object);
gpointer value_get_hierarchical_keyword_field (const GValue* value);
GType hierarchical_keyword_field_get_type (void) G_GNUC_CONST;
enum  {
	HIERARCHICAL_KEYWORD_FIELD_DUMMY_PROPERTY
};
HierarchicalKeywordField* hierarchical_keyword_field_new (const gchar* field_name, const gchar* path_separator, gboolean wants_leading_separator, gboolean is_writeable, KeywordTransformer* transformer);
HierarchicalKeywordField* hierarchical_keyword_field_construct (GType object_type, const gchar* field_name, const gchar* path_separator, gboolean wants_leading_separator, gboolean is_writeable, KeywordTransformer* transformer);
static void hierarchical_keyword_field_finalize (HierarchicalKeywordField* obj);
gpointer photo_preview_ref (gpointer instance);
void photo_preview_unref (gpointer instance);
GParamSpec* param_spec_photo_preview (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_photo_preview (GValue* value, gpointer v_object);
void value_take_photo_preview (GValue* value, gpointer v_object);
gpointer value_get_photo_preview (const GValue* value);
GType photo_preview_get_type (void) G_GNUC_CONST;
GType dimensions_get_type (void) G_GNUC_CONST;
Dimensions* dimensions_dup (const Dimensions* self);
void dimensions_free (Dimensions* self);
#define PHOTO_PREVIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PHOTO_PREVIEW, PhotoPreviewPrivate))
enum  {
	PHOTO_PREVIEW_DUMMY_PROPERTY
};
PhotoPreview* photo_preview_construct (GType object_type, const gchar* name, Dimensions* dimensions, guint32 size, const gchar* mime_type, const gchar* extension);
gchar* photo_preview_get_name (PhotoPreview* self);
void photo_preview_get_pixel_dimensions (PhotoPreview* self, Dimensions* result);
guint32 photo_preview_get_size (PhotoPreview* self);
gchar* photo_preview_get_mime_type (PhotoPreview* self);
gchar* photo_preview_get_extension (PhotoPreview* self);
GBytes* photo_preview_flatten (PhotoPreview* self, GError** error);
static GBytes* photo_preview_real_flatten (PhotoPreview* self, GError** error);
GdkPixbuf* photo_preview_get_pixbuf (PhotoPreview* self, GError** error);
static GdkPixbuf* photo_preview_real_get_pixbuf (PhotoPreview* self, GError** error);
static void photo_preview_finalize (PhotoPreview* obj);
gpointer media_metadata_ref (gpointer instance);
void media_metadata_unref (gpointer instance);
GParamSpec* param_spec_media_metadata (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_media_metadata (GValue* value, gpointer v_object);
void value_take_media_metadata (GValue* value, gpointer v_object);
gpointer value_get_media_metadata (const GValue* value);
GType media_metadata_get_type (void) G_GNUC_CONST;
gpointer metadata_date_time_ref (gpointer instance);
void metadata_date_time_unref (gpointer instance);
GParamSpec* param_spec_metadata_date_time (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_metadata_date_time (GValue* value, gpointer v_object);
void value_take_metadata_date_time (GValue* value, gpointer v_object);
gpointer value_get_metadata_date_time (const GValue* value);
GType metadata_date_time_get_type (void) G_GNUC_CONST;
GType photo_metadata_get_type (void) G_GNUC_CONST;
#define PHOTO_METADATA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PHOTO_METADATA, PhotoMetadataPrivate))
enum  {
	PHOTO_METADATA_DUMMY_PROPERTY
};
GType photo_metadata_set_option_get_type (void) G_GNUC_CONST;
GType prepare_input_text_options_get_type (void) G_GNUC_CONST;
#define PHOTO_METADATA_PREPARE_STRING_OPTIONS (((((PREPARE_INPUT_TEXT_OPTIONS_INVALID_IS_NULL | PREPARE_INPUT_TEXT_OPTIONS_EMPTY_IS_NULL) | PREPARE_INPUT_TEXT_OPTIONS_STRIP) | PREPARE_INPUT_TEXT_OPTIONS_STRIP_CRLF) | PREPARE_INPUT_TEXT_OPTIONS_NORMALIZE) | PREPARE_INPUT_TEXT_OPTIONS_VALIDATE)
#define PHOTO_METADATA_IPHOTO_TITLE_TAG "Iptc.Application2.ObjectName"
PhotoMetadata* photo_metadata_new (void);
PhotoMetadata* photo_metadata_construct (GType object_type);
MediaMetadata* media_metadata_construct (GType object_type);
static void photo_metadata_real_read_from_file (MediaMetadata* base, GFile* file, GError** error);
void photo_metadata_write_to_file (PhotoMetadata* self, GFile* file, GError** error);
void photo_metadata_read_from_buffer (PhotoMetadata* self, guint8* buffer, int buffer_length1, gint length, GError** error);
void photo_metadata_read_from_app1_segment (PhotoMetadata* self, GBytes* buffer, GError** error);
MetadataDomain photo_metadata_get_tag_domain (const gchar* tag);
gboolean photo_metadata_has_domain (PhotoMetadata* self, MetadataDomain domain);
gboolean photo_metadata_has_exif (PhotoMetadata* self);
gboolean photo_metadata_has_xmp (PhotoMetadata* self);
gboolean photo_metadata_has_iptc (PhotoMetadata* self);
gboolean photo_metadata_can_write_to_domain (PhotoMetadata* self, MetadataDomain domain);
gboolean photo_metadata_can_write_exif (PhotoMetadata* self);
gboolean photo_metadata_can_write_xmp (PhotoMetadata* self);
gboolean photo_metadata_can_write_iptc (PhotoMetadata* self);
gboolean photo_metadata_has_tag (PhotoMetadata* self, const gchar* tag);
static GeeSet* photo_metadata_create_string_set (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
GeeCollection* photo_metadata_get_tags (PhotoMetadata* self, MetadataDomain domain, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
GeeCollection* photo_metadata_get_all_tags (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
gchar* photo_metadata_get_tag_label (PhotoMetadata* self, const gchar* tag);
gchar* photo_metadata_get_tag_description (PhotoMetadata* self, const gchar* tag);
gchar* photo_metadata_get_string (PhotoMetadata* self, const gchar* tag, PrepareInputTextOptions options);
gchar* prepare_input_text (const gchar* text, PrepareInputTextOptions options, gint dest_length);
#define DEFAULT_USER_TEXT_INPUT_LENGTH 1024
gchar* photo_metadata_get_string_interpreted (PhotoMetadata* self, const gchar* tag, PrepareInputTextOptions options);
gchar* photo_metadata_get_first_string (PhotoMetadata* self, gchar** tags, int tags_length1);
gchar* photo_metadata_get_first_string_interpreted (PhotoMetadata* self, gchar** tags, int tags_length1);
GeeList* photo_metadata_get_string_multiple (PhotoMetadata* self, const gchar* tag);
GeeList* photo_metadata_get_first_string_multiple (PhotoMetadata* self, gchar** tags, int tags_length1);
void photo_metadata_set_string (PhotoMetadata* self, const gchar* tag, const gchar* value, PrepareInputTextOptions options);
static void photo_metadata_set_all_generic (PhotoMetadata* self, gchar** tags, int tags_length1, PhotoMetadataSetOption option, PhotoMetadataSetGenericValue setter, void* setter_target);
void photo_metadata_set_all_string (PhotoMetadata* self, gchar** tags, int tags_length1, const gchar* value, PhotoMetadataSetOption option);
static Block1Data* block1_data_ref (Block1Data* _data1_);
static void block1_data_unref (void * _userdata_);
static void __lambda5_ (Block1Data* _data1_, const gchar* tag);
static void ___lambda5__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
void photo_metadata_set_string_multiple (PhotoMetadata* self, const gchar* tag, GeeCollection* collection);
static void _vala_array_add45 (gchar*** array, int* length, int* size, gchar* value);
static void _vala_array_add46 (gchar*** array, int* length, int* size, gchar* value);
void photo_metadata_set_all_string_multiple (PhotoMetadata* self, gchar** tags, int tags_length1, GeeCollection* values, PhotoMetadataSetOption option);
static Block2Data* block2_data_ref (Block2Data* _data2_);
static void block2_data_unref (void * _userdata_);
static void __lambda6_ (Block2Data* _data2_, const gchar* tag);
static void ___lambda6__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
gboolean photo_metadata_get_long (PhotoMetadata* self, const gchar* tag, glong* value);
gboolean photo_metadata_get_first_long (PhotoMetadata* self, gchar** tags, int tags_length1, glong* value);
void photo_metadata_set_long (PhotoMetadata* self, const gchar* tag, glong value);
void photo_metadata_set_all_long (PhotoMetadata* self, gchar** tags, int tags_length1, glong value, PhotoMetadataSetOption option);
static Block3Data* block3_data_ref (Block3Data* _data3_);
static void block3_data_unref (void * _userdata_);
static void __lambda7_ (Block3Data* _data3_, const gchar* tag);
static void ___lambda7__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
GType metadata_rational_get_type (void) G_GNUC_CONST;
MetadataRational* metadata_rational_dup (const MetadataRational* self);
void metadata_rational_free (MetadataRational* self);
gboolean photo_metadata_get_rational (PhotoMetadata* self, const gchar* tag, MetadataRational* rational);
void metadata_rational_init (MetadataRational *self, gint numerator, gint denominator);
gboolean photo_metadata_get_first_rational (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataRational* rational);
void photo_metadata_set_rational (PhotoMetadata* self, const gchar* tag, MetadataRational* rational);
gchar* metadata_rational_to_string (MetadataRational *self);
void photo_metadata_set_all_rational (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataRational* rational, PhotoMetadataSetOption option);
static Block4Data* block4_data_ref (Block4Data* _data4_);
static void block4_data_unref (void * _userdata_);
static void __lambda8_ (Block4Data* _data4_, const gchar* tag);
static void ___lambda8__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
MetadataDateTime* photo_metadata_get_date_time (PhotoMetadata* self, const gchar* tag);
GQuark metadata_date_time_error_quark (void);
MetadataDateTime* metadata_date_time_new_from_xmp (const gchar* label, GError** error);
MetadataDateTime* metadata_date_time_construct_from_xmp (GType object_type, const gchar* label, GError** error);
MetadataDateTime* metadata_date_time_new_from_exif (const gchar* label, GError** error);
MetadataDateTime* metadata_date_time_construct_from_exif (GType object_type, const gchar* label, GError** error);
MetadataDateTime* photo_metadata_get_first_date_time (PhotoMetadata* self, gchar** tags, int tags_length1);
void photo_metadata_set_date_time (PhotoMetadata* self, const gchar* tag, MetadataDateTime* date_time);
gchar* metadata_date_time_get_exif_label (MetadataDateTime* self);
gchar* metadata_date_time_get_xmp_label (MetadataDateTime* self);
const gchar* metadata_domain_to_string (MetadataDomain self);
void photo_metadata_set_all_date_time (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataDateTime* date_time, PhotoMetadataSetOption option);
static Block5Data* block5_data_ref (Block5Data* _data5_);
static void block5_data_unref (void * _userdata_);
static void __lambda9_ (Block5Data* _data5_, const gchar* tag);
static void ___lambda9__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
gchar* photo_metadata_exif_hash (PhotoMetadata* self);
gchar* photo_metadata_thumbnail_hash (PhotoMetadata* self);
guint photo_metadata_get_preview_count (PhotoMetadata* self);
PhotoPreview* photo_metadata_get_preview (PhotoMetadata* self, guint number);
static PhotoMetadataInternalPhotoPreview* photo_metadata_internal_photo_preview_new (PhotoMetadata* owner, const gchar* name, guint number, GExiv2PreviewProperties* props);
static PhotoMetadataInternalPhotoPreview* photo_metadata_internal_photo_preview_construct (GType object_type, PhotoMetadata* owner, const gchar* name, guint number, GExiv2PreviewProperties* props);
static GType photo_metadata_internal_photo_preview_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
void photo_metadata_remove_exif_thumbnail (PhotoMetadata* self);
void photo_metadata_remove_tag (PhotoMetadata* self, const gchar* tag);
void photo_metadata_remove_tags (PhotoMetadata* self, gchar** tags, int tags_length1);
void photo_metadata_clear_domain (PhotoMetadata* self, MetadataDomain domain);
void photo_metadata_clear (PhotoMetadata* self);
MetadataDateTime* photo_metadata_get_modification_date_time (PhotoMetadata* self);
void photo_metadata_set_modification_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option);
MetadataDateTime* photo_metadata_get_exposure_date_time (PhotoMetadata* self);
void photo_metadata_set_exposure_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option);
MetadataDateTime* photo_metadata_get_digitized_date_time (PhotoMetadata* self);
void photo_metadata_set_digitized_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option);
static MetadataDateTime* photo_metadata_real_get_creation_date_time (MediaMetadata* base);
Dimensions* photo_metadata_get_pixel_dimensions (PhotoMetadata* self);
void dimensions_init (Dimensions *self, gint width, gint height);
void photo_metadata_set_pixel_dimensions (PhotoMetadata* self, Dimensions* dim, PhotoMetadataSetOption option);
static gchar* photo_metadata_real_get_title (MediaMetadata* base);
gboolean is_string_empty (const gchar* s);
void photo_metadata_set_title (PhotoMetadata* self, const gchar* title, PhotoMetadataSetOption option);
static gchar* photo_metadata_real_get_comment (MediaMetadata* base);
void photo_metadata_set_comment (PhotoMetadata* self, const gchar* comment, PhotoMetadataSetOption option);
static Block6Data* block6_data_ref (Block6Data* _data6_);
static void block6_data_unref (void * _userdata_);
static void ___lambda10_ (Block6Data* _data6_, const gchar* tag);
static void ____lambda10__photo_metadata_set_generic_value (const gchar* tag, gpointer self);
GeeSet* photo_metadata_get_keywords (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
gchar* hierarchical_tag_utilities_make_flat_tag_safe (const gchar* in_tag);
gpointer hierarchical_tag_index_ref (gpointer instance);
void hierarchical_tag_index_unref (gpointer instance);
GParamSpec* param_spec_hierarchical_tag_index (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_hierarchical_tag_index (GValue* value, gpointer v_object);
void value_take_hierarchical_tag_index (GValue* value, gpointer v_object);
gpointer value_get_hierarchical_tag_index (const GValue* value);
GType hierarchical_tag_index_get_type (void) G_GNUC_CONST;
static void photo_metadata_internal_set_hierarchical_keywords (PhotoMetadata* self, HierarchicalTagIndex* index);
GeeCollection* hierarchical_tag_index_get_all_paths (HierarchicalTagIndex* self);
#define TAG_PATH_SEPARATOR_STRING "/"
void photo_metadata_set_keywords (PhotoMetadata* self, GeeCollection* keywords, PhotoMetadataSetOption option);
HierarchicalTagIndex* hierarchical_tag_index_new (void);
HierarchicalTagIndex* hierarchical_tag_index_construct (GType object_type);
GeeList* hierarchical_tag_utilities_enumerate_path_components (const gchar* in_path);
void hierarchical_tag_index_add_path (HierarchicalTagIndex* self, const gchar* tag, const gchar* path);
GeeCollection* hierarchical_tag_index_get_all_tags (HierarchicalTagIndex* self);
gboolean photo_metadata_has_hierarchical_keywords (PhotoMetadata* self);
GeeSet* photo_metadata_get_hierarchical_keywords (PhotoMetadata* self);
gchar* hierarchical_tag_utilities_canonicalize (const gchar* in_tag, const gchar* foreign_separator);
gboolean photo_metadata_has_orientation (PhotoMetadata* self);
GType orientation_get_type (void) G_GNUC_CONST;
Orientation photo_metadata_get_orientation (PhotoMetadata* self);
void photo_metadata_set_orientation (PhotoMetadata* self, Orientation orientation);
gboolean photo_metadata_get_gps (PhotoMetadata* self, gdouble* longitude, gchar** long_ref, gdouble* latitude, gchar** lat_ref, gdouble* altitude);
gboolean photo_metadata_get_exposure (PhotoMetadata* self, MetadataRational* exposure);
gchar* photo_metadata_get_exposure_string (PhotoMetadata* self);
gboolean metadata_rational_is_valid (MetadataRational *self);
gboolean photo_metadata_get_iso (PhotoMetadata* self, glong* iso);
gchar* photo_metadata_get_iso_string (PhotoMetadata* self);
gboolean photo_metadata_get_aperture (PhotoMetadata* self, MetadataRational* aperture);
gchar* photo_metadata_get_aperture_string (PhotoMetadata* self, gboolean pango_formatted);
gchar* photo_metadata_get_camera_make (PhotoMetadata* self);
gchar* photo_metadata_get_camera_model (PhotoMetadata* self);
gboolean photo_metadata_get_flash (PhotoMetadata* self, glong* flash);
gchar* photo_metadata_get_flash_string (PhotoMetadata* self);
gboolean photo_metadata_get_focal_length (PhotoMetadata* self, MetadataRational* focal_length);
gchar* photo_metadata_get_focal_length_string (PhotoMetadata* self);
gchar* photo_metadata_get_artist (PhotoMetadata* self);
gchar* photo_metadata_get_copyright (PhotoMetadata* self);
gchar* photo_metadata_get_software (PhotoMetadata* self);
void photo_metadata_set_software (PhotoMetadata* self, const gchar* software, const gchar* version);
void photo_metadata_remove_software (PhotoMetadata* self);
gchar* photo_metadata_get_exposure_bias (PhotoMetadata* self);
GType rating_get_type (void) G_GNUC_CONST;
Rating photo_metadata_get_rating (PhotoMetadata* self);
Rating rating_unserialize (gint value);
void photo_metadata_set_rating (PhotoMetadata* self, Rating rating);
gint rating_serialize (Rating self);
enum  {
	PHOTO_METADATA_INTERNAL_PHOTO_PREVIEW_DUMMY_PROPERTY
};
static GBytes* photo_metadata_internal_photo_preview_real_flatten (PhotoPreview* base, GError** error);
static void photo_metadata_internal_photo_preview_finalize (PhotoPreview* obj);
static void photo_metadata_finalize (MediaMetadata* obj);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
static gint _vala_array_length (gpointer array);

extern const gint RESOURCES_rating_thresholds[6];

GType metadata_domain_get_type (void) {
	static volatile gsize metadata_domain_type_id__volatile = 0;
	if (g_once_init_enter (&metadata_domain_type_id__volatile)) {
		static const GEnumValue values[] = {{METADATA_DOMAIN_UNKNOWN, "METADATA_DOMAIN_UNKNOWN", "unknown"}, {METADATA_DOMAIN_EXIF, "METADATA_DOMAIN_EXIF", "exif"}, {METADATA_DOMAIN_XMP, "METADATA_DOMAIN_XMP", "xmp"}, {METADATA_DOMAIN_IPTC, "METADATA_DOMAIN_IPTC", "iptc"}, {0, NULL, NULL}};
		GType metadata_domain_type_id;
		metadata_domain_type_id = g_enum_register_static ("MetadataDomain", values);
		g_once_init_leave (&metadata_domain_type_id__volatile, metadata_domain_type_id);
	}
	return metadata_domain_type_id__volatile;
}


static GeeList* keyword_transformer_real_transform (KeywordTransformer* self, const gchar* input, GError** error) {
#line 32 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_critical ("Type `%s' does not implement abstract method `keyword_transformer_transform'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 32 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 777 "PhotoMetadata.c"
}


GeeList* keyword_transformer_transform (KeywordTransformer* self, const gchar* input, GError** error) {
#line 32 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_KEYWORD_TRANSFORMER (self), NULL);
#line 32 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return KEYWORD_TRANSFORMER_GET_CLASS (self)->transform (self, input, error);
#line 786 "PhotoMetadata.c"
}


KeywordTransformer* keyword_transformer_construct (GType object_type) {
	KeywordTransformer* self = NULL;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (KeywordTransformer*) g_type_create_instance (object_type);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 796 "PhotoMetadata.c"
}


static void value_keyword_transformer_init (GValue* value) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	value->data[0].v_pointer = NULL;
#line 803 "PhotoMetadata.c"
}


static void value_keyword_transformer_free_value (GValue* value) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (value->data[0].v_pointer) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		keyword_transformer_unref (value->data[0].v_pointer);
#line 812 "PhotoMetadata.c"
	}
}


static void value_keyword_transformer_copy_value (const GValue* src_value, GValue* dest_value) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (src_value->data[0].v_pointer) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = keyword_transformer_ref (src_value->data[0].v_pointer);
#line 822 "PhotoMetadata.c"
	} else {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = NULL;
#line 826 "PhotoMetadata.c"
	}
}


static gpointer value_keyword_transformer_peek_pointer (const GValue* value) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 834 "PhotoMetadata.c"
}


static gchar* value_keyword_transformer_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (collect_values[0].v_pointer) {
#line 841 "PhotoMetadata.c"
		KeywordTransformer* object;
		object = collect_values[0].v_pointer;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (object->parent_instance.g_class == NULL) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 848 "PhotoMetadata.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 852 "PhotoMetadata.c"
		}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = keyword_transformer_ref (object);
#line 856 "PhotoMetadata.c"
	} else {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 860 "PhotoMetadata.c"
	}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 864 "PhotoMetadata.c"
}


static gchar* value_keyword_transformer_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	KeywordTransformer** object_p;
	object_p = collect_values[0].v_pointer;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!object_p) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 875 "PhotoMetadata.c"
	}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!value->data[0].v_pointer) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = NULL;
#line 881 "PhotoMetadata.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = value->data[0].v_pointer;
#line 885 "PhotoMetadata.c"
	} else {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = keyword_transformer_ref (value->data[0].v_pointer);
#line 889 "PhotoMetadata.c"
	}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 893 "PhotoMetadata.c"
}


GParamSpec* param_spec_keyword_transformer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecKeywordTransformer* spec;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_KEYWORD_TRANSFORMER), NULL);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return G_PARAM_SPEC (spec);
#line 907 "PhotoMetadata.c"
}


gpointer value_get_keyword_transformer (const GValue* value) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_KEYWORD_TRANSFORMER), NULL);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 916 "PhotoMetadata.c"
}


void value_set_keyword_transformer (GValue* value, gpointer v_object) {
	KeywordTransformer* old;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_KEYWORD_TRANSFORMER));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_KEYWORD_TRANSFORMER));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		keyword_transformer_ref (value->data[0].v_pointer);
#line 936 "PhotoMetadata.c"
	} else {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 940 "PhotoMetadata.c"
	}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		keyword_transformer_unref (old);
#line 946 "PhotoMetadata.c"
	}
}


void value_take_keyword_transformer (GValue* value, gpointer v_object) {
	KeywordTransformer* old;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_KEYWORD_TRANSFORMER));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_KEYWORD_TRANSFORMER));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 965 "PhotoMetadata.c"
	} else {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 969 "PhotoMetadata.c"
	}
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		keyword_transformer_unref (old);
#line 975 "PhotoMetadata.c"
	}
}


static void keyword_transformer_class_init (KeywordTransformerClass * klass) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	keyword_transformer_parent_class = g_type_class_peek_parent (klass);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((KeywordTransformerClass *) klass)->finalize = keyword_transformer_finalize;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((KeywordTransformerClass *) klass)->transform = (GeeList* (*)(KeywordTransformer*, const gchar*, GError**)) keyword_transformer_real_transform;
#line 987 "PhotoMetadata.c"
}


static void keyword_transformer_instance_init (KeywordTransformer * self) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->ref_count = 1;
#line 994 "PhotoMetadata.c"
}


static void keyword_transformer_finalize (KeywordTransformer* obj) {
	KeywordTransformer * self;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_signal_handlers_destroy (self);
#line 1004 "PhotoMetadata.c"
}


GType keyword_transformer_get_type (void) {
	static volatile gsize keyword_transformer_type_id__volatile = 0;
	if (g_once_init_enter (&keyword_transformer_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_keyword_transformer_init, value_keyword_transformer_free_value, value_keyword_transformer_copy_value, value_keyword_transformer_peek_pointer, "p", value_keyword_transformer_collect_value, "p", value_keyword_transformer_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (KeywordTransformerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) keyword_transformer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (KeywordTransformer), 0, (GInstanceInitFunc) keyword_transformer_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType keyword_transformer_type_id;
		keyword_transformer_type_id = g_type_register_fundamental (g_type_fundamental_next (), "KeywordTransformer", &g_define_type_info, &g_define_type_fundamental_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&keyword_transformer_type_id__volatile, keyword_transformer_type_id);
	}
	return keyword_transformer_type_id__volatile;
}


gpointer keyword_transformer_ref (gpointer instance) {
	KeywordTransformer* self;
	self = instance;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&self->ref_count);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return instance;
#line 1029 "PhotoMetadata.c"
}


void keyword_transformer_unref (gpointer instance) {
	KeywordTransformer* self;
	self = instance;
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		KEYWORD_TRANSFORMER_GET_CLASS (self)->finalize (self);
#line 31 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 1042 "PhotoMetadata.c"
	}
}


static GeeList* null_keyword_transformer_real_transform (KeywordTransformer* base, const gchar* input, GError** error) {
	NullKeywordTransformer * self;
	GeeList* result = NULL;
	GeeArrayList* _result_ = NULL;
	GeeArrayList* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 36 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_NULL_KEYWORD_TRANSFORMER, NullKeywordTransformer);
#line 36 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (input != NULL, NULL);
#line 37 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 37 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_result_ = _tmp0_;
#line 38 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = input;
#line 38 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_result_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp1_);
#line 40 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_result_, GEE_TYPE_LIST, GeeList);
#line 40 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 1069 "PhotoMetadata.c"
}


NullKeywordTransformer* null_keyword_transformer_construct (GType object_type) {
	NullKeywordTransformer* self = NULL;
#line 35 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (NullKeywordTransformer*) keyword_transformer_construct (object_type);
#line 35 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 1079 "PhotoMetadata.c"
}


NullKeywordTransformer* null_keyword_transformer_new (void) {
#line 35 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return null_keyword_transformer_construct (TYPE_NULL_KEYWORD_TRANSFORMER);
#line 1086 "PhotoMetadata.c"
}


static void null_keyword_transformer_class_init (NullKeywordTransformerClass * klass) {
#line 35 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	null_keyword_transformer_parent_class = g_type_class_peek_parent (klass);
#line 35 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((KeywordTransformerClass *) klass)->transform = (GeeList* (*)(KeywordTransformer*, const gchar*, GError**)) null_keyword_transformer_real_transform;
#line 1095 "PhotoMetadata.c"
}


static void null_keyword_transformer_instance_init (NullKeywordTransformer * self) {
}


GType null_keyword_transformer_get_type (void) {
	static volatile gsize null_keyword_transformer_type_id__volatile = 0;
	if (g_once_init_enter (&null_keyword_transformer_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (NullKeywordTransformerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) null_keyword_transformer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (NullKeywordTransformer), 0, (GInstanceInitFunc) null_keyword_transformer_instance_init, NULL };
		GType null_keyword_transformer_type_id;
		null_keyword_transformer_type_id = g_type_register_static (TYPE_KEYWORD_TRANSFORMER, "NullKeywordTransformer", &g_define_type_info, 0);
		g_once_init_leave (&null_keyword_transformer_type_id__volatile, null_keyword_transformer_type_id);
	}
	return null_keyword_transformer_type_id__volatile;
}


static void _acd_see_keyword_transformer_on_start_gmarkup_parser_start_element_func (GMarkupParseContext* context, const gchar* element_name, gchar** attribute_names, gchar** attribute_values, gpointer self, GError** error) {
#line 64 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	acd_see_keyword_transformer_on_start ((ACDSeeKeywordTransformer*) self, context, element_name, attribute_names, attribute_values, error);
#line 1118 "PhotoMetadata.c"
}


static void _acd_see_keyword_transformer_on_end_gmarkup_parser_end_element_func (GMarkupParseContext* context, const gchar* element_name, gpointer self, GError** error) {
#line 65 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	acd_see_keyword_transformer_on_end ((ACDSeeKeywordTransformer*) self, context, element_name, error);
#line 1125 "PhotoMetadata.c"
}


static void _acd_see_keyword_transformer_on_text_gmarkup_parser_text_func (GMarkupParseContext* context, const gchar* text, gsize text_len, gpointer self, GError** error) {
#line 66 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	acd_see_keyword_transformer_on_text ((ACDSeeKeywordTransformer*) self, context, text, error);
#line 1132 "PhotoMetadata.c"
}


static void _acd_see_keyword_transformer_on_error_gmarkup_parser_error_func (GMarkupParseContext* context, GError* _error_, gpointer self) {
#line 67 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	acd_see_keyword_transformer_on_error ((ACDSeeKeywordTransformer*) self, context, _error_);
#line 1139 "PhotoMetadata.c"
}


ACDSeeKeywordTransformer* acd_see_keyword_transformer_construct (GType object_type) {
	ACDSeeKeywordTransformer* self = NULL;
	GeeArrayList* _tmp0_ = NULL;
	GeeArrayQueue* _tmp1_ = NULL;
#line 62 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (ACDSeeKeywordTransformer*) keyword_transformer_construct (object_type);
#line 63 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	memset (&self->priv->parser, 0, sizeof (GMarkupParser));
#line 64 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->parser.start_element = _acd_see_keyword_transformer_on_start_gmarkup_parser_start_element_func;
#line 65 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->parser.end_element = _acd_see_keyword_transformer_on_end_gmarkup_parser_end_element_func;
#line 66 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->parser.text = _acd_see_keyword_transformer_on_text_gmarkup_parser_text_func;
#line 67 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->parser.error = _acd_see_keyword_transformer_on_error_gmarkup_parser_error_func;
#line 68 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 68 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->result);
#line 68 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->result = _tmp0_;
#line 69 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gee_array_queue_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 69 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->stack);
#line 69 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->stack = _tmp1_;
#line 62 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 1173 "PhotoMetadata.c"
}


ACDSeeKeywordTransformer* acd_see_keyword_transformer_new (void) {
#line 62 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return acd_see_keyword_transformer_construct (TYPE_ACD_SEE_KEYWORD_TRANSFORMER);
#line 1180 "PhotoMetadata.c"
}


static gpointer _g_object_ref0 (gpointer self) {
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? g_object_ref (self) : NULL;
#line 1187 "PhotoMetadata.c"
}


static GeeList* acd_see_keyword_transformer_real_transform (KeywordTransformer* base, const gchar* input, GError** error) {
	ACDSeeKeywordTransformer * self;
	GeeList* result = NULL;
	GMarkupParseContext* ctx = NULL;
	GMarkupParser _tmp0_ = {0};
	GMarkupParseContext* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gint _tmp4_ = 0;
	gint _tmp5_ = 0;
	GeeArrayList* _tmp6_ = NULL;
	GeeList* _tmp7_ = NULL;
	GError * _inner_error_ = NULL;
#line 72 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformer);
#line 72 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (input != NULL, NULL);
#line 73 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->parser;
#line 73 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_markup_parse_context_new (&_tmp0_, 0, self, NULL);
#line 73 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	ctx = _tmp1_;
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = input;
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = input;
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = strlen (_tmp3_);
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = _tmp4_;
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_markup_parse_context_parse (ctx, _tmp2_, (gssize) _tmp5_, &_inner_error_);
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_markup_parse_context_unref0 (ctx);
#line 75 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return NULL;
#line 1232 "PhotoMetadata.c"
	}
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = self->priv->result;
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_LIST, GeeList));
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp7_;
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_markup_parse_context_unref0 (ctx);
#line 77 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 1244 "PhotoMetadata.c"
}


static void acd_see_keyword_transformer_on_start (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* name, gchar** attribute_names, gchar** attribute_values, GError** error) {
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar** _tmp3_ = NULL;
	gint _tmp3__length1 = 0;
	gchar** _tmp4_ = NULL;
	gint _tmp4__length1 = 0;
	GError * _inner_error_ = NULL;
#line 80 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_ACD_SEE_KEYWORD_TRANSFORMER (self));
#line 80 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (ctx != NULL);
#line 80 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (name != NULL);
#line 88 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->assigned = FALSE;
#line 89 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = name;
#line 89 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_strcmp0 (_tmp0_, "Categories") == 0) {
#line 90 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 1271 "PhotoMetadata.c"
	}
#line 93 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = name;
#line 93 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_strcmp0 (_tmp1_, "Category") != 0) {
#line 94 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 1279 "PhotoMetadata.c"
	}
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = name;
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = attribute_names;
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3__length1 = _vala_array_length (attribute_names);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = attribute_values;
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4__length1 = _vala_array_length (attribute_values);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_markup_collect_attributes (_tmp2_, _tmp3_, _tmp4_, &_inner_error_, G_MARKUP_COLLECT_BOOLEAN, "Assigned", &self->priv->assigned, G_MARKUP_COLLECT_INVALID);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (_inner_error_->domain == G_MARKUP_ERROR) {
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			g_propagate_error (error, _inner_error_);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return;
#line 1301 "PhotoMetadata.c"
		} else {
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			g_clear_error (&_inner_error_);
#line 97 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return;
#line 1309 "PhotoMetadata.c"
		}
	}
}


static void acd_see_keyword_transformer_on_end (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* name, GError** error) {
	const gchar* _tmp0_ = NULL;
#line 104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_ACD_SEE_KEYWORD_TRANSFORMER (self));
#line 104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (ctx != NULL);
#line 104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (name != NULL);
#line 106 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = name;
#line 106 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_strcmp0 (_tmp0_, "Category") == 0) {
#line 1327 "PhotoMetadata.c"
		GeeArrayQueue* _tmp1_ = NULL;
		gpointer _tmp2_ = NULL;
		gchar* _tmp3_ = NULL;
#line 107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = self->priv->stack;
#line 107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = gee_deque_poll_tail (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_DEQUE, GeeDeque));
#line 107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = (gchar*) _tmp2_;
#line 107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp3_);
#line 1339 "PhotoMetadata.c"
	}
}


static void acd_see_keyword_transformer_on_text (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, const gchar* text, GError** error) {
	const gchar* _tmp0_ = NULL;
	GeeArrayQueue* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
#line 111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_ACD_SEE_KEYWORD_TRANSFORMER (self));
#line 111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (ctx != NULL);
#line 111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (text != NULL);
#line 113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = text;
#line 113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_strcmp0 (_tmp0_, "") == 0) {
#line 114 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 1361 "PhotoMetadata.c"
	}
#line 117 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = self->priv->stack;
#line 117 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = text;
#line 117 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gee_deque_offer_tail (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_DEQUE, GeeDeque), _tmp2_);
#line 118 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = self->priv->assigned;
#line 118 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 1373 "PhotoMetadata.c"
		GString* builder = NULL;
		GString* _tmp4_ = NULL;
		GString* _tmp13_ = NULL;
		gssize _tmp14_ = 0L;
		GeeArrayList* _tmp18_ = NULL;
		GString* _tmp19_ = NULL;
		const gchar* _tmp20_ = NULL;
#line 119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = g_string_new ("");
#line 119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		builder = _tmp4_;
#line 1385 "PhotoMetadata.c"
		{
			GeeIterator* _f_it = NULL;
			GeeArrayQueue* _tmp5_ = NULL;
			GeeIterator* _tmp6_ = NULL;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = self->priv->stack;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_f_it = _tmp6_;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			while (TRUE) {
#line 1398 "PhotoMetadata.c"
				GeeIterator* _tmp7_ = NULL;
				gboolean _tmp8_ = FALSE;
				gchar* f = NULL;
				GeeIterator* _tmp9_ = NULL;
				gpointer _tmp10_ = NULL;
				GString* _tmp11_ = NULL;
				const gchar* _tmp12_ = NULL;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp7_ = _f_it;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = gee_iterator_next (_tmp7_);
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp8_) {
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					break;
#line 1414 "PhotoMetadata.c"
				}
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp9_ = _f_it;
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = gee_iterator_get (_tmp9_);
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				f = (gchar*) _tmp10_;
#line 121 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11_ = builder;
#line 121 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = f;
#line 121 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				g_string_append_printf (_tmp11_, "%s|", _tmp12_);
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (f);
#line 1430 "PhotoMetadata.c"
			}
#line 120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_object_unref0 (_f_it);
#line 1434 "PhotoMetadata.c"
		}
#line 123 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = builder;
#line 123 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = _tmp13_->len;
#line 123 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (_tmp14_ > ((gssize) 0)) {
#line 1442 "PhotoMetadata.c"
			GString* _tmp15_ = NULL;
			GString* _tmp16_ = NULL;
			gssize _tmp17_ = 0L;
#line 124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp15_ = builder;
#line 124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp16_ = builder;
#line 124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp17_ = _tmp16_->len;
#line 124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			g_string_truncate (_tmp15_, (gsize) (_tmp17_ - 1));
#line 1454 "PhotoMetadata.c"
		}
#line 126 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18_ = self->priv->result;
#line 126 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = builder;
#line 126 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp20_ = _tmp19_->str;
#line 126 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp20_);
#line 118 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_string_free0 (builder);
#line 1466 "PhotoMetadata.c"
	}
}


static gpointer _g_error_copy0 (gpointer self) {
#line 131 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? g_error_copy (self) : NULL;
#line 1474 "PhotoMetadata.c"
}


static void acd_see_keyword_transformer_on_error (ACDSeeKeywordTransformer* self, GMarkupParseContext* ctx, GError* _error_) {
	GError* _tmp0_ = NULL;
	GError* _tmp1_ = NULL;
#line 130 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_ACD_SEE_KEYWORD_TRANSFORMER (self));
#line 130 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (ctx != NULL);
#line 131 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = _error_;
#line 131 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _g_error_copy0 (_tmp0_);
#line 131 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_error_free0 (self->priv->error);
#line 131 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->error = _tmp1_;
#line 1493 "PhotoMetadata.c"
}


static void acd_see_keyword_transformer_class_init (ACDSeeKeywordTransformerClass * klass) {
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	acd_see_keyword_transformer_parent_class = g_type_class_peek_parent (klass);
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((KeywordTransformerClass *) klass)->finalize = acd_see_keyword_transformer_finalize;
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_type_class_add_private (klass, sizeof (ACDSeeKeywordTransformerPrivate));
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((KeywordTransformerClass *) klass)->transform = (GeeList* (*)(KeywordTransformer*, const gchar*, GError**)) acd_see_keyword_transformer_real_transform;
#line 1506 "PhotoMetadata.c"
}


static void acd_see_keyword_transformer_instance_init (ACDSeeKeywordTransformer * self) {
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv = ACD_SEE_KEYWORD_TRANSFORMER_GET_PRIVATE (self);
#line 1513 "PhotoMetadata.c"
}


static void acd_see_keyword_transformer_finalize (KeywordTransformer* obj) {
	ACDSeeKeywordTransformer * self;
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ACD_SEE_KEYWORD_TRANSFORMER, ACDSeeKeywordTransformer);
#line 57 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_error_free0 (self->priv->error);
#line 58 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->stack);
#line 59 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->result);
#line 55 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	KEYWORD_TRANSFORMER_CLASS (acd_see_keyword_transformer_parent_class)->finalize (obj);
#line 1529 "PhotoMetadata.c"
}


GType acd_see_keyword_transformer_get_type (void) {
	static volatile gsize acd_see_keyword_transformer_type_id__volatile = 0;
	if (g_once_init_enter (&acd_see_keyword_transformer_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ACDSeeKeywordTransformerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) acd_see_keyword_transformer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ACDSeeKeywordTransformer), 0, (GInstanceInitFunc) acd_see_keyword_transformer_instance_init, NULL };
		GType acd_see_keyword_transformer_type_id;
		acd_see_keyword_transformer_type_id = g_type_register_static (TYPE_KEYWORD_TRANSFORMER, "ACDSeeKeywordTransformer", &g_define_type_info, 0);
		g_once_init_leave (&acd_see_keyword_transformer_type_id__volatile, acd_see_keyword_transformer_type_id);
	}
	return acd_see_keyword_transformer_type_id__volatile;
}


static gpointer _keyword_transformer_ref0 (gpointer self) {
#line 154 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? keyword_transformer_ref (self) : NULL;
#line 1548 "PhotoMetadata.c"
}


HierarchicalKeywordField* hierarchical_keyword_field_construct (GType object_type, const gchar* field_name, const gchar* path_separator, gboolean wants_leading_separator, gboolean is_writeable, KeywordTransformer* transformer) {
	HierarchicalKeywordField* self = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	KeywordTransformer* _tmp6_ = NULL;
	KeywordTransformer* _tmp7_ = NULL;
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (field_name != NULL, NULL);
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (path_separator != NULL, NULL);
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_KEYWORD_TRANSFORMER (transformer), NULL);
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (HierarchicalKeywordField*) g_type_create_instance (object_type);
#line 150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = field_name;
#line 150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->field_name);
#line 150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->field_name = _tmp1_;
#line 151 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = path_separator;
#line 151 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = g_strdup (_tmp2_);
#line 151 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->path_separator);
#line 151 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->path_separator = _tmp3_;
#line 152 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = wants_leading_separator;
#line 152 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->wants_leading_separator = _tmp4_;
#line 153 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = is_writeable;
#line 153 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->is_writeable = _tmp5_;
#line 154 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = transformer;
#line 154 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = _keyword_transformer_ref0 (_tmp6_);
#line 154 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_keyword_transformer_unref0 (self->transformer);
#line 154 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->transformer = _tmp7_;
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 1604 "PhotoMetadata.c"
}


HierarchicalKeywordField* hierarchical_keyword_field_new (const gchar* field_name, const gchar* path_separator, gboolean wants_leading_separator, gboolean is_writeable, KeywordTransformer* transformer) {
#line 144 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return hierarchical_keyword_field_construct (TYPE_HIERARCHICAL_KEYWORD_FIELD, field_name, path_separator, wants_leading_separator, is_writeable, transformer);
#line 1611 "PhotoMetadata.c"
}


static void value_hierarchical_keyword_field_init (GValue* value) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	value->data[0].v_pointer = NULL;
#line 1618 "PhotoMetadata.c"
}


static void value_hierarchical_keyword_field_free_value (GValue* value) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (value->data[0].v_pointer) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		hierarchical_keyword_field_unref (value->data[0].v_pointer);
#line 1627 "PhotoMetadata.c"
	}
}


static void value_hierarchical_keyword_field_copy_value (const GValue* src_value, GValue* dest_value) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (src_value->data[0].v_pointer) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = hierarchical_keyword_field_ref (src_value->data[0].v_pointer);
#line 1637 "PhotoMetadata.c"
	} else {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = NULL;
#line 1641 "PhotoMetadata.c"
	}
}


static gpointer value_hierarchical_keyword_field_peek_pointer (const GValue* value) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 1649 "PhotoMetadata.c"
}


static gchar* value_hierarchical_keyword_field_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (collect_values[0].v_pointer) {
#line 1656 "PhotoMetadata.c"
		HierarchicalKeywordField* object;
		object = collect_values[0].v_pointer;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (object->parent_instance.g_class == NULL) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 1663 "PhotoMetadata.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 1667 "PhotoMetadata.c"
		}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = hierarchical_keyword_field_ref (object);
#line 1671 "PhotoMetadata.c"
	} else {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 1675 "PhotoMetadata.c"
	}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 1679 "PhotoMetadata.c"
}


static gchar* value_hierarchical_keyword_field_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	HierarchicalKeywordField** object_p;
	object_p = collect_values[0].v_pointer;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!object_p) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 1690 "PhotoMetadata.c"
	}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!value->data[0].v_pointer) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = NULL;
#line 1696 "PhotoMetadata.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = value->data[0].v_pointer;
#line 1700 "PhotoMetadata.c"
	} else {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = hierarchical_keyword_field_ref (value->data[0].v_pointer);
#line 1704 "PhotoMetadata.c"
	}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 1708 "PhotoMetadata.c"
}


GParamSpec* param_spec_hierarchical_keyword_field (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecHierarchicalKeywordField* spec;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_HIERARCHICAL_KEYWORD_FIELD), NULL);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return G_PARAM_SPEC (spec);
#line 1722 "PhotoMetadata.c"
}


gpointer value_get_hierarchical_keyword_field (const GValue* value) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HIERARCHICAL_KEYWORD_FIELD), NULL);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 1731 "PhotoMetadata.c"
}


void value_set_hierarchical_keyword_field (GValue* value, gpointer v_object) {
	HierarchicalKeywordField* old;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HIERARCHICAL_KEYWORD_FIELD));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_HIERARCHICAL_KEYWORD_FIELD));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		hierarchical_keyword_field_ref (value->data[0].v_pointer);
#line 1751 "PhotoMetadata.c"
	} else {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 1755 "PhotoMetadata.c"
	}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		hierarchical_keyword_field_unref (old);
#line 1761 "PhotoMetadata.c"
	}
}


void value_take_hierarchical_keyword_field (GValue* value, gpointer v_object) {
	HierarchicalKeywordField* old;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HIERARCHICAL_KEYWORD_FIELD));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_HIERARCHICAL_KEYWORD_FIELD));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 1780 "PhotoMetadata.c"
	} else {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 1784 "PhotoMetadata.c"
	}
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		hierarchical_keyword_field_unref (old);
#line 1790 "PhotoMetadata.c"
	}
}


static void hierarchical_keyword_field_class_init (HierarchicalKeywordFieldClass * klass) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	hierarchical_keyword_field_parent_class = g_type_class_peek_parent (klass);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((HierarchicalKeywordFieldClass *) klass)->finalize = hierarchical_keyword_field_finalize;
#line 1800 "PhotoMetadata.c"
}


static void hierarchical_keyword_field_instance_init (HierarchicalKeywordField * self) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->ref_count = 1;
#line 1807 "PhotoMetadata.c"
}


static void hierarchical_keyword_field_finalize (HierarchicalKeywordField* obj) {
	HierarchicalKeywordField * self;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HIERARCHICAL_KEYWORD_FIELD, HierarchicalKeywordField);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_signal_handlers_destroy (self);
#line 138 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->field_name);
#line 139 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->path_separator);
#line 142 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_keyword_transformer_unref0 (self->transformer);
#line 1823 "PhotoMetadata.c"
}


GType hierarchical_keyword_field_get_type (void) {
	static volatile gsize hierarchical_keyword_field_type_id__volatile = 0;
	if (g_once_init_enter (&hierarchical_keyword_field_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_hierarchical_keyword_field_init, value_hierarchical_keyword_field_free_value, value_hierarchical_keyword_field_copy_value, value_hierarchical_keyword_field_peek_pointer, "p", value_hierarchical_keyword_field_collect_value, "p", value_hierarchical_keyword_field_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (HierarchicalKeywordFieldClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) hierarchical_keyword_field_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (HierarchicalKeywordField), 0, (GInstanceInitFunc) hierarchical_keyword_field_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType hierarchical_keyword_field_type_id;
		hierarchical_keyword_field_type_id = g_type_register_fundamental (g_type_fundamental_next (), "HierarchicalKeywordField", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&hierarchical_keyword_field_type_id__volatile, hierarchical_keyword_field_type_id);
	}
	return hierarchical_keyword_field_type_id__volatile;
}


gpointer hierarchical_keyword_field_ref (gpointer instance) {
	HierarchicalKeywordField* self;
	self = instance;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&self->ref_count);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return instance;
#line 1848 "PhotoMetadata.c"
}


void hierarchical_keyword_field_unref (gpointer instance) {
	HierarchicalKeywordField* self;
	self = instance;
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		HIERARCHICAL_KEYWORD_FIELD_GET_CLASS (self)->finalize (self);
#line 137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 1861 "PhotoMetadata.c"
	}
}


PhotoPreview* photo_preview_construct (GType object_type, const gchar* name, Dimensions* dimensions, guint32 size, const gchar* mime_type, const gchar* extension) {
	PhotoPreview* self = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	Dimensions _tmp2_ = {0};
	guint32 _tmp3_ = 0U;
	const gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (dimensions != NULL, NULL);
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (mime_type != NULL, NULL);
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (extension != NULL, NULL);
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (PhotoPreview*) g_type_create_instance (object_type);
#line 166 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = name;
#line 166 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 166 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->name);
#line 166 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->name = _tmp1_;
#line 167 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = *dimensions;
#line 167 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->dimensions = _tmp2_;
#line 168 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = size;
#line 168 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->size = _tmp3_;
#line 169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = mime_type;
#line 169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = g_strdup (_tmp4_);
#line 169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->mime_type);
#line 169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->mime_type = _tmp5_;
#line 170 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = extension;
#line 170 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = g_strdup (_tmp6_);
#line 170 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->extension);
#line 170 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->extension = _tmp7_;
#line 165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 1920 "PhotoMetadata.c"
}


gchar* photo_preview_get_name (PhotoPreview* self) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
#line 173 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), NULL);
#line 174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->name;
#line 174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 1938 "PhotoMetadata.c"
}


void photo_preview_get_pixel_dimensions (PhotoPreview* self, Dimensions* result) {
	Dimensions _tmp0_ = {0};
#line 177 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_PREVIEW (self));
#line 178 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->dimensions;
#line 178 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	*result = _tmp0_;
#line 178 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return;
#line 1952 "PhotoMetadata.c"
}


guint32 photo_preview_get_size (PhotoPreview* self) {
	guint32 result = 0U;
	guint32 _tmp0_ = 0U;
#line 181 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), 0U);
#line 182 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->size;
#line 182 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 182 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 1967 "PhotoMetadata.c"
}


gchar* photo_preview_get_mime_type (PhotoPreview* self) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
#line 185 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), NULL);
#line 186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->mime_type;
#line 186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 1985 "PhotoMetadata.c"
}


gchar* photo_preview_get_extension (PhotoPreview* self) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
#line 189 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), NULL);
#line 190 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->extension;
#line 190 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 190 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 190 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2003 "PhotoMetadata.c"
}


static GBytes* photo_preview_real_flatten (PhotoPreview* self, GError** error) {
#line 193 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_critical ("Type `%s' does not implement abstract method `photo_preview_flatten'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 193 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 2012 "PhotoMetadata.c"
}


GBytes* photo_preview_flatten (PhotoPreview* self, GError** error) {
#line 193 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), NULL);
#line 193 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return PHOTO_PREVIEW_GET_CLASS (self)->flatten (self, error);
#line 2021 "PhotoMetadata.c"
}


static GdkPixbuf* photo_preview_real_get_pixbuf (PhotoPreview* self, GError** error) {
	GdkPixbuf* result = NULL;
	GBytes* flattened = NULL;
	GBytes* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
#line 196 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_preview_flatten (self, &_inner_error_);
#line 196 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	flattened = _tmp0_;
#line 196 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 196 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 196 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return NULL;
#line 2040 "PhotoMetadata.c"
	}
	{
		GdkPixbuf* _tmp1_ = NULL;
		GMemoryInputStream* _tmp2_ = NULL;
		GMemoryInputStream* _tmp3_ = NULL;
		GdkPixbuf* _tmp4_ = NULL;
		GdkPixbuf* _tmp5_ = NULL;
		GdkPixbuf* _tmp6_ = NULL;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = (GMemoryInputStream*) g_memory_input_stream_new_from_bytes (flattened);
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp2_;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = gdk_pixbuf_new_from_stream (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, g_input_stream_get_type (), GInputStream), NULL, &_inner_error_);
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = _tmp4_;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_tmp3_);
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = _tmp5_;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2063 "PhotoMetadata.c"
			goto __catch25_g_error;
		}
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = _tmp1_;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = NULL;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = _tmp6_;
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_tmp1_);
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_bytes_unref0 (flattened);
#line 201 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 2078 "PhotoMetadata.c"
	}
	goto __finally25;
	__catch25_g_error:
	{
		GError* err = NULL;
		const gchar* _tmp7_ = NULL;
		GError* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
#line 200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		err = _inner_error_;
#line 200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_inner_error_ = NULL;
#line 204 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = self->priv->name;
#line 204 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp8_ = err;
#line 204 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = _tmp8_->message;
#line 204 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:204: Unable to decode thumbnail for %s: %s", _tmp7_, _tmp9_);
#line 206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_error_free0 (err);
#line 206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_bytes_unref0 (flattened);
#line 206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 2107 "PhotoMetadata.c"
	}
	__finally25:
#line 200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_propagate_error (error, _inner_error_);
#line 200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_bytes_unref0 (flattened);
#line 200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 2116 "PhotoMetadata.c"
}


GdkPixbuf* photo_preview_get_pixbuf (PhotoPreview* self, GError** error) {
#line 195 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_PREVIEW (self), NULL);
#line 195 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return PHOTO_PREVIEW_GET_CLASS (self)->get_pixbuf (self, error);
#line 2125 "PhotoMetadata.c"
}


static void value_photo_preview_init (GValue* value) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	value->data[0].v_pointer = NULL;
#line 2132 "PhotoMetadata.c"
}


static void value_photo_preview_free_value (GValue* value) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (value->data[0].v_pointer) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_preview_unref (value->data[0].v_pointer);
#line 2141 "PhotoMetadata.c"
	}
}


static void value_photo_preview_copy_value (const GValue* src_value, GValue* dest_value) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (src_value->data[0].v_pointer) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = photo_preview_ref (src_value->data[0].v_pointer);
#line 2151 "PhotoMetadata.c"
	} else {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		dest_value->data[0].v_pointer = NULL;
#line 2155 "PhotoMetadata.c"
	}
}


static gpointer value_photo_preview_peek_pointer (const GValue* value) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 2163 "PhotoMetadata.c"
}


static gchar* value_photo_preview_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (collect_values[0].v_pointer) {
#line 2170 "PhotoMetadata.c"
		PhotoPreview* object;
		object = collect_values[0].v_pointer;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (object->parent_instance.g_class == NULL) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 2177 "PhotoMetadata.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 2181 "PhotoMetadata.c"
		}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = photo_preview_ref (object);
#line 2185 "PhotoMetadata.c"
	} else {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 2189 "PhotoMetadata.c"
	}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 2193 "PhotoMetadata.c"
}


static gchar* value_photo_preview_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	PhotoPreview** object_p;
	object_p = collect_values[0].v_pointer;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!object_p) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 2204 "PhotoMetadata.c"
	}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!value->data[0].v_pointer) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = NULL;
#line 2210 "PhotoMetadata.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = value->data[0].v_pointer;
#line 2214 "PhotoMetadata.c"
	} else {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*object_p = photo_preview_ref (value->data[0].v_pointer);
#line 2218 "PhotoMetadata.c"
	}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 2222 "PhotoMetadata.c"
}


GParamSpec* param_spec_photo_preview (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecPhotoPreview* spec;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_PHOTO_PREVIEW), NULL);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return G_PARAM_SPEC (spec);
#line 2236 "PhotoMetadata.c"
}


gpointer value_get_photo_preview (const GValue* value) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PHOTO_PREVIEW), NULL);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return value->data[0].v_pointer;
#line 2245 "PhotoMetadata.c"
}


void value_set_photo_preview (GValue* value, gpointer v_object) {
	PhotoPreview* old;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PHOTO_PREVIEW));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_PHOTO_PREVIEW));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_preview_ref (value->data[0].v_pointer);
#line 2265 "PhotoMetadata.c"
	} else {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 2269 "PhotoMetadata.c"
	}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_preview_unref (old);
#line 2275 "PhotoMetadata.c"
	}
}


void value_take_photo_preview (GValue* value, gpointer v_object) {
	PhotoPreview* old;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_PHOTO_PREVIEW));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	old = value->data[0].v_pointer;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (v_object) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_PHOTO_PREVIEW));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = v_object;
#line 2294 "PhotoMetadata.c"
	} else {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value->data[0].v_pointer = NULL;
#line 2298 "PhotoMetadata.c"
	}
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (old) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_preview_unref (old);
#line 2304 "PhotoMetadata.c"
	}
}


static void photo_preview_class_init (PhotoPreviewClass * klass) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_preview_parent_class = g_type_class_peek_parent (klass);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((PhotoPreviewClass *) klass)->finalize = photo_preview_finalize;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_type_class_add_private (klass, sizeof (PhotoPreviewPrivate));
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((PhotoPreviewClass *) klass)->flatten = (GBytes* (*)(PhotoPreview*, GError**)) photo_preview_real_flatten;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((PhotoPreviewClass *) klass)->get_pixbuf = (GdkPixbuf* (*)(PhotoPreview*, GError**)) photo_preview_real_get_pixbuf;
#line 2320 "PhotoMetadata.c"
}


static void photo_preview_instance_init (PhotoPreview * self) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv = PHOTO_PREVIEW_GET_PRIVATE (self);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->ref_count = 1;
#line 2329 "PhotoMetadata.c"
}


static void photo_preview_finalize (PhotoPreview* obj) {
	PhotoPreview * self;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PHOTO_PREVIEW, PhotoPreview);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_signal_handlers_destroy (self);
#line 159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->name);
#line 162 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->mime_type);
#line 163 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->extension);
#line 2345 "PhotoMetadata.c"
}


GType photo_preview_get_type (void) {
	static volatile gsize photo_preview_type_id__volatile = 0;
	if (g_once_init_enter (&photo_preview_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_photo_preview_init, value_photo_preview_free_value, value_photo_preview_copy_value, value_photo_preview_peek_pointer, "p", value_photo_preview_collect_value, "p", value_photo_preview_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (PhotoPreviewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) photo_preview_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhotoPreview), 0, (GInstanceInitFunc) photo_preview_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType photo_preview_type_id;
		photo_preview_type_id = g_type_register_fundamental (g_type_fundamental_next (), "PhotoPreview", &g_define_type_info, &g_define_type_fundamental_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&photo_preview_type_id__volatile, photo_preview_type_id);
	}
	return photo_preview_type_id__volatile;
}


gpointer photo_preview_ref (gpointer instance) {
	PhotoPreview* self;
	self = instance;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&self->ref_count);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return instance;
#line 2370 "PhotoMetadata.c"
}


void photo_preview_unref (gpointer instance) {
	PhotoPreview* self;
	self = instance;
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		PHOTO_PREVIEW_GET_CLASS (self)->finalize (self);
#line 158 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 2383 "PhotoMetadata.c"
	}
}


GType photo_metadata_set_option_get_type (void) {
	static volatile gsize photo_metadata_set_option_type_id__volatile = 0;
	if (g_once_init_enter (&photo_metadata_set_option_type_id__volatile)) {
		static const GEnumValue values[] = {{PHOTO_METADATA_SET_OPTION_ALL_DOMAINS, "PHOTO_METADATA_SET_OPTION_ALL_DOMAINS", "all-domains"}, {PHOTO_METADATA_SET_OPTION_ONLY_IF_DOMAIN_PRESENT, "PHOTO_METADATA_SET_OPTION_ONLY_IF_DOMAIN_PRESENT", "only-if-domain-present"}, {PHOTO_METADATA_SET_OPTION_AT_LEAST_DEFAULT_DOMAIN, "PHOTO_METADATA_SET_OPTION_AT_LEAST_DEFAULT_DOMAIN", "at-least-default-domain"}, {0, NULL, NULL}};
		GType photo_metadata_set_option_type_id;
		photo_metadata_set_option_type_id = g_enum_register_static ("PhotoMetadataSetOption", values);
		g_once_init_leave (&photo_metadata_set_option_type_id__volatile, photo_metadata_set_option_type_id);
	}
	return photo_metadata_set_option_type_id__volatile;
}


PhotoMetadata* photo_metadata_construct (GType object_type) {
	PhotoMetadata* self = NULL;
#line 254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (PhotoMetadata*) media_metadata_construct (object_type);
#line 254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 2406 "PhotoMetadata.c"
}


PhotoMetadata* photo_metadata_new (void) {
#line 254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return photo_metadata_construct (TYPE_PHOTO_METADATA);
#line 2413 "PhotoMetadata.c"
}


static void photo_metadata_real_read_from_file (MediaMetadata* base, GFile* file, GError** error) {
	PhotoMetadata * self;
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2Metadata* _tmp1_ = NULL;
	GFile* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	GFile* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	ExifData* _tmp8_ = NULL;
	GFile* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
#line 257 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PHOTO_METADATA, PhotoMetadata);
#line 257 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_IS_FILE (file));
#line 258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = gexiv2_metadata_new ();
#line 258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->exiv2);
#line 258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exiv2 = _tmp0_;
#line 259 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 259 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = NULL;
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = self->priv->exiv2;
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = file;
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = g_file_get_path (_tmp2_);
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = _tmp3_;
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_open_path (_tmp1_, _tmp4_, &_inner_error_);
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp4_);
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 2463 "PhotoMetadata.c"
	}
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = file;
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = g_file_get_path (_tmp5_);
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = _tmp6_;
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = exif_data_new_from_file (_tmp7_);
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = _tmp8_;
#line 262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp7_);
#line 263 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = file;
#line 263 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = g_file_get_basename (_tmp9_);
#line 263 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->source_name);
#line 263 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->source_name = _tmp10_;
#line 2487 "PhotoMetadata.c"
}


void photo_metadata_write_to_file (PhotoMetadata* self, GFile* file, GError** error) {
	GExiv2Metadata* _tmp0_ = NULL;
	GFile* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	GError * _inner_error_ = NULL;
#line 266 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 266 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (G_IS_FILE (file));
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = file;
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = g_file_get_path (_tmp1_);
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_;
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_save_file (_tmp0_, _tmp3_, &_inner_error_);
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp3_);
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 2519 "PhotoMetadata.c"
	}
}


void photo_metadata_read_from_buffer (PhotoMetadata* self, guint8* buffer, int buffer_length1, gint length, GError** error) {
	gint _tmp0_ = 0;
	guint8* _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	gint _tmp3_ = 0;
	GExiv2Metadata* _tmp4_ = NULL;
	GExiv2Metadata* _tmp5_ = NULL;
	guint8* _tmp6_ = NULL;
	gint _tmp6__length1 = 0;
	gint _tmp7_ = 0;
	guint8* _tmp8_ = NULL;
	gint _tmp8__length1 = 0;
	gint _tmp9_ = 0;
	ExifData* _tmp10_ = NULL;
	gint _tmp11_ = 0;
	gchar* _tmp12_ = NULL;
	GError * _inner_error_ = NULL;
#line 270 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 271 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = length;
#line 271 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ <= 0) {
#line 2547 "PhotoMetadata.c"
		guint8* _tmp1_ = NULL;
		gint _tmp1__length1 = 0;
#line 272 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = buffer;
#line 272 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1__length1 = buffer_length1;
#line 272 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		length = _tmp1__length1;
#line 2556 "PhotoMetadata.c"
	}
#line 274 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = buffer;
#line 274 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2__length1 = buffer_length1;
#line 274 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = length;
#line 274 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_assert (_tmp2__length1 >= _tmp3_, "buffer.length >= length");
#line 276 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = gexiv2_metadata_new ();
#line 276 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->exiv2);
#line 276 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exiv2 = _tmp4_;
#line 277 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 277 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = NULL;
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = self->priv->exiv2;
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = buffer;
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6__length1 = buffer_length1;
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = length;
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_open_buf (_tmp5_, _tmp6_, (glong) _tmp7_, &_inner_error_);
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 279 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 2592 "PhotoMetadata.c"
	}
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = buffer;
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8__length1 = buffer_length1;
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = length;
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = exif_data_new_from_data (_tmp8_, (gsize) _tmp9_);
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 280 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = _tmp10_;
#line 281 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = length;
#line 281 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = g_strdup_printf ("<memory buffer %d bytes>", _tmp11_);
#line 281 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->source_name);
#line 281 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->source_name = _tmp12_;
#line 2614 "PhotoMetadata.c"
}


void photo_metadata_read_from_app1_segment (PhotoMetadata* self, GBytes* buffer, GError** error) {
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2Metadata* _tmp1_ = NULL;
	GBytes* _tmp2_ = NULL;
	gsize _tmp3_;
	guint8* _tmp4_ = NULL;
	GBytes* _tmp5_ = NULL;
	gsize _tmp6_ = 0UL;
	GBytes* _tmp7_ = NULL;
	gsize _tmp8_;
	guint8* _tmp9_ = NULL;
	GBytes* _tmp10_ = NULL;
	gsize _tmp11_ = 0UL;
	ExifData* _tmp12_ = NULL;
	GBytes* _tmp13_ = NULL;
	gsize _tmp14_ = 0UL;
	gchar* _tmp15_ = NULL;
	GError * _inner_error_ = NULL;
#line 284 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 284 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (buffer != NULL);
#line 285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = gexiv2_metadata_new ();
#line 285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->exiv2);
#line 285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exiv2 = _tmp0_;
#line 286 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 286 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = NULL;
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = self->priv->exiv2;
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = buffer;
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = g_bytes_get_data (_tmp2_, &_tmp3_);
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = buffer;
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = g_bytes_get_size (_tmp5_);
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_from_app1_segment (_tmp1_, _tmp4_, (glong) _tmp6_, &_inner_error_);
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_propagate_error (error, _inner_error_);
#line 288 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 2668 "PhotoMetadata.c"
	}
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = buffer;
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = g_bytes_get_data (_tmp7_, &_tmp8_);
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = buffer;
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = g_bytes_get_size (_tmp10_);
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = exif_data_new_from_data (_tmp9_, _tmp11_);
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 289 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = _tmp12_;
#line 290 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = buffer;
#line 290 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = g_bytes_get_size (_tmp13_);
#line 290 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = g_strdup_printf ("<app1 segment %zu bytes>", _tmp14_);
#line 290 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->source_name);
#line 290 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->source_name = _tmp15_;
#line 2694 "PhotoMetadata.c"
}


MetadataDomain photo_metadata_get_tag_domain (const gchar* tag) {
	MetadataDomain result = 0;
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	const gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
#line 293 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, 0);
#line 294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gexiv2_metadata_is_exif_tag (_tmp0_);
#line 294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp1_) {
#line 295 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = METADATA_DOMAIN_EXIF;
#line 295 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 2718 "PhotoMetadata.c"
	}
#line 297 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = tag;
#line 297 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = gexiv2_metadata_is_xmp_tag (_tmp2_);
#line 297 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 298 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = METADATA_DOMAIN_XMP;
#line 298 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 2730 "PhotoMetadata.c"
	}
#line 300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = tag;
#line 300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = gexiv2_metadata_is_iptc_tag (_tmp4_);
#line 300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp5_) {
#line 301 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = METADATA_DOMAIN_IPTC;
#line 301 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 2742 "PhotoMetadata.c"
	}
#line 303 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = METADATA_DOMAIN_UNKNOWN;
#line 303 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2748 "PhotoMetadata.c"
}


gboolean photo_metadata_has_domain (PhotoMetadata* self, MetadataDomain domain) {
	gboolean result = FALSE;
	MetadataDomain _tmp0_ = 0;
#line 306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = domain;
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	switch (_tmp0_) {
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_EXIF:
#line 2763 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp1_ = NULL;
			gboolean _tmp2_ = FALSE;
#line 309 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = self->priv->exiv2;
#line 309 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp2_ = gexiv2_metadata_has_exif (_tmp1_);
#line 309 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp2_;
#line 309 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2775 "PhotoMetadata.c"
		}
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_XMP:
#line 2779 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp3_ = NULL;
			gboolean _tmp4_ = FALSE;
#line 312 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = self->priv->exiv2;
#line 312 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = gexiv2_metadata_has_xmp (_tmp3_);
#line 312 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp4_;
#line 312 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2791 "PhotoMetadata.c"
		}
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_IPTC:
#line 2795 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp5_ = NULL;
			gboolean _tmp6_ = FALSE;
#line 315 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = self->priv->exiv2;
#line 315 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = gexiv2_metadata_has_iptc (_tmp5_);
#line 315 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp6_;
#line 315 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2807 "PhotoMetadata.c"
		}
		default:
#line 307 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_UNKNOWN:
#line 2812 "PhotoMetadata.c"
		{
#line 319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = FALSE;
#line 319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2818 "PhotoMetadata.c"
		}
	}
}


gboolean photo_metadata_has_exif (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 323 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_has_domain (self, METADATA_DOMAIN_EXIF);
#line 324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2835 "PhotoMetadata.c"
}


gboolean photo_metadata_has_xmp (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 327 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 328 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_has_domain (self, METADATA_DOMAIN_XMP);
#line 328 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 328 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2850 "PhotoMetadata.c"
}


gboolean photo_metadata_has_iptc (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 331 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 332 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_has_domain (self, METADATA_DOMAIN_IPTC);
#line 332 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 332 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2865 "PhotoMetadata.c"
}


gboolean photo_metadata_can_write_to_domain (PhotoMetadata* self, MetadataDomain domain) {
	gboolean result = FALSE;
	MetadataDomain _tmp0_ = 0;
#line 335 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = domain;
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	switch (_tmp0_) {
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_EXIF:
#line 2880 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp1_ = NULL;
			gboolean _tmp2_ = FALSE;
#line 338 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = self->priv->exiv2;
#line 338 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp2_ = gexiv2_metadata_get_supports_exif (_tmp1_);
#line 338 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp2_;
#line 338 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2892 "PhotoMetadata.c"
		}
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_XMP:
#line 2896 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp3_ = NULL;
			gboolean _tmp4_ = FALSE;
#line 341 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = self->priv->exiv2;
#line 341 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = gexiv2_metadata_get_supports_xmp (_tmp3_);
#line 341 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp4_;
#line 341 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2908 "PhotoMetadata.c"
		}
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_IPTC:
#line 2912 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp5_ = NULL;
			gboolean _tmp6_ = FALSE;
#line 344 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = self->priv->exiv2;
#line 344 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = gexiv2_metadata_get_supports_iptc (_tmp5_);
#line 344 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = _tmp6_;
#line 344 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2924 "PhotoMetadata.c"
		}
		default:
#line 336 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_UNKNOWN:
#line 2929 "PhotoMetadata.c"
		{
#line 348 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			result = FALSE;
#line 348 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			return result;
#line 2935 "PhotoMetadata.c"
		}
	}
}


gboolean photo_metadata_can_write_exif (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 352 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 353 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_can_write_to_domain (self, METADATA_DOMAIN_EXIF);
#line 353 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 353 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2952 "PhotoMetadata.c"
}


gboolean photo_metadata_can_write_xmp (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 356 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 357 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_can_write_to_domain (self, METADATA_DOMAIN_XMP);
#line 357 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 357 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2967 "PhotoMetadata.c"
}


gboolean photo_metadata_can_write_iptc (PhotoMetadata* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 360 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 361 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_can_write_to_domain (self, METADATA_DOMAIN_IPTC);
#line 361 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 361 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 2982 "PhotoMetadata.c"
}


gboolean photo_metadata_has_tag (PhotoMetadata* self, const gchar* tag) {
	gboolean result = FALSE;
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
#line 364 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 364 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, FALSE);
#line 365 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 365 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 365 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = gexiv2_metadata_has_tag (_tmp0_, _tmp1_);
#line 365 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp2_;
#line 365 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3005 "PhotoMetadata.c"
}


static GeeSet* photo_metadata_create_string_set (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify) {
	GeeSet* result = NULL;
	GCompareDataFunc _tmp0_ = NULL;
	void* _tmp0__target = NULL;
#line 368 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 370 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = compare_func;
#line 370 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__target = compare_func_target;
#line 370 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ == NULL) {
#line 3021 "PhotoMetadata.c"
		GeeHashSet* _tmp1_ = NULL;
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_SET, GeeSet);
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func = NULL;
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target = NULL;
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target_destroy_notify = NULL;
#line 371 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 3037 "PhotoMetadata.c"
	} else {
		GCompareDataFunc _tmp2_ = NULL;
		void* _tmp2__target = NULL;
		GDestroyNotify _tmp2__target_destroy_notify = NULL;
		GeeTreeSet* _tmp3_ = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = compare_func;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2__target = compare_func_target;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2__target_destroy_notify = compare_func_target_destroy_notify;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target_destroy_notify = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp2_, _tmp2__target, _tmp2__target_destroy_notify);
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_SET, GeeSet);
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target_destroy_notify = NULL;
#line 373 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 3069 "PhotoMetadata.c"
	}
#line 368 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 368 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 368 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 368 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 3079 "PhotoMetadata.c"
}


GeeCollection* photo_metadata_get_tags (PhotoMetadata* self, MetadataDomain domain, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify) {
	GeeCollection* result = NULL;
	gchar** tags = NULL;
	gint tags_length1 = 0;
	gint _tags_size_ = 0;
	MetadataDomain _tmp0_ = 0;
	gboolean _tmp10_ = FALSE;
	gchar** _tmp11_ = NULL;
	gint _tmp11__length1 = 0;
	GeeCollection* collection = NULL;
	GCompareDataFunc _tmp13_ = NULL;
	void* _tmp13__target = NULL;
	GDestroyNotify _tmp13__target_destroy_notify = NULL;
	GeeSet* _tmp14_ = NULL;
	gchar** _tmp15_ = NULL;
	gint _tmp15__length1 = 0;
#line 376 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 378 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	tags = NULL;
#line 378 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	tags_length1 = 0;
#line 378 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tags_size_ = tags_length1;
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = domain;
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	switch (_tmp0_) {
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_EXIF:
#line 3113 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp1_ = NULL;
			gchar** _tmp2_ = NULL;
			gchar** _tmp3_ = NULL;
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = self->priv->exiv2;
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = _tmp2_ = gexiv2_metadata_get_exif_tags (_tmp1_);
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = (_vala_array_free (tags, tags_length1, (GDestroyNotify) g_free), NULL);
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = _tmp3_;
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags_length1 = _vala_array_length (_tmp2_);
#line 381 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tags_size_ = tags_length1;
#line 382 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 3132 "PhotoMetadata.c"
		}
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_XMP:
#line 3136 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp4_ = NULL;
			gchar** _tmp5_ = NULL;
			gchar** _tmp6_ = NULL;
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = self->priv->exiv2;
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = _tmp5_ = gexiv2_metadata_get_xmp_tags (_tmp4_);
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = (_vala_array_free (tags, tags_length1, (GDestroyNotify) g_free), NULL);
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = _tmp6_;
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags_length1 = _vala_array_length (_tmp5_);
#line 385 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tags_size_ = tags_length1;
#line 386 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 3155 "PhotoMetadata.c"
		}
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_IPTC:
#line 3159 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp7_ = NULL;
			gchar** _tmp8_ = NULL;
			gchar** _tmp9_ = NULL;
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp7_ = self->priv->exiv2;
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp9_ = _tmp8_ = gexiv2_metadata_get_iptc_tags (_tmp7_);
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = (_vala_array_free (tags, tags_length1, (GDestroyNotify) g_free), NULL);
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags = _tmp9_;
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tags_length1 = _vala_array_length (_tmp8_);
#line 389 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tags_size_ = tags_length1;
#line 390 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 3178 "PhotoMetadata.c"
		}
		default:
#line 379 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		break;
#line 3183 "PhotoMetadata.c"
	}
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = tags;
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11__length1 = tags_length1;
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp11_ == NULL) {
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = TRUE;
#line 3193 "PhotoMetadata.c"
	} else {
		gchar** _tmp12_ = NULL;
		gint _tmp12__length1 = 0;
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = tags;
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12__length1 = tags_length1;
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = _tmp12__length1 == 0;
#line 3203 "PhotoMetadata.c"
	}
#line 393 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp10_) {
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tags = (_vala_array_free (tags, tags_length1, (GDestroyNotify) g_free), NULL);
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func = NULL;
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target = NULL;
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		compare_func_target_destroy_notify = NULL;
#line 394 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 3221 "PhotoMetadata.c"
	}
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = compare_func;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13__target = compare_func_target;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13__target_destroy_notify = compare_func_target_destroy_notify;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = photo_metadata_create_string_set (self, _tmp13_, _tmp13__target, _tmp13__target_destroy_notify);
#line 396 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	collection = G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_COLLECTION, GeeCollection);
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = tags;
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15__length1 = tags_length1;
#line 3243 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp15_;
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp15__length1;
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp15__length1; tag_it = tag_it + 1) {
#line 3255 "PhotoMetadata.c"
			gchar* _tmp16_ = NULL;
			gchar* tag = NULL;
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp16_ = g_strdup (tag_collection[tag_it]);
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp16_;
#line 3262 "PhotoMetadata.c"
			{
				GeeCollection* _tmp17_ = NULL;
				const gchar* _tmp18_ = NULL;
#line 398 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp17_ = collection;
#line 398 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp18_ = tag;
#line 398 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				gee_collection_add (_tmp17_, _tmp18_);
#line 397 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 3274 "PhotoMetadata.c"
			}
		}
	}
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = collection;
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	tags = (_vala_array_free (tags, tags_length1, (GDestroyNotify) g_free), NULL);
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 400 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3292 "PhotoMetadata.c"
}


GeeCollection* photo_metadata_get_all_tags (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify) {
	GeeCollection* result = NULL;
	GeeCollection* all_tags = NULL;
	GCompareDataFunc _tmp0_ = NULL;
	void* _tmp0__target = NULL;
	GDestroyNotify _tmp0__target_destroy_notify = NULL;
	GeeSet* _tmp1_ = NULL;
	GeeCollection* exif_tags = NULL;
	GeeCollection* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	GeeCollection* _tmp4_ = NULL;
	GeeCollection* xmp_tags = NULL;
	GeeCollection* _tmp10_ = NULL;
	gboolean _tmp11_ = FALSE;
	GeeCollection* _tmp12_ = NULL;
	GeeCollection* iptc_tags = NULL;
	GeeCollection* _tmp18_ = NULL;
	gboolean _tmp19_ = FALSE;
	GeeCollection* _tmp20_ = NULL;
	GeeCollection* _tmp26_ = NULL;
	GeeCollection* _tmp27_ = NULL;
	gint _tmp28_ = 0;
	gint _tmp29_ = 0;
	GeeCollection* _tmp31_ = NULL;
#line 403 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = compare_func;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__target = compare_func_target;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__target_destroy_notify = compare_func_target_destroy_notify;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_create_string_set (self, _tmp0_, _tmp0__target, _tmp0__target_destroy_notify);
#line 405 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	all_tags = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_COLLECTION, GeeCollection);
#line 407 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = photo_metadata_get_tags (self, METADATA_DOMAIN_EXIF, NULL, NULL, NULL);
#line 407 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	exif_tags = _tmp2_;
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = exif_tags;
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ != NULL) {
#line 3346 "PhotoMetadata.c"
		GeeCollection* _tmp5_ = NULL;
		gint _tmp6_ = 0;
		gint _tmp7_ = 0;
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = exif_tags;
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = gee_collection_get_size (_tmp5_);
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = _tmp6_;
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp7_ > 0;
#line 3358 "PhotoMetadata.c"
	} else {
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = FALSE;
#line 3362 "PhotoMetadata.c"
	}
#line 408 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 3366 "PhotoMetadata.c"
		GeeCollection* _tmp8_ = NULL;
		GeeCollection* _tmp9_ = NULL;
#line 409 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp8_ = all_tags;
#line 409 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = exif_tags;
#line 409 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		gee_collection_add_all (_tmp8_, _tmp9_);
#line 3375 "PhotoMetadata.c"
	}
#line 411 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = photo_metadata_get_tags (self, METADATA_DOMAIN_XMP, NULL, NULL, NULL);
#line 411 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	xmp_tags = _tmp10_;
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = xmp_tags;
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp12_ != NULL) {
#line 3385 "PhotoMetadata.c"
		GeeCollection* _tmp13_ = NULL;
		gint _tmp14_ = 0;
		gint _tmp15_ = 0;
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = xmp_tags;
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = gee_collection_get_size (_tmp13_);
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = _tmp14_;
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = _tmp15_ > 0;
#line 3397 "PhotoMetadata.c"
	} else {
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = FALSE;
#line 3401 "PhotoMetadata.c"
	}
#line 412 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp11_) {
#line 3405 "PhotoMetadata.c"
		GeeCollection* _tmp16_ = NULL;
		GeeCollection* _tmp17_ = NULL;
#line 413 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp16_ = all_tags;
#line 413 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17_ = xmp_tags;
#line 413 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		gee_collection_add_all (_tmp16_, _tmp17_);
#line 3414 "PhotoMetadata.c"
	}
#line 415 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp18_ = photo_metadata_get_tags (self, METADATA_DOMAIN_IPTC, NULL, NULL, NULL);
#line 415 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	iptc_tags = _tmp18_;
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp20_ = iptc_tags;
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp20_ != NULL) {
#line 3424 "PhotoMetadata.c"
		GeeCollection* _tmp21_ = NULL;
		gint _tmp22_ = 0;
		gint _tmp23_ = 0;
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp21_ = iptc_tags;
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = gee_collection_get_size (_tmp21_);
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = _tmp22_;
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = _tmp23_ > 0;
#line 3436 "PhotoMetadata.c"
	} else {
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = FALSE;
#line 3440 "PhotoMetadata.c"
	}
#line 416 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp19_) {
#line 3444 "PhotoMetadata.c"
		GeeCollection* _tmp24_ = NULL;
		GeeCollection* _tmp25_ = NULL;
#line 417 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp24_ = all_tags;
#line 417 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp25_ = iptc_tags;
#line 417 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		gee_collection_add_all (_tmp24_, _tmp25_);
#line 3453 "PhotoMetadata.c"
	}
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp27_ = all_tags;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp28_ = gee_collection_get_size (_tmp27_);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp29_ = _tmp28_;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp29_ > 0) {
#line 3463 "PhotoMetadata.c"
		GeeCollection* _tmp30_ = NULL;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp30_ = all_tags;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = _tmp30_;
#line 3469 "PhotoMetadata.c"
	} else {
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = NULL;
#line 3473 "PhotoMetadata.c"
	}
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp31_ = _g_object_ref0 (_tmp26_);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp31_;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (iptc_tags);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (xmp_tags);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (exif_tags);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (all_tags);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 419 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3497 "PhotoMetadata.c"
}


gchar* photo_metadata_get_tag_label (PhotoMetadata* self, const gchar* tag) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
#line 422 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 422 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 423 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 423 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gexiv2_metadata_get_tag_label (_tmp0_);
#line 423 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = g_strdup (_tmp1_);
#line 423 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp2_;
#line 423 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3520 "PhotoMetadata.c"
}


gchar* photo_metadata_get_tag_description (PhotoMetadata* self, const gchar* tag) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
#line 426 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 426 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 427 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 427 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gexiv2_metadata_get_tag_description (_tmp0_);
#line 427 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = g_strdup (_tmp1_);
#line 427 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp2_;
#line 427 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3543 "PhotoMetadata.c"
}


gchar* photo_metadata_get_string (PhotoMetadata* self, const gchar* tag, PrepareInputTextOptions options) {
	gchar* result = NULL;
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	PrepareInputTextOptions _tmp4_ = 0;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
#line 430 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 430 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = gexiv2_metadata_get_tag_string (_tmp0_, _tmp1_);
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = options;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = prepare_input_text (_tmp3_, _tmp4_, DEFAULT_USER_TEXT_INPUT_LENGTH);
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = _tmp5_;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp3_);
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp6_;
#line 431 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3580 "PhotoMetadata.c"
}


gchar* photo_metadata_get_string_interpreted (PhotoMetadata* self, const gchar* tag, PrepareInputTextOptions options) {
	gchar* result = NULL;
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	PrepareInputTextOptions _tmp4_ = 0;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
#line 434 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 434 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = gexiv2_metadata_get_tag_interpreted_string (_tmp0_, _tmp1_);
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = options;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = prepare_input_text (_tmp3_, _tmp4_, DEFAULT_USER_TEXT_INPUT_LENGTH);
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = _tmp5_;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp3_);
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp6_;
#line 435 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3617 "PhotoMetadata.c"
}


gchar* photo_metadata_get_first_string (PhotoMetadata* self, gchar** tags, int tags_length1) {
	gchar* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 438 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 3631 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 3643 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 3650 "PhotoMetadata.c"
			{
				gchar* value = NULL;
				const gchar* _tmp2_ = NULL;
				gchar* _tmp3_ = NULL;
				const gchar* _tmp4_ = NULL;
#line 440 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 440 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = photo_metadata_get_string (self, _tmp2_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 440 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				value = _tmp3_;
#line 441 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = value;
#line 441 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_ != NULL) {
#line 442 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = value;
#line 442 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 442 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 3672 "PhotoMetadata.c"
				}
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 439 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 3678 "PhotoMetadata.c"
			}
		}
	}
#line 445 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 445 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3686 "PhotoMetadata.c"
}


gchar* photo_metadata_get_first_string_interpreted (PhotoMetadata* self, gchar** tags, int tags_length1) {
	gchar* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 448 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 3700 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 3712 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 3719 "PhotoMetadata.c"
			{
				gchar* value = NULL;
				const gchar* _tmp2_ = NULL;
				gchar* _tmp3_ = NULL;
				const gchar* _tmp4_ = NULL;
#line 450 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 450 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = photo_metadata_get_string_interpreted (self, _tmp2_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 450 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				value = _tmp3_;
#line 451 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = value;
#line 451 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_ != NULL) {
#line 452 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = value;
#line 452 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 452 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 3741 "PhotoMetadata.c"
				}
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 449 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 3747 "PhotoMetadata.c"
			}
		}
	}
#line 455 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 455 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3755 "PhotoMetadata.c"
}


GeeList* photo_metadata_get_string_multiple (PhotoMetadata* self, const gchar* tag) {
	GeeList* result = NULL;
	gchar** values = NULL;
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar** _tmp2_ = NULL;
	gchar** _tmp3_ = NULL;
	gint values_length1 = 0;
	gint _values_size_ = 0;
	gboolean _tmp4_ = FALSE;
	gchar** _tmp5_ = NULL;
	gint _tmp5__length1 = 0;
	GeeList* list = NULL;
	GeeArrayList* _tmp7_ = NULL;
	GeeHashSet* collection = NULL;
	GeeHashSet* _tmp8_ = NULL;
	gchar** _tmp9_ = NULL;
	gint _tmp9__length1 = 0;
	GeeList* _tmp22_ = NULL;
	GeeList* _tmp23_ = NULL;
	gint _tmp24_ = 0;
	gint _tmp25_ = 0;
	GeeList* _tmp27_ = NULL;
#line 464 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 464 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_ = gexiv2_metadata_get_tag_multiple (_tmp0_, _tmp1_);
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values = _tmp3_;
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values_length1 = _vala_array_length (_tmp2_);
#line 465 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_values_size_ = values_length1;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = values;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5__length1 = values_length1;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp5_ == NULL) {
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = TRUE;
#line 3806 "PhotoMetadata.c"
	} else {
		gchar** _tmp6_ = NULL;
		gint _tmp6__length1 = 0;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = values;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6__length1 = values_length1;
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = _tmp6__length1 == 0;
#line 3816 "PhotoMetadata.c"
	}
#line 466 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_) {
#line 467 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 467 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		values = (_vala_array_free (values, values_length1, (GDestroyNotify) g_free), NULL);
#line 467 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 3826 "PhotoMetadata.c"
	}
#line 469 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 469 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	list = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_LIST, GeeList);
#line 471 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
#line 471 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	collection = _tmp8_;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = values;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9__length1 = values_length1;
#line 3840 "PhotoMetadata.c"
	{
		gchar** value_collection = NULL;
		gint value_collection_length1 = 0;
		gint _value_collection_size_ = 0;
		gint value_it = 0;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value_collection = _tmp9_;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		value_collection_length1 = _tmp9__length1;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (value_it = 0; value_it < _tmp9__length1; value_it = value_it + 1) {
#line 3852 "PhotoMetadata.c"
			gchar* _tmp10_ = NULL;
			gchar* value = NULL;
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp10_ = g_strdup (value_collection[value_it]);
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			value = _tmp10_;
#line 3859 "PhotoMetadata.c"
			{
				gchar* prepped = NULL;
				const gchar* _tmp11_ = NULL;
				gchar* _tmp12_ = NULL;
				gboolean _tmp13_ = FALSE;
				const gchar* _tmp14_ = NULL;
#line 473 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11_ = value;
#line 473 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = prepare_input_text (_tmp11_, PHOTO_METADATA_PREPARE_STRING_OPTIONS, DEFAULT_USER_TEXT_INPUT_LENGTH);
#line 473 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				prepped = _tmp12_;
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp14_ = prepped;
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp14_ != NULL) {
#line 3876 "PhotoMetadata.c"
					GeeHashSet* _tmp15_ = NULL;
					const gchar* _tmp16_ = NULL;
					gboolean _tmp17_ = FALSE;
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp15_ = collection;
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp16_ = prepped;
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp17_ = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp16_);
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp13_ = !_tmp17_;
#line 3888 "PhotoMetadata.c"
				} else {
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp13_ = FALSE;
#line 3892 "PhotoMetadata.c"
				}
#line 476 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp13_) {
#line 3896 "PhotoMetadata.c"
					GeeList* _tmp18_ = NULL;
					const gchar* _tmp19_ = NULL;
					GeeHashSet* _tmp20_ = NULL;
					const gchar* _tmp21_ = NULL;
#line 477 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp18_ = list;
#line 477 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp19_ = prepped;
#line 477 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_COLLECTION, GeeCollection), _tmp19_);
#line 478 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp20_ = collection;
#line 478 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp21_ = prepped;
#line 478 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp21_);
#line 3913 "PhotoMetadata.c"
				}
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (prepped);
#line 472 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 3919 "PhotoMetadata.c"
			}
		}
	}
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp23_ = list;
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, GEE_TYPE_COLLECTION, GeeCollection));
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp25_ = _tmp24_;
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp25_ > 0) {
#line 3931 "PhotoMetadata.c"
		GeeList* _tmp26_ = NULL;
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = list;
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = _tmp26_;
#line 3937 "PhotoMetadata.c"
	} else {
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = NULL;
#line 3941 "PhotoMetadata.c"
	}
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp27_ = _g_object_ref0 (_tmp22_);
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp27_;
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (collection);
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (list);
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values = (_vala_array_free (values, values_length1, (GDestroyNotify) g_free), NULL);
#line 482 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 3955 "PhotoMetadata.c"
}


GeeList* photo_metadata_get_first_string_multiple (PhotoMetadata* self, gchar** tags, int tags_length1) {
	GeeList* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 491 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 3969 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 3981 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 3988 "PhotoMetadata.c"
			{
				GeeList* values = NULL;
				const gchar* _tmp2_ = NULL;
				GeeList* _tmp3_ = NULL;
				gboolean _tmp4_ = FALSE;
				GeeList* _tmp5_ = NULL;
#line 493 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 493 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = photo_metadata_get_string_multiple (self, _tmp2_);
#line 493 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				values = _tmp3_;
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = values;
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp5_ != NULL) {
#line 4005 "PhotoMetadata.c"
					GeeList* _tmp6_ = NULL;
					gint _tmp7_ = 0;
					gint _tmp8_ = 0;
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp6_ = values;
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_COLLECTION, GeeCollection));
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp8_ = _tmp7_;
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp4_ = _tmp8_ > 0;
#line 4017 "PhotoMetadata.c"
				} else {
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp4_ = FALSE;
#line 4021 "PhotoMetadata.c"
				}
#line 494 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_) {
#line 495 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = values;
#line 495 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 495 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 4031 "PhotoMetadata.c"
				}
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (values);
#line 492 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 4037 "PhotoMetadata.c"
			}
		}
	}
#line 498 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 498 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 4045 "PhotoMetadata.c"
}


void photo_metadata_set_string (PhotoMetadata* self, const gchar* tag, const gchar* value, PrepareInputTextOptions options) {
	gchar* prepped = NULL;
	const gchar* _tmp0_ = NULL;
	PrepareInputTextOptions _tmp1_ = 0;
	gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	GExiv2Metadata* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	gboolean _tmp9_ = FALSE;
#line 501 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 501 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 501 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (value != NULL);
#line 502 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = value;
#line 502 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = options;
#line 502 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = prepare_input_text (_tmp0_, _tmp1_, DEFAULT_USER_TEXT_INPUT_LENGTH);
#line 502 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	prepped = _tmp2_;
#line 503 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = prepped;
#line 503 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_ == NULL) {
#line 4077 "PhotoMetadata.c"
		const gchar* _tmp4_ = NULL;
		const gchar* _tmp5_ = NULL;
#line 504 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = tag;
#line 504 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = value;
#line 504 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:504: Not setting tag %s to string %s: invalid UTF-8", _tmp4_, _tmp5_);
#line 506 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (prepped);
#line 506 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 4090 "PhotoMetadata.c"
	}
#line 509 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = self->priv->exiv2;
#line 509 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = tag;
#line 509 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = prepped;
#line 509 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = gexiv2_metadata_set_tag_string (_tmp6_, _tmp7_, _tmp8_);
#line 509 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp9_) {
#line 4102 "PhotoMetadata.c"
		const gchar* _tmp10_ = NULL;
		const gchar* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
#line 510 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = tag;
#line 510 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = value;
#line 510 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = self->priv->source_name;
#line 510 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:510: Unable to set tag %s to string %s from source " \
"%s", _tmp10_, _tmp11_, _tmp12_);
#line 4114 "PhotoMetadata.c"
	}
#line 501 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (prepped);
#line 4118 "PhotoMetadata.c"
}


static void photo_metadata_set_all_generic (PhotoMetadata* self, gchar** tags, int tags_length1, PhotoMetadataSetOption option, PhotoMetadataSetGenericValue setter, void* setter_target) {
	gboolean written = FALSE;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	PhotoMetadataSetOption _tmp11_ = 0;
#line 515 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 516 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	written = FALSE;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 4137 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 4149 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 4156 "PhotoMetadata.c"
			{
				gboolean _tmp2_ = FALSE;
				PhotoMetadataSetOption _tmp3_ = 0;
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = option;
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp3_ == PHOTO_METADATA_SET_OPTION_ALL_DOMAINS) {
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp2_ = TRUE;
#line 4166 "PhotoMetadata.c"
				} else {
					const gchar* _tmp4_ = NULL;
					MetadataDomain _tmp5_ = 0;
					gboolean _tmp6_ = FALSE;
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp4_ = tag;
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp5_ = photo_metadata_get_tag_domain (_tmp4_);
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp6_ = photo_metadata_has_domain (self, _tmp5_);
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp2_ = _tmp6_;
#line 4179 "PhotoMetadata.c"
				}
#line 518 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp2_) {
#line 4183 "PhotoMetadata.c"
					PhotoMetadataSetGenericValue _tmp7_ = NULL;
					void* _tmp7__target = NULL;
					const gchar* _tmp8_ = NULL;
#line 519 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = setter;
#line 519 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7__target = setter_target;
#line 519 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp8_ = tag;
#line 519 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ (_tmp8_, _tmp7__target);
#line 520 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					written = TRUE;
#line 4197 "PhotoMetadata.c"
				}
#line 517 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 4201 "PhotoMetadata.c"
			}
		}
	}
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = option;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp11_ == PHOTO_METADATA_SET_OPTION_AT_LEAST_DEFAULT_DOMAIN) {
#line 4209 "PhotoMetadata.c"
		gboolean _tmp12_ = FALSE;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = written;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = !_tmp12_;
#line 4215 "PhotoMetadata.c"
	} else {
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = FALSE;
#line 4219 "PhotoMetadata.c"
	}
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp10_) {
#line 4223 "PhotoMetadata.c"
		gchar** _tmp13_ = NULL;
		gint _tmp13__length1 = 0;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = tags;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13__length1 = tags_length1;
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = _tmp13__length1 > 0;
#line 4232 "PhotoMetadata.c"
	} else {
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = FALSE;
#line 4236 "PhotoMetadata.c"
	}
#line 524 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp9_) {
#line 4240 "PhotoMetadata.c"
		MetadataDomain default_domain = 0;
		gchar** _tmp14_ = NULL;
		gint _tmp14__length1 = 0;
		const gchar* _tmp15_ = NULL;
		MetadataDomain _tmp16_ = 0;
		PhotoMetadataSetGenericValue _tmp17_ = NULL;
		void* _tmp17__target = NULL;
		gchar** _tmp18_ = NULL;
		gint _tmp18__length1 = 0;
		const gchar* _tmp19_ = NULL;
#line 525 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = tags;
#line 525 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14__length1 = tags_length1;
#line 525 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = _tmp14_[0];
#line 525 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp16_ = photo_metadata_get_tag_domain (_tmp15_);
#line 525 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		default_domain = _tmp16_;
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17_ = setter;
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17__target = setter_target;
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18_ = tags;
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18__length1 = tags_length1;
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = _tmp18_[0];
#line 528 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17_ (_tmp19_, _tmp17__target);
#line 4273 "PhotoMetadata.c"
		{
			gint ctr = 0;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			ctr = 1;
#line 4278 "PhotoMetadata.c"
			{
				gboolean _tmp20_ = FALSE;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp20_ = TRUE;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				while (TRUE) {
#line 4285 "PhotoMetadata.c"
					gint _tmp22_ = 0;
					gchar** _tmp23_ = NULL;
					gint _tmp23__length1 = 0;
					gchar** _tmp24_ = NULL;
					gint _tmp24__length1 = 0;
					gint _tmp25_ = 0;
					const gchar* _tmp26_ = NULL;
					MetadataDomain _tmp27_ = 0;
					MetadataDomain _tmp28_ = 0;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (!_tmp20_) {
#line 4297 "PhotoMetadata.c"
						gint _tmp21_ = 0;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp21_ = ctr;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						ctr = _tmp21_ + 1;
#line 4303 "PhotoMetadata.c"
					}
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp20_ = FALSE;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp22_ = ctr;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp23_ = tags;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp23__length1 = tags_length1;
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (!(_tmp22_ < _tmp23__length1)) {
#line 531 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						break;
#line 4317 "PhotoMetadata.c"
					}
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp24_ = tags;
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp24__length1 = tags_length1;
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp25_ = ctr;
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp26_ = _tmp24_[_tmp25_];
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp27_ = photo_metadata_get_tag_domain (_tmp26_);
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp28_ = default_domain;
#line 532 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (_tmp27_ == _tmp28_) {
#line 4333 "PhotoMetadata.c"
						PhotoMetadataSetGenericValue _tmp29_ = NULL;
						void* _tmp29__target = NULL;
						gchar** _tmp30_ = NULL;
						gint _tmp30__length1 = 0;
						gint _tmp31_ = 0;
						const gchar* _tmp32_ = NULL;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp29_ = setter;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp29__target = setter_target;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp30_ = tags;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp30__length1 = tags_length1;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp31_ = ctr;
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp32_ = _tmp30_[_tmp31_];
#line 533 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp29_ (_tmp32_, _tmp29__target);
#line 4354 "PhotoMetadata.c"
					}
				}
			}
		}
	}
}


static Block1Data* block1_data_ref (Block1Data* _data1_) {
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data1_->_ref_count_);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data1_;
#line 4368 "PhotoMetadata.c"
}


static void block1_data_unref (void * _userdata_) {
	Block1Data* _data1_;
	_data1_ = (Block1Data*) _userdata_;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
#line 4377 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data1_->self;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_data1_->value);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block1Data, _data1_);
#line 4387 "PhotoMetadata.c"
	}
}


static void __lambda5_ (Block1Data* _data1_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data1_->self;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data1_->value;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string (self, _tmp0_, _tmp1_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 4406 "PhotoMetadata.c"
}


static void ___lambda5__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	__lambda5_ (self, tag);
#line 4413 "PhotoMetadata.c"
}


void photo_metadata_set_all_string (PhotoMetadata* self, gchar** tags, int tags_length1, const gchar* value, PhotoMetadataSetOption option) {
	Block1Data* _data1_;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar** _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	PhotoMetadataSetOption _tmp3_ = 0;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (value != NULL);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data1_ = g_slice_new0 (Block1Data);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data1_->_ref_count_ = 1;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data1_->self = media_metadata_ref (self);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = value;
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_data1_->value);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data1_->value = _tmp1_;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = tags;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2__length1 = tags_length1;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = option;
#line 539 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_all_generic (self, _tmp2_, _tmp2__length1, _tmp3_, ___lambda5__photo_metadata_set_generic_value, _data1_);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block1_data_unref (_data1_);
#line 538 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data1_ = NULL;
#line 4454 "PhotoMetadata.c"
}


static void _vala_array_add45 (gchar*** array, int* length, int* size, gchar* value) {
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if ((*length) == (*size)) {
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*size = (*size) ? (2 * (*size)) : 4;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*array = g_renew (gchar*, *array, (*size) + 1);
#line 4465 "PhotoMetadata.c"
	}
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(*array)[(*length)++] = value;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(*array)[*length] = NULL;
#line 4471 "PhotoMetadata.c"
}


static void _vala_array_add46 (gchar*** array, int* length, int* size, gchar* value) {
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if ((*length) == (*size)) {
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*size = (*size) ? (2 * (*size)) : 4;
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*array = g_renew (gchar*, *array, (*size) + 1);
#line 4482 "PhotoMetadata.c"
	}
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(*array)[(*length)++] = value;
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(*array)[*length] = NULL;
#line 4488 "PhotoMetadata.c"
}


void photo_metadata_set_string_multiple (PhotoMetadata* self, const gchar* tag, GeeCollection* collection) {
	gchar** values = NULL;
	gchar** _tmp0_ = NULL;
	gint values_length1 = 0;
	gint _values_size_ = 0;
	gchar** _tmp15_ = NULL;
	gint _tmp15__length1 = 0;
	gchar** _tmp16_ = NULL;
	gint _tmp16__length1 = 0;
	GExiv2Metadata* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	gchar** _tmp19_ = NULL;
	gint _tmp19__length1 = 0;
	gboolean _tmp20_ = FALSE;
#line 542 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 542 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 542 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (GEE_IS_COLLECTION (collection));
#line 543 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = g_new0 (gchar*, 0 + 1);
#line 543 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values = _tmp0_;
#line 543 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values_length1 = 0;
#line 543 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_values_size_ = values_length1;
#line 4520 "PhotoMetadata.c"
	{
		GeeIterator* _value_it = NULL;
		GeeCollection* _tmp1_ = NULL;
		GeeIterator* _tmp2_ = NULL;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = collection;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_value_it = _tmp2_;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		while (TRUE) {
#line 4533 "PhotoMetadata.c"
			GeeIterator* _tmp3_ = NULL;
			gboolean _tmp4_ = FALSE;
			gchar* value = NULL;
			GeeIterator* _tmp5_ = NULL;
			gpointer _tmp6_ = NULL;
			gchar* prepped = NULL;
			const gchar* _tmp7_ = NULL;
			gchar* _tmp8_ = NULL;
			const gchar* _tmp9_ = NULL;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = _value_it;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = gee_iterator_next (_tmp3_);
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			if (!_tmp4_) {
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				break;
#line 4551 "PhotoMetadata.c"
			}
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = _value_it;
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			value = (gchar*) _tmp6_;
#line 545 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp7_ = value;
#line 545 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp8_ = prepare_input_text (_tmp7_, PHOTO_METADATA_PREPARE_STRING_OPTIONS, -1);
#line 545 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			prepped = _tmp8_;
#line 546 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp9_ = prepped;
#line 546 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			if (_tmp9_ != NULL) {
#line 4569 "PhotoMetadata.c"
				gchar** _tmp10_ = NULL;
				gint _tmp10__length1 = 0;
				const gchar* _tmp11_ = NULL;
				gchar* _tmp12_ = NULL;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = values;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10__length1 = values_length1;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11_ = prepped;
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = g_strdup (_tmp11_);
#line 547 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_vala_array_add45 (&values, &values_length1, &_values_size_, _tmp12_);
#line 4584 "PhotoMetadata.c"
			} else {
				const gchar* _tmp13_ = NULL;
				const gchar* _tmp14_ = NULL;
#line 549 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp13_ = value;
#line 549 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp14_ = tag;
#line 549 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				g_warning ("PhotoMetadata.vala:549: Unable to set string %s to %s: invalid UTF-8", _tmp13_, _tmp14_);
#line 4594 "PhotoMetadata.c"
			}
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (prepped);
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (value);
#line 4600 "PhotoMetadata.c"
		}
#line 544 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_value_it);
#line 4604 "PhotoMetadata.c"
	}
#line 552 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = values;
#line 552 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15__length1 = values_length1;
#line 552 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp15__length1 == 0) {
#line 553 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		values = (_vala_array_free (values, values_length1, (GDestroyNotify) g_free), NULL);
#line 553 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 4616 "PhotoMetadata.c"
	}
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp16_ = values;
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp16__length1 = values_length1;
#line 559 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_array_add46 (&values, &values_length1, &_values_size_, NULL);
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp17_ = self->priv->exiv2;
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp18_ = tag;
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_ = values;
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19__length1 = values_length1;
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp20_ = gexiv2_metadata_set_tag_multiple (_tmp17_, _tmp18_, _tmp19_);
#line 561 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp20_) {
#line 4636 "PhotoMetadata.c"
		gchar** _tmp21_ = NULL;
		gint _tmp21__length1 = 0;
		const gchar* _tmp22_ = NULL;
		const gchar* _tmp23_ = NULL;
#line 562 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp21_ = values;
#line 562 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp21__length1 = values_length1;
#line 562 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = tag;
#line 562 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = self->priv->source_name;
#line 562 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:562: Unable to set %d strings to tag %s from source" \
" %s", _tmp21__length1, _tmp22_, _tmp23_);
#line 4651 "PhotoMetadata.c"
	}
#line 542 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	values = (_vala_array_free (values, values_length1, (GDestroyNotify) g_free), NULL);
#line 4655 "PhotoMetadata.c"
}


static Block2Data* block2_data_ref (Block2Data* _data2_) {
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data2_->_ref_count_);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data2_;
#line 4664 "PhotoMetadata.c"
}


static void block2_data_unref (void * _userdata_) {
	Block2Data* _data2_;
	_data2_ = (Block2Data*) _userdata_;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
#line 4673 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data2_->self;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_data2_->values);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block2Data, _data2_);
#line 4683 "PhotoMetadata.c"
	}
}


static void __lambda6_ (Block2Data* _data2_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	GeeCollection* _tmp1_ = NULL;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data2_->self;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data2_->values;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string_multiple (self, _tmp0_, _tmp1_);
#line 4702 "PhotoMetadata.c"
}


static void ___lambda6__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	__lambda6_ (self, tag);
#line 4709 "PhotoMetadata.c"
}


void photo_metadata_set_all_string_multiple (PhotoMetadata* self, gchar** tags, int tags_length1, GeeCollection* values, PhotoMetadataSetOption option) {
	Block2Data* _data2_;
	GeeCollection* _tmp0_ = NULL;
	GeeCollection* _tmp1_ = NULL;
	gchar** _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	PhotoMetadataSetOption _tmp3_ = 0;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (GEE_IS_COLLECTION (values));
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data2_ = g_slice_new0 (Block2Data);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data2_->_ref_count_ = 1;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data2_->self = media_metadata_ref (self);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = values;
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _g_object_ref0 (_tmp0_);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (_data2_->values);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data2_->values = _tmp1_;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = tags;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2__length1 = tags_length1;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = option;
#line 566 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_all_generic (self, _tmp2_, _tmp2__length1, _tmp3_, ___lambda6__photo_metadata_set_generic_value, _data2_);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block2_data_unref (_data2_);
#line 565 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data2_ = NULL;
#line 4750 "PhotoMetadata.c"
}


gboolean photo_metadata_get_long (PhotoMetadata* self, const gchar* tag, glong* value) {
	glong _vala_value = 0L;
	gboolean result = FALSE;
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	GExiv2Metadata* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	glong _tmp4_ = 0L;
#line 569 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 569 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, FALSE);
#line 570 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 570 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_has_tag (self, _tmp0_);
#line 570 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp1_) {
#line 571 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_vala_value = (glong) 0;
#line 573 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = FALSE;
#line 573 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (value) {
#line 573 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*value = _vala_value;
#line 4780 "PhotoMetadata.c"
		}
#line 573 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 4784 "PhotoMetadata.c"
	}
#line 576 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = self->priv->exiv2;
#line 576 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = tag;
#line 576 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = gexiv2_metadata_get_tag_long (_tmp2_, _tmp3_);
#line 576 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_value = _tmp4_;
#line 578 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = TRUE;
#line 578 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (value) {
#line 578 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*value = _vala_value;
#line 4800 "PhotoMetadata.c"
	}
#line 578 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 4804 "PhotoMetadata.c"
}


gboolean photo_metadata_get_first_long (PhotoMetadata* self, gchar** tags, int tags_length1, glong* value) {
	glong _vala_value = 0L;
	gboolean result = FALSE;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 581 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 4819 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 4831 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 4838 "PhotoMetadata.c"
			{
				const gchar* _tmp2_ = NULL;
				glong _tmp3_ = 0L;
				gboolean _tmp4_ = FALSE;
#line 583 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 583 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = photo_metadata_get_long (self, _tmp2_, &_tmp3_);
#line 583 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_vala_value = _tmp3_;
#line 583 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_) {
#line 584 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = TRUE;
#line 584 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 584 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (value) {
#line 584 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						*value = _vala_value;
#line 4859 "PhotoMetadata.c"
					}
#line 584 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 4863 "PhotoMetadata.c"
				}
#line 582 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 4867 "PhotoMetadata.c"
			}
		}
	}
#line 587 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_value = (glong) 0;
#line 589 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = FALSE;
#line 589 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (value) {
#line 589 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*value = _vala_value;
#line 4879 "PhotoMetadata.c"
	}
#line 589 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 4883 "PhotoMetadata.c"
}


void photo_metadata_set_long (PhotoMetadata* self, const gchar* tag, glong value) {
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	glong _tmp2_ = 0L;
	gboolean _tmp3_ = FALSE;
#line 592 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 592 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 593 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 593 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 593 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = value;
#line 593 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = gexiv2_metadata_set_tag_long (_tmp0_, _tmp1_, _tmp2_);
#line 593 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp3_) {
#line 4906 "PhotoMetadata.c"
		const gchar* _tmp4_ = NULL;
		glong _tmp5_ = 0L;
		const gchar* _tmp6_ = NULL;
#line 594 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = tag;
#line 594 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = value;
#line 594 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = self->priv->source_name;
#line 594 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:594: Unable to set tag %s to long %ld from source %" \
"s", _tmp4_, _tmp5_, _tmp6_);
#line 4918 "PhotoMetadata.c"
	}
}


static Block3Data* block3_data_ref (Block3Data* _data3_) {
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data3_->_ref_count_);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data3_;
#line 4928 "PhotoMetadata.c"
}


static void block3_data_unref (void * _userdata_) {
	Block3Data* _data3_;
	_data3_ = (Block3Data*) _userdata_;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
#line 4937 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data3_->self;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block3Data, _data3_);
#line 4945 "PhotoMetadata.c"
	}
}


static void __lambda7_ (Block3Data* _data3_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	glong _tmp1_ = 0L;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data3_->self;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data3_->value;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_long (self, _tmp0_, _tmp1_);
#line 4964 "PhotoMetadata.c"
}


static void ___lambda7__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	__lambda7_ (self, tag);
#line 4971 "PhotoMetadata.c"
}


void photo_metadata_set_all_long (PhotoMetadata* self, gchar** tags, int tags_length1, glong value, PhotoMetadataSetOption option) {
	Block3Data* _data3_;
	glong _tmp0_ = 0L;
	gchar** _tmp1_ = NULL;
	gint _tmp1__length1 = 0;
	PhotoMetadataSetOption _tmp2_ = 0;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data3_ = g_slice_new0 (Block3Data);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data3_->_ref_count_ = 1;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data3_->self = media_metadata_ref (self);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = value;
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data3_->value = _tmp0_;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tags;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1__length1 = tags_length1;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = option;
#line 598 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_all_generic (self, _tmp1_, _tmp1__length1, _tmp2_, ___lambda7__photo_metadata_set_generic_value, _data3_);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block3_data_unref (_data3_);
#line 597 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data3_ = NULL;
#line 5005 "PhotoMetadata.c"
}


gboolean photo_metadata_get_rational (PhotoMetadata* self, const gchar* tag, MetadataRational* rational) {
	MetadataRational _vala_rational = {0};
	gboolean result = FALSE;
	gint numerator = 0;
	gint denominator = 0;
	gboolean _result_ = FALSE;
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gint _tmp2_ = 0;
	gint _tmp3_ = 0;
	gboolean _tmp4_ = FALSE;
#line 601 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 601 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, FALSE);
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = gexiv2_metadata_get_exif_tag_rational (_tmp0_, _tmp1_, &_tmp2_, &_tmp3_);
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	numerator = _tmp2_;
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	denominator = _tmp3_;
#line 603 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_result_ = _tmp4_;
#line 605 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	metadata_rational_init (&_vala_rational, numerator, denominator);
#line 607 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _result_;
#line 607 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (rational) {
#line 607 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*rational = _vala_rational;
#line 5044 "PhotoMetadata.c"
	}
#line 607 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 5048 "PhotoMetadata.c"
}


gboolean photo_metadata_get_first_rational (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataRational* rational) {
	MetadataRational _vala_rational = {0};
	gboolean result = FALSE;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 610 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 5063 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 5075 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 5082 "PhotoMetadata.c"
			{
				const gchar* _tmp2_ = NULL;
				MetadataRational _tmp3_ = {0};
				gboolean _tmp4_ = FALSE;
#line 612 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 612 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = photo_metadata_get_rational (self, _tmp2_, &_tmp3_);
#line 612 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_vala_rational = _tmp3_;
#line 612 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_) {
#line 613 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = TRUE;
#line 613 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 613 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (rational) {
#line 613 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						*rational = _vala_rational;
#line 5103 "PhotoMetadata.c"
					}
#line 613 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 5107 "PhotoMetadata.c"
				}
#line 611 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 5111 "PhotoMetadata.c"
			}
		}
	}
#line 616 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	metadata_rational_init (&_vala_rational, 0, 0);
#line 618 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = FALSE;
#line 618 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (rational) {
#line 618 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*rational = _vala_rational;
#line 5123 "PhotoMetadata.c"
	}
#line 618 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 5127 "PhotoMetadata.c"
}


void photo_metadata_set_rational (PhotoMetadata* self, const gchar* tag, MetadataRational* rational) {
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	MetadataRational _tmp2_ = {0};
	gint _tmp3_ = 0;
	MetadataRational _tmp4_ = {0};
	gint _tmp5_ = 0;
	gboolean _tmp6_ = FALSE;
#line 621 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 621 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 621 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (rational != NULL);
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = *rational;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_.numerator;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = *rational;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = _tmp4_.denominator;
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = gexiv2_metadata_set_exif_tag_rational (_tmp0_, _tmp1_, _tmp3_, _tmp5_);
#line 622 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp6_) {
#line 5161 "PhotoMetadata.c"
		const gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		const gchar* _tmp10_ = NULL;
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = tag;
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp8_ = metadata_rational_to_string (rational);
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = _tmp8_;
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = self->priv->source_name;
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:623: Unable to set tag %s to rational %s from sourc" \
"e %s", _tmp7_, _tmp9_, _tmp10_);
#line 623 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp9_);
#line 5178 "PhotoMetadata.c"
	}
}


static Block4Data* block4_data_ref (Block4Data* _data4_) {
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data4_->_ref_count_);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data4_;
#line 5188 "PhotoMetadata.c"
}


static void block4_data_unref (void * _userdata_) {
	Block4Data* _data4_;
	_data4_ = (Block4Data*) _userdata_;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
#line 5197 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data4_->self;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block4Data, _data4_);
#line 5205 "PhotoMetadata.c"
	}
}


static void __lambda8_ (Block4Data* _data4_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	MetadataRational _tmp1_ = {0};
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data4_->self;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data4_->rational;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_rational (self, _tmp0_, &_tmp1_);
#line 5224 "PhotoMetadata.c"
}


static void ___lambda8__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	__lambda8_ (self, tag);
#line 5231 "PhotoMetadata.c"
}


void photo_metadata_set_all_rational (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataRational* rational, PhotoMetadataSetOption option) {
	Block4Data* _data4_;
	MetadataRational _tmp0_ = {0};
	gchar** _tmp1_ = NULL;
	gint _tmp1__length1 = 0;
	PhotoMetadataSetOption _tmp2_ = 0;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (rational != NULL);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data4_ = g_slice_new0 (Block4Data);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data4_->_ref_count_ = 1;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data4_->self = media_metadata_ref (self);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = *rational;
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data4_->rational = _tmp0_;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tags;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1__length1 = tags_length1;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = option;
#line 629 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_all_generic (self, _tmp1_, _tmp1__length1, _tmp2_, ___lambda8__photo_metadata_set_generic_value, _data4_);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block4_data_unref (_data4_);
#line 628 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data4_ = NULL;
#line 5267 "PhotoMetadata.c"
}


MetadataDateTime* photo_metadata_get_date_time (PhotoMetadata* self, const gchar* tag) {
	MetadataDateTime* result = NULL;
	gchar* value = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
#line 632 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 632 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (tag != NULL, NULL);
#line 633 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 633 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_string (self, _tmp0_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 633 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	value = _tmp1_;
#line 634 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = value;
#line 634 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp2_ == NULL) {
#line 635 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 635 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (value);
#line 635 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5298 "PhotoMetadata.c"
	}
	{
		const gchar* _tmp3_ = NULL;
		MetadataDomain _tmp4_ = 0;
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = tag;
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_get_tag_domain (_tmp3_);
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		switch (_tmp4_) {
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			case METADATA_DOMAIN_XMP:
#line 5311 "PhotoMetadata.c"
			{
				MetadataDateTime* _tmp5_ = NULL;
				const gchar* _tmp6_ = NULL;
				MetadataDateTime* _tmp7_ = NULL;
				MetadataDateTime* _tmp8_ = NULL;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6_ = value;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp7_ = metadata_date_time_new_from_xmp (_tmp6_, &_inner_error_);
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = _tmp7_;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 5325 "PhotoMetadata.c"
					goto __catch26_g_error;
				}
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = _tmp5_;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = NULL;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				result = _tmp8_;
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_metadata_date_time_unref0 (_tmp5_);
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 640 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				return result;
#line 5340 "PhotoMetadata.c"
			}
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			case METADATA_DOMAIN_IPTC:
#line 5344 "PhotoMetadata.c"
			{
#line 645 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				result = NULL;
#line 645 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 645 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				return result;
#line 5352 "PhotoMetadata.c"
			}
			default:
#line 638 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			case METADATA_DOMAIN_EXIF:
#line 5357 "PhotoMetadata.c"
			{
				MetadataDateTime* _tmp9_ = NULL;
				const gchar* _tmp10_ = NULL;
				MetadataDateTime* _tmp11_ = NULL;
				MetadataDateTime* _tmp12_ = NULL;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = value;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11_ = metadata_date_time_new_from_exif (_tmp10_, &_inner_error_);
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp9_ = _tmp11_;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 5371 "PhotoMetadata.c"
					goto __catch26_g_error;
				}
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = _tmp9_;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp9_ = NULL;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				result = _tmp12_;
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_metadata_date_time_unref0 (_tmp9_);
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (value);
#line 649 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				return result;
#line 5386 "PhotoMetadata.c"
			}
		}
	}
	goto __finally26;
	__catch26_g_error:
	{
		GError* err = NULL;
		const gchar* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		GError* _tmp15_ = NULL;
		const gchar* _tmp16_ = NULL;
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		err = _inner_error_;
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_inner_error_ = NULL;
#line 652 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = tag;
#line 652 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = self->priv->source_name;
#line 652 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = err;
#line 652 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp16_ = _tmp15_->message;
#line 652 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_warning ("PhotoMetadata.vala:652: Unable to read date/time %s from source %s: %s", _tmp13_, _tmp14_, _tmp16_);
#line 654 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 654 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_error_free0 (err);
#line 654 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (value);
#line 654 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5420 "PhotoMetadata.c"
	}
	__finally26:
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (value);
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_clear_error (&_inner_error_);
#line 637 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return NULL;
#line 5431 "PhotoMetadata.c"
}


MetadataDateTime* photo_metadata_get_first_date_time (PhotoMetadata* self, gchar** tags, int tags_length1) {
	MetadataDateTime* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 658 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 5445 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 5457 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 5464 "PhotoMetadata.c"
			{
				MetadataDateTime* date_time = NULL;
				const gchar* _tmp2_ = NULL;
				MetadataDateTime* _tmp3_ = NULL;
				MetadataDateTime* _tmp4_ = NULL;
#line 660 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 660 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = photo_metadata_get_date_time (self, _tmp2_);
#line 660 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				date_time = _tmp3_;
#line 661 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = date_time;
#line 661 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_ != NULL) {
#line 662 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = date_time;
#line 662 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (tag);
#line 662 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 5486 "PhotoMetadata.c"
				}
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_metadata_date_time_unref0 (date_time);
#line 659 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 5492 "PhotoMetadata.c"
			}
		}
	}
#line 665 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 665 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 5500 "PhotoMetadata.c"
}


void photo_metadata_set_date_time (PhotoMetadata* self, const gchar* tag, MetadataDateTime* date_time) {
	const gchar* _tmp0_ = NULL;
	MetadataDomain _tmp1_ = 0;
#line 668 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 668 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 668 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_METADATA_DATE_TIME (date_time));
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_tag_domain (_tmp0_);
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	switch (_tmp1_) {
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_EXIF:
#line 5521 "PhotoMetadata.c"
		{
			const gchar* _tmp2_ = NULL;
			MetadataDateTime* _tmp3_ = NULL;
			gchar* _tmp4_ = NULL;
			gchar* _tmp5_ = NULL;
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp2_ = tag;
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = date_time;
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = metadata_date_time_get_exif_label (_tmp3_);
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = _tmp4_;
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			photo_metadata_set_string (self, _tmp2_, _tmp5_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 671 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (_tmp5_);
#line 672 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 5541 "PhotoMetadata.c"
		}
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_XMP:
#line 5545 "PhotoMetadata.c"
		{
			const gchar* _tmp6_ = NULL;
			MetadataDateTime* _tmp7_ = NULL;
			gchar* _tmp8_ = NULL;
			gchar* _tmp9_ = NULL;
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = tag;
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp7_ = date_time;
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp8_ = metadata_date_time_get_xmp_label (_tmp7_);
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp9_ = _tmp8_;
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			photo_metadata_set_string (self, _tmp6_, _tmp9_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 675 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (_tmp9_);
#line 676 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 5565 "PhotoMetadata.c"
		}
		default:
#line 669 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_IPTC:
#line 5570 "PhotoMetadata.c"
		{
			const gchar* _tmp10_ = NULL;
			const gchar* _tmp11_ = NULL;
			const gchar* _tmp12_ = NULL;
			MetadataDomain _tmp13_ = 0;
			GEnumValue* _tmp14_;
#line 681 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp10_ = tag;
#line 681 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp11_ = self->priv->source_name;
#line 681 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp12_ = tag;
#line 681 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp13_ = photo_metadata_get_tag_domain (_tmp12_);
#line 682 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp14_ = g_enum_get_value (g_type_class_ref (TYPE_METADATA_DOMAIN), _tmp13_);
#line 681 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			g_warning ("PhotoMetadata.vala:681: Cannot set date/time for %s from source %s: un" \
"supported metadata domain %s", _tmp10_, _tmp11_, (_tmp14_ != NULL) ? _tmp14_->value_name : NULL);
#line 683 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 5591 "PhotoMetadata.c"
		}
	}
}


static gpointer _metadata_date_time_ref0 (gpointer self) {
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? metadata_date_time_ref (self) : NULL;
#line 5600 "PhotoMetadata.c"
}


static Block5Data* block5_data_ref (Block5Data* _data5_) {
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data5_->_ref_count_);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data5_;
#line 5609 "PhotoMetadata.c"
}


static void block5_data_unref (void * _userdata_) {
	Block5Data* _data5_;
	_data5_ = (Block5Data*) _userdata_;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) {
#line 5618 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data5_->self;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_metadata_date_time_unref0 (_data5_->date_time);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block5Data, _data5_);
#line 5628 "PhotoMetadata.c"
	}
}


static void __lambda9_ (Block5Data* _data5_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	MetadataDateTime* _tmp1_ = NULL;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data5_->self;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data5_->date_time;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_date_time (self, _tmp0_, _tmp1_);
#line 5647 "PhotoMetadata.c"
}


static void ___lambda9__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	__lambda9_ (self, tag);
#line 5654 "PhotoMetadata.c"
}


void photo_metadata_set_all_date_time (PhotoMetadata* self, gchar** tags, int tags_length1, MetadataDateTime* date_time, PhotoMetadataSetOption option) {
	Block5Data* _data5_;
	MetadataDateTime* _tmp0_ = NULL;
	MetadataDateTime* _tmp1_ = NULL;
	gchar** _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	PhotoMetadataSetOption _tmp3_ = 0;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_METADATA_DATE_TIME (date_time));
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data5_ = g_slice_new0 (Block5Data);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data5_->_ref_count_ = 1;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data5_->self = media_metadata_ref (self);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = date_time;
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _metadata_date_time_ref0 (_tmp0_);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_metadata_date_time_unref0 (_data5_->date_time);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data5_->date_time = _tmp1_;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = tags;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2__length1 = tags_length1;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = option;
#line 688 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_all_generic (self, _tmp2_, _tmp2__length1, _tmp3_, ___lambda9__photo_metadata_set_generic_value, _data5_);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block5_data_unref (_data5_);
#line 687 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data5_ = NULL;
#line 5695 "PhotoMetadata.c"
}


gchar* photo_metadata_exif_hash (PhotoMetadata* self) {
	gchar* result = NULL;
	ExifData* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* hash = NULL;
	guchar* thumb = NULL;
	ExifData* _tmp4_ = NULL;
	guchar* _tmp5_ = NULL;
	guint thumb_size = 0U;
	ExifData* _tmp6_ = NULL;
	guint _tmp7_ = 0U;
	ExifData* _tmp8_ = NULL;
	ExifData* _tmp9_ = NULL;
	guchar* saved_data = NULL;
	guint saved_size = 0U;
	ExifData* _tmp10_ = NULL;
	ExifData* _tmp11_ = NULL;
	guchar* _tmp12_ = NULL;
	ExifData* _tmp13_ = NULL;
	guint _tmp14_ = 0U;
	gboolean _tmp15_ = FALSE;
	guint _tmp16_ = 0U;
#line 692 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 693 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exif;
#line 693 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ == NULL) {
#line 694 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 694 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5731 "PhotoMetadata.c"
	}
#line 696 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = self->priv->metadata_hash;
#line 696 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp1_ != NULL) {
#line 5737 "PhotoMetadata.c"
		const gchar* _tmp2_ = NULL;
		gchar* _tmp3_ = NULL;
#line 697 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = self->priv->metadata_hash;
#line 697 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = g_strdup (_tmp2_);
#line 697 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = _tmp3_;
#line 697 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5748 "PhotoMetadata.c"
	}
#line 700 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	hash = NULL;
#line 702 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = self->priv->exif;
#line 702 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = _tmp4_->data;
#line 702 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	thumb = _tmp5_;
#line 703 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = self->priv->exif;
#line 703 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = _tmp6_->size;
#line 703 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	thumb_size = _tmp7_;
#line 706 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = self->priv->exif;
#line 706 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_->data = NULL;
#line 707 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = self->priv->exif;
#line 707 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_->size = (guint) 0;
#line 709 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	saved_data = NULL;
#line 710 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	saved_size = (guint) 0;
#line 712 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = self->priv->exif;
#line 712 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	exif_data_save_data (_tmp10_, &saved_data, &saved_size);
#line 714 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = self->priv->exif;
#line 714 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = thumb;
#line 714 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_->data = _tmp12_;
#line 715 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = self->priv->exif;
#line 715 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = thumb_size;
#line 715 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_->size = _tmp14_;
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp16_ = saved_size;
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp16_ > ((guint) 0)) {
#line 5796 "PhotoMetadata.c"
		guchar* _tmp17_ = NULL;
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17_ = saved_data;
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = _tmp17_ != NULL;
#line 5802 "PhotoMetadata.c"
	} else {
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = FALSE;
#line 5806 "PhotoMetadata.c"
	}
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp15_) {
#line 5810 "PhotoMetadata.c"
		GChecksum* md5 = NULL;
		GChecksum* _tmp18_ = NULL;
		GChecksum* _tmp19_ = NULL;
		guchar* _tmp20_ = NULL;
		guint _tmp21_ = 0U;
		ExifMem* _tmp22_ = NULL;
		ExifMem* _tmp23_ = NULL;
		guchar* _tmp24_ = NULL;
		GChecksum* _tmp25_ = NULL;
		const gchar* _tmp26_ = NULL;
		gchar* _tmp27_ = NULL;
#line 718 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18_ = g_checksum_new (G_CHECKSUM_MD5);
#line 718 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		md5 = _tmp18_;
#line 719 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = md5;
#line 719 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp20_ = saved_data;
#line 719 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp21_ = saved_size;
#line 719 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_checksum_update (_tmp19_, (guchar*) _tmp20_, (gsize) _tmp21_);
#line 720 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = exif_mem_new_default ();
#line 720 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = _tmp22_;
#line 720 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp24_ = saved_data;
#line 720 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		exif_mem_free (_tmp23_, _tmp24_);
#line 720 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_exif_mem_unref0 (_tmp23_);
#line 722 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp25_ = md5;
#line 722 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = g_checksum_get_string (_tmp25_);
#line 722 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp27_ = g_strdup (_tmp26_);
#line 722 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (self->priv->metadata_hash);
#line 722 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self->priv->metadata_hash = _tmp27_;
#line 717 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_checksum_free0 (md5);
#line 5856 "PhotoMetadata.c"
	}
#line 725 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = hash;
#line 725 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 5862 "PhotoMetadata.c"
}


gchar* photo_metadata_thumbnail_hash (PhotoMetadata* self) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	guchar* buffer = NULL;
	gint buffer_length1 = 0;
	gint _buffer_size_ = 0;
	GExiv2Metadata* _tmp3_ = NULL;
	guint8* _tmp4_ = NULL;
	gint _tmp5_ = 0;
	gboolean _tmp6_ = FALSE;
#line 729 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 730 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->thumbnail_md5;
#line 730 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ != NULL) {
#line 5882 "PhotoMetadata.c"
		const gchar* _tmp1_ = NULL;
		gchar* _tmp2_ = NULL;
#line 731 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = self->priv->thumbnail_md5;
#line 731 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = g_strdup (_tmp1_);
#line 731 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = _tmp2_;
#line 731 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5893 "PhotoMetadata.c"
	}
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = self->priv->exiv2;
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = gexiv2_metadata_get_exif_thumbnail (_tmp3_, &_tmp4_, &_tmp5_);
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	buffer = (g_free (buffer), NULL);
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	buffer = _tmp4_;
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	buffer_length1 = _tmp5_;
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_buffer_size_ = buffer_length1;
#line 735 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp6_) {
#line 5909 "PhotoMetadata.c"
		GChecksum* md5 = NULL;
		GChecksum* _tmp7_ = NULL;
		GChecksum* _tmp8_ = NULL;
		guchar* _tmp9_ = NULL;
		gint _tmp9__length1 = 0;
		guchar* _tmp10_ = NULL;
		gint _tmp10__length1 = 0;
		GChecksum* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		gchar* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		gchar* _tmp15_ = NULL;
#line 736 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = g_checksum_new (G_CHECKSUM_MD5);
#line 736 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		md5 = _tmp7_;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp8_ = md5;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = buffer;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9__length1 = buffer_length1;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = buffer;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10__length1 = buffer_length1;
#line 737 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_checksum_update (_tmp8_, _tmp9_, (gsize) _tmp10__length1);
#line 739 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = md5;
#line 739 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = g_checksum_get_string (_tmp11_);
#line 739 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = g_strdup (_tmp12_);
#line 739 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (self->priv->thumbnail_md5);
#line 739 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self->priv->thumbnail_md5 = _tmp13_;
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = self->priv->thumbnail_md5;
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = g_strdup (_tmp14_);
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = _tmp15_;
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_checksum_free0 (md5);
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		buffer = (g_free (buffer), NULL);
#line 741 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 5960 "PhotoMetadata.c"
	}
#line 744 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 744 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	buffer = (g_free (buffer), NULL);
#line 744 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 5968 "PhotoMetadata.c"
}


guint photo_metadata_get_preview_count (PhotoMetadata* self) {
	guint result = 0U;
	GExiv2PreviewProperties** props = NULL;
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2PreviewProperties** _tmp1_ = NULL;
	GExiv2PreviewProperties** _tmp2_ = NULL;
	gint props_length1 = 0;
	gint _props_size_ = 0;
	gint _tmp3_ = 0;
	GExiv2PreviewProperties** _tmp4_ = NULL;
	gint _tmp4__length1 = 0;
#line 747 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), 0U);
#line 748 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 748 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = _tmp1_ = gexiv2_metadata_get_preview_properties (_tmp0_);
#line 748 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props = _tmp2_;
#line 748 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props_length1 = _vala_array_length (_tmp1_);
#line 748 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_props_size_ = props_length1;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = props;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4__length1 = props_length1;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ != NULL) {
#line 6001 "PhotoMetadata.c"
		GExiv2PreviewProperties** _tmp5_ = NULL;
		gint _tmp5__length1 = 0;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = props;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5__length1 = props_length1;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp5__length1;
#line 6010 "PhotoMetadata.c"
	} else {
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = 0;
#line 6014 "PhotoMetadata.c"
	}
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = (guint) _tmp3_;
#line 750 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6020 "PhotoMetadata.c"
}


PhotoPreview* photo_metadata_get_preview (PhotoMetadata* self, guint number) {
	PhotoPreview* result = NULL;
	GExiv2PreviewProperties** props = NULL;
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2PreviewProperties** _tmp1_ = NULL;
	GExiv2PreviewProperties** _tmp2_ = NULL;
	gint props_length1 = 0;
	gint _props_size_ = 0;
	gboolean _tmp3_ = FALSE;
	GExiv2PreviewProperties** _tmp4_ = NULL;
	gint _tmp4__length1 = 0;
	const gchar* _tmp7_ = NULL;
	guint _tmp8_ = 0U;
	GExiv2PreviewProperties** _tmp9_ = NULL;
	gint _tmp9__length1 = 0;
	guint _tmp10_ = 0U;
	GExiv2PreviewProperties* _tmp11_ = NULL;
	PhotoMetadataInternalPhotoPreview* _tmp12_ = NULL;
#line 754 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 755 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 755 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = _tmp1_ = gexiv2_metadata_get_preview_properties (_tmp0_);
#line 755 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props = _tmp2_;
#line 755 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props_length1 = _vala_array_length (_tmp1_);
#line 755 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_props_size_ = props_length1;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = props;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4__length1 = props_length1;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ == NULL) {
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = TRUE;
#line 6062 "PhotoMetadata.c"
	} else {
		GExiv2PreviewProperties** _tmp5_ = NULL;
		gint _tmp5__length1 = 0;
		guint _tmp6_ = 0U;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = props;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5__length1 = props_length1;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = number;
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = ((guint) _tmp5__length1) <= _tmp6_;
#line 6075 "PhotoMetadata.c"
	}
#line 756 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 757 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 757 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 6083 "PhotoMetadata.c"
	}
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = self->priv->source_name;
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = number;
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = props;
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9__length1 = props_length1;
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = number;
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = _tmp9_[_tmp10_];
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = photo_metadata_internal_photo_preview_new (self, _tmp7_, _tmp8_, _tmp11_);
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_PHOTO_PREVIEW, PhotoPreview);
#line 759 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6103 "PhotoMetadata.c"
}


void photo_metadata_remove_exif_thumbnail (PhotoMetadata* self) {
	GExiv2Metadata* _tmp0_ = NULL;
	ExifData* _tmp1_ = NULL;
#line 762 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 763 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 763 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_erase_exif_thumbnail (_tmp0_);
#line 764 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = self->priv->exif;
#line 764 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp1_ != NULL) {
#line 6120 "PhotoMetadata.c"
		ExifMem* _tmp2_ = NULL;
		ExifMem* _tmp3_ = NULL;
		ExifData* _tmp4_ = NULL;
		guchar* _tmp5_ = NULL;
		ExifData* _tmp6_ = NULL;
		ExifData* _tmp7_ = NULL;
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = exif_mem_new_default ();
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp2_;
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = self->priv->exif;
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = _tmp4_->data;
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		exif_mem_free (_tmp3_, _tmp5_);
#line 765 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_exif_mem_unref0 (_tmp3_);
#line 766 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = self->priv->exif;
#line 766 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_->data = NULL;
#line 767 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = self->priv->exif;
#line 767 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_->size = (guint) 0;
#line 6147 "PhotoMetadata.c"
	}
}


void photo_metadata_remove_tag (PhotoMetadata* self, const gchar* tag) {
	GExiv2Metadata* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 771 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 771 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 772 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 772 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = tag;
#line 772 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_clear_tag (_tmp0_, _tmp1_);
#line 6165 "PhotoMetadata.c"
}


void photo_metadata_remove_tags (PhotoMetadata* self, gchar** tags, int tags_length1) {
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 775 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tags;
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = tags_length1;
#line 6178 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 6190 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 6197 "PhotoMetadata.c"
			{
				const gchar* _tmp2_ = NULL;
#line 777 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 777 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				photo_metadata_remove_tag (self, _tmp2_);
#line 776 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 6206 "PhotoMetadata.c"
			}
		}
	}
}


void photo_metadata_clear_domain (PhotoMetadata* self, MetadataDomain domain) {
	MetadataDomain _tmp0_ = 0;
#line 780 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = domain;
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	switch (_tmp0_) {
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_EXIF:
#line 6223 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp1_ = NULL;
#line 783 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = self->priv->exiv2;
#line 783 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			gexiv2_metadata_clear_exif (_tmp1_);
#line 784 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 6232 "PhotoMetadata.c"
		}
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_XMP:
#line 6236 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp2_ = NULL;
#line 787 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp2_ = self->priv->exiv2;
#line 787 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			gexiv2_metadata_clear_xmp (_tmp2_);
#line 788 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 6245 "PhotoMetadata.c"
		}
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		case METADATA_DOMAIN_IPTC:
#line 6249 "PhotoMetadata.c"
		{
			GExiv2Metadata* _tmp3_ = NULL;
#line 791 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = self->priv->exiv2;
#line 791 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			gexiv2_metadata_clear_iptc (_tmp3_);
#line 792 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			break;
#line 6258 "PhotoMetadata.c"
		}
		default:
#line 781 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		break;
#line 6263 "PhotoMetadata.c"
	}
}


void photo_metadata_clear (PhotoMetadata* self) {
	GExiv2Metadata* _tmp0_ = NULL;
#line 796 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 797 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 797 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_clear (_tmp0_);
#line 6276 "PhotoMetadata.c"
}


MetadataDateTime* photo_metadata_get_modification_date_time (PhotoMetadata* self) {
	MetadataDateTime* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	MetadataDateTime* _tmp1_ = NULL;
#line 807 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 808 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_DATE_TIME_TAGS;
#line 808 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_DATE_TIME_TAGS_length1;
#line 808 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_date_time (self, _tmp0_, _tmp0__length1);
#line 808 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 808 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6297 "PhotoMetadata.c"
}


void photo_metadata_set_modification_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option) {
	MetadataDateTime* _tmp0_ = NULL;
#line 811 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 811 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail ((date_time == NULL) || IS_METADATA_DATE_TIME (date_time));
#line 813 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = date_time;
#line 813 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ != NULL) {
#line 6311 "PhotoMetadata.c"
		gchar** _tmp1_ = NULL;
		gint _tmp1__length1 = 0;
		MetadataDateTime* _tmp2_ = NULL;
		PhotoMetadataSetOption _tmp3_ = 0;
#line 814 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = photo_metadata_DATE_TIME_TAGS;
#line 814 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1__length1 = photo_metadata_DATE_TIME_TAGS_length1;
#line 814 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = date_time;
#line 814 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = option;
#line 814 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_date_time (self, _tmp1_, _tmp1__length1, _tmp2_, _tmp3_);
#line 6326 "PhotoMetadata.c"
	} else {
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
#line 816 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_DATE_TIME_TAGS;
#line 816 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4__length1 = photo_metadata_DATE_TIME_TAGS_length1;
#line 816 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp4_, _tmp4__length1);
#line 6336 "PhotoMetadata.c"
	}
}


MetadataDateTime* photo_metadata_get_exposure_date_time (PhotoMetadata* self) {
	MetadataDateTime* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	MetadataDateTime* _tmp1_ = NULL;
#line 828 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 829 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_EXPOSURE_DATE_TIME_TAGS;
#line 829 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1;
#line 829 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_date_time (self, _tmp0_, _tmp0__length1);
#line 829 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 829 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6358 "PhotoMetadata.c"
}


void photo_metadata_set_exposure_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option) {
	MetadataDateTime* _tmp0_ = NULL;
#line 832 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 832 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail ((date_time == NULL) || IS_METADATA_DATE_TIME (date_time));
#line 834 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = date_time;
#line 834 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ != NULL) {
#line 6372 "PhotoMetadata.c"
		gchar** _tmp1_ = NULL;
		gint _tmp1__length1 = 0;
		MetadataDateTime* _tmp2_ = NULL;
		PhotoMetadataSetOption _tmp3_ = 0;
#line 835 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = photo_metadata_EXPOSURE_DATE_TIME_TAGS;
#line 835 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1__length1 = photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1;
#line 835 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = date_time;
#line 835 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = option;
#line 835 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_date_time (self, _tmp1_, _tmp1__length1, _tmp2_, _tmp3_);
#line 6387 "PhotoMetadata.c"
	} else {
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
#line 837 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_EXPOSURE_DATE_TIME_TAGS;
#line 837 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4__length1 = photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1;
#line 837 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp4_, _tmp4__length1);
#line 6397 "PhotoMetadata.c"
	}
}


MetadataDateTime* photo_metadata_get_digitized_date_time (PhotoMetadata* self) {
	MetadataDateTime* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	MetadataDateTime* _tmp1_ = NULL;
#line 845 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 846 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_DIGITIZED_DATE_TIME_TAGS;
#line 846 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1;
#line 846 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_date_time (self, _tmp0_, _tmp0__length1);
#line 846 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 846 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6419 "PhotoMetadata.c"
}


void photo_metadata_set_digitized_date_time (PhotoMetadata* self, MetadataDateTime* date_time, PhotoMetadataSetOption option) {
	MetadataDateTime* _tmp0_ = NULL;
#line 849 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 849 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail ((date_time == NULL) || IS_METADATA_DATE_TIME (date_time));
#line 851 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = date_time;
#line 851 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ != NULL) {
#line 6433 "PhotoMetadata.c"
		gchar** _tmp1_ = NULL;
		gint _tmp1__length1 = 0;
		MetadataDateTime* _tmp2_ = NULL;
		PhotoMetadataSetOption _tmp3_ = 0;
#line 852 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = photo_metadata_DIGITIZED_DATE_TIME_TAGS;
#line 852 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1__length1 = photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1;
#line 852 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = date_time;
#line 852 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = option;
#line 852 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_date_time (self, _tmp1_, _tmp1__length1, _tmp2_, _tmp3_);
#line 6448 "PhotoMetadata.c"
	} else {
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
#line 854 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_DIGITIZED_DATE_TIME_TAGS;
#line 854 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4__length1 = photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1;
#line 854 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp4_, _tmp4__length1);
#line 6458 "PhotoMetadata.c"
	}
}


static MetadataDateTime* photo_metadata_real_get_creation_date_time (MediaMetadata* base) {
	PhotoMetadata * self;
	MetadataDateTime* result = NULL;
	MetadataDateTime* creation = NULL;
	MetadataDateTime* _tmp0_ = NULL;
	MetadataDateTime* _tmp1_ = NULL;
#line 857 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PHOTO_METADATA, PhotoMetadata);
#line 858 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_exposure_date_time (self);
#line 858 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	creation = _tmp0_;
#line 859 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = creation;
#line 859 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp1_ == NULL) {
#line 6479 "PhotoMetadata.c"
		MetadataDateTime* _tmp2_ = NULL;
#line 860 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = photo_metadata_get_digitized_date_time (self);
#line 860 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_metadata_date_time_unref0 (creation);
#line 860 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		creation = _tmp2_;
#line 6487 "PhotoMetadata.c"
	}
#line 862 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = creation;
#line 862 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6493 "PhotoMetadata.c"
}


static gpointer _dimensions_dup0 (gpointer self) {
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? dimensions_dup (self) : NULL;
#line 6500 "PhotoMetadata.c"
}


Dimensions* photo_metadata_get_pixel_dimensions (PhotoMetadata* self) {
	Dimensions* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	gchar** _tmp1_ = NULL;
	gint _tmp1__length1 = 0;
#line 879 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 881 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_WIDTH_TAGS;
#line 881 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_WIDTH_TAGS_length1;
#line 881 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_HEIGHT_TAGS;
#line 881 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1__length1 = photo_metadata_HEIGHT_TAGS_length1;
#line 881 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_assert (_tmp0__length1 == _tmp1__length1, "WIDTH_TAGS.length == HEIGHT_TAGS.length");
#line 6522 "PhotoMetadata.c"
	{
		gint ctr = 0;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		ctr = 0;
#line 6527 "PhotoMetadata.c"
		{
			gboolean _tmp2_ = FALSE;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp2_ = TRUE;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			while (TRUE) {
#line 6534 "PhotoMetadata.c"
				gint _tmp4_ = 0;
				gchar** _tmp5_ = NULL;
				gint _tmp5__length1 = 0;
				glong width = 0L;
				gchar** _tmp6_ = NULL;
				gint _tmp6__length1 = 0;
				gint _tmp7_ = 0;
				const gchar* _tmp8_ = NULL;
				glong _tmp9_ = 0L;
				gboolean _tmp10_ = FALSE;
				glong height = 0L;
				gchar** _tmp11_ = NULL;
				gint _tmp11__length1 = 0;
				gint _tmp12_ = 0;
				const gchar* _tmp13_ = NULL;
				glong _tmp14_ = 0L;
				gboolean _tmp15_ = FALSE;
				glong _tmp16_ = 0L;
				glong _tmp17_ = 0L;
				Dimensions _tmp18_ = {0};
				Dimensions* _tmp19_ = NULL;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp2_) {
#line 6558 "PhotoMetadata.c"
					gint _tmp3_ = 0;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp3_ = ctr;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					ctr = _tmp3_ + 1;
#line 6564 "PhotoMetadata.c"
				}
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = FALSE;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = ctr;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = photo_metadata_WIDTH_TAGS;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5__length1 = photo_metadata_WIDTH_TAGS_length1;
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!(_tmp4_ < _tmp5__length1)) {
#line 882 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					break;
#line 6578 "PhotoMetadata.c"
				}
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6_ = photo_metadata_WIDTH_TAGS;
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6__length1 = photo_metadata_WIDTH_TAGS_length1;
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp7_ = ctr;
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = _tmp6_[_tmp7_];
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = photo_metadata_get_long (self, _tmp8_, &_tmp9_);
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				width = _tmp9_;
#line 886 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp10_) {
#line 887 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					continue;
#line 6596 "PhotoMetadata.c"
				}
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11_ = photo_metadata_HEIGHT_TAGS;
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp11__length1 = photo_metadata_HEIGHT_TAGS_length1;
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = ctr;
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp13_ = _tmp11_[_tmp12_];
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp15_ = photo_metadata_get_long (self, _tmp13_, &_tmp14_);
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				height = _tmp14_;
#line 890 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp15_) {
#line 891 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					continue;
#line 6614 "PhotoMetadata.c"
				}
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp16_ = width;
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp17_ = height;
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				dimensions_init (&_tmp18_, (gint) _tmp16_, (gint) _tmp17_);
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp19_ = _dimensions_dup0 (&_tmp18_);
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				result = _tmp19_;
#line 893 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				return result;
#line 6628 "PhotoMetadata.c"
			}
		}
	}
#line 896 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = NULL;
#line 896 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6636 "PhotoMetadata.c"
}


void photo_metadata_set_pixel_dimensions (PhotoMetadata* self, Dimensions* dim, PhotoMetadataSetOption option) {
	Dimensions* _tmp0_ = NULL;
#line 899 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 900 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = dim;
#line 900 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp0_ != NULL) {
#line 6648 "PhotoMetadata.c"
		gchar** _tmp1_ = NULL;
		gint _tmp1__length1 = 0;
		Dimensions* _tmp2_ = NULL;
		gint _tmp3_ = 0;
		PhotoMetadataSetOption _tmp4_ = 0;
		gchar** _tmp5_ = NULL;
		gint _tmp5__length1 = 0;
		Dimensions* _tmp6_ = NULL;
		gint _tmp7_ = 0;
		PhotoMetadataSetOption _tmp8_ = 0;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1_ = photo_metadata_WIDTH_TAGS;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp1__length1 = photo_metadata_WIDTH_TAGS_length1;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = dim;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = (*_tmp2_).width;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = option;
#line 901 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_long (self, _tmp1_, _tmp1__length1, (glong) _tmp3_, _tmp4_);
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = photo_metadata_HEIGHT_TAGS;
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5__length1 = photo_metadata_HEIGHT_TAGS_length1;
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = dim;
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = (*_tmp6_).height;
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp8_ = option;
#line 902 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_long (self, _tmp5_, _tmp5__length1, (glong) _tmp7_, _tmp8_);
#line 6683 "PhotoMetadata.c"
	} else {
		gchar** _tmp9_ = NULL;
		gint _tmp9__length1 = 0;
		gchar** _tmp10_ = NULL;
		gint _tmp10__length1 = 0;
#line 904 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = photo_metadata_WIDTH_TAGS;
#line 904 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9__length1 = photo_metadata_WIDTH_TAGS_length1;
#line 904 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp9_, _tmp9__length1);
#line 905 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = photo_metadata_HEIGHT_TAGS;
#line 905 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10__length1 = photo_metadata_HEIGHT_TAGS_length1;
#line 905 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp10_, _tmp10__length1);
#line 6701 "PhotoMetadata.c"
	}
}


static gchar* string_strip (const gchar* self) {
	gchar* result = NULL;
	gchar* _result_ = NULL;
	gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 1207 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1208 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = g_strdup (self);
#line 1208 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_result_ = _tmp0_;
#line 1209 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = _result_;
#line 1209 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_strstrip (_tmp1_);
#line 1210 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _result_;
#line 1210 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 6725 "PhotoMetadata.c"
}


static gboolean string_contains (const gchar* self, const gchar* needle) {
	gboolean result = FALSE;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
#line 1376 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, FALSE);
#line 1376 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (needle != NULL, FALSE);
#line 1377 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = needle;
#line 1377 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
#line 1377 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _tmp1_ != NULL;
#line 1377 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 6745 "PhotoMetadata.c"
}


static gchar* photo_metadata_real_get_title (MediaMetadata* base) {
	PhotoMetadata * self;
	gchar* result = NULL;
	GeeList* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	GeeList* titles = NULL;
	GeeList* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	GeeList* _tmp8_ = NULL;
	gchar* title = NULL;
	gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	const gchar* _tmp18_ = NULL;
	gboolean _tmp19_ = FALSE;
	gboolean _tmp20_ = FALSE;
	const gchar* _tmp21_ = NULL;
	gboolean _tmp22_ = FALSE;
	gchar* _tmp28_ = NULL;
#line 939 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PHOTO_METADATA, PhotoMetadata);
#line 947 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_has_tag (self, PHOTO_METADATA_IPHOTO_TITLE_TAG);
#line 947 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp1_) {
#line 6774 "PhotoMetadata.c"
		GeeList* _tmp2_ = NULL;
#line 948 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = photo_metadata_get_string_multiple (self, PHOTO_METADATA_IPHOTO_TITLE_TAG);
#line 948 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_tmp0_);
#line 948 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp0_ = _tmp2_;
#line 6782 "PhotoMetadata.c"
	} else {
		gchar** _tmp3_ = NULL;
		gint _tmp3__length1 = 0;
		GeeList* _tmp4_ = NULL;
#line 949 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = photo_metadata_STANDARD_TITLE_TAGS;
#line 949 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3__length1 = photo_metadata_STANDARD_TITLE_TAGS_length1;
#line 949 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_get_first_string_multiple (self, _tmp3_, _tmp3__length1);
#line 949 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_tmp0_);
#line 949 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp0_ = _tmp4_;
#line 6797 "PhotoMetadata.c"
	}
#line 947 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = _g_object_ref0 (_tmp0_);
#line 947 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	titles = _tmp5_;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = titles;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp8_ != NULL) {
#line 6807 "PhotoMetadata.c"
		GeeList* _tmp9_ = NULL;
		gint _tmp10_ = 0;
		gint _tmp11_ = 0;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = titles;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_COLLECTION, GeeCollection));
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = _tmp10_;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = _tmp11_ > 0;
#line 6819 "PhotoMetadata.c"
	} else {
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = FALSE;
#line 6823 "PhotoMetadata.c"
	}
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp7_) {
#line 6827 "PhotoMetadata.c"
		GeeList* _tmp12_ = NULL;
		gpointer _tmp13_ = NULL;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = titles;
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = gee_list_get (_tmp12_, 0);
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp6_);
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = (gchar*) _tmp13_;
#line 6838 "PhotoMetadata.c"
	} else {
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp6_);
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = NULL;
#line 6844 "PhotoMetadata.c"
	}
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = g_strdup (_tmp6_);
#line 954 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	title = _tmp14_;
#line 957 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = title;
#line 957 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp15_ != NULL) {
#line 6854 "PhotoMetadata.c"
		const gchar* _tmp16_ = NULL;
		gchar* _tmp17_ = NULL;
#line 958 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp16_ = title;
#line 958 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp17_ = string_strip (_tmp16_);
#line 958 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (title);
#line 958 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		title = _tmp17_;
#line 6865 "PhotoMetadata.c"
	}
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp21_ = title;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp22_ = is_string_empty (_tmp21_);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp22_) {
#line 6873 "PhotoMetadata.c"
		const gchar* _tmp23_ = NULL;
		gboolean _tmp24_ = FALSE;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = title;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp24_ = string_contains (_tmp23_, "\n");
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp20_ = !_tmp24_;
#line 6882 "PhotoMetadata.c"
	} else {
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp20_ = FALSE;
#line 6886 "PhotoMetadata.c"
	}
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp20_) {
#line 6890 "PhotoMetadata.c"
		const gchar* _tmp25_ = NULL;
		gboolean _tmp26_ = FALSE;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp25_ = title;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = string_contains (_tmp25_, "\r");
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = !_tmp26_;
#line 6899 "PhotoMetadata.c"
	} else {
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp19_ = FALSE;
#line 6903 "PhotoMetadata.c"
	}
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp19_) {
#line 6907 "PhotoMetadata.c"
		const gchar* _tmp27_ = NULL;
#line 962 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp27_ = title;
#line 962 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18_ = _tmp27_;
#line 6913 "PhotoMetadata.c"
	} else {
#line 962 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp18_ = NULL;
#line 6917 "PhotoMetadata.c"
	}
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp28_ = g_strdup (_tmp18_);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp28_;
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (title);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp6_);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (titles);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (_tmp0_);
#line 961 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 6933 "PhotoMetadata.c"
}


void photo_metadata_set_title (PhotoMetadata* self, const gchar* title, PhotoMetadataSetOption option) {
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
#line 965 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 966 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = title;
#line 966 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = is_string_empty (_tmp0_);
#line 966 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp1_) {
#line 6948 "PhotoMetadata.c"
		gboolean _tmp2_ = FALSE;
#line 967 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = photo_metadata_has_tag (self, PHOTO_METADATA_IPHOTO_TITLE_TAG);
#line 967 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (_tmp2_) {
#line 6954 "PhotoMetadata.c"
			const gchar* _tmp3_ = NULL;
#line 968 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = title;
#line 968 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			photo_metadata_set_string (self, PHOTO_METADATA_IPHOTO_TITLE_TAG, _tmp3_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 6960 "PhotoMetadata.c"
		} else {
			gchar** _tmp4_ = NULL;
			gint _tmp4__length1 = 0;
			const gchar* _tmp5_ = NULL;
			PhotoMetadataSetOption _tmp6_ = 0;
#line 970 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = photo_metadata_STANDARD_TITLE_TAGS;
#line 970 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4__length1 = photo_metadata_STANDARD_TITLE_TAGS_length1;
#line 970 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp5_ = title;
#line 970 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = option;
#line 970 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			photo_metadata_set_all_string (self, _tmp4_, _tmp4__length1, _tmp5_, _tmp6_);
#line 6976 "PhotoMetadata.c"
		}
	} else {
		gchar** _tmp7_ = NULL;
		gint _tmp7__length1 = 0;
#line 972 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = photo_metadata_STANDARD_TITLE_TAGS;
#line 972 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7__length1 = photo_metadata_STANDARD_TITLE_TAGS_length1;
#line 972 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp7_, _tmp7__length1);
#line 6987 "PhotoMetadata.c"
	}
}


static gchar* photo_metadata_real_get_comment (MediaMetadata* base) {
	PhotoMetadata * self;
	gchar* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	gchar* _tmp1_ = NULL;
#line 981 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PHOTO_METADATA, PhotoMetadata);
#line 982 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_COMMENT_TAGS;
#line 982 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_COMMENT_TAGS_length1;
#line 982 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_string_interpreted (self, _tmp0_, _tmp0__length1);
#line 982 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 982 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 7010 "PhotoMetadata.c"
}


static Block6Data* block6_data_ref (Block6Data* _data6_) {
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_atomic_int_inc (&_data6_->_ref_count_);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return _data6_;
#line 7019 "PhotoMetadata.c"
}


static void block6_data_unref (void * _userdata_) {
	Block6Data* _data6_;
	_data6_ = (Block6Data*) _userdata_;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
#line 7028 "PhotoMetadata.c"
		PhotoMetadata* self;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		self = _data6_->self;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_data6_->comment);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_media_metadata_unref0 (self);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		g_slice_free (Block6Data, _data6_);
#line 7038 "PhotoMetadata.c"
	}
}


static void ___lambda10_ (Block6Data* _data6_, const gchar* tag) {
	PhotoMetadata* self;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = _data6_->self;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (tag != NULL);
#line 991 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = tag;
#line 991 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _data6_->comment;
#line 991 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string (self, _tmp0_, _tmp1_, PHOTO_METADATA_PREPARE_STRING_OPTIONS & (~PREPARE_INPUT_TEXT_OPTIONS_STRIP_CRLF));
#line 7057 "PhotoMetadata.c"
}


static void ____lambda10__photo_metadata_set_generic_value (const gchar* tag, gpointer self) {
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	___lambda10_ (self, tag);
#line 7064 "PhotoMetadata.c"
}


void photo_metadata_set_comment (PhotoMetadata* self, const gchar* comment, PhotoMetadataSetOption option) {
	Block6Data* _data6_;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data6_ = g_slice_new0 (Block6Data);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data6_->_ref_count_ = 1;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data6_->self = media_metadata_ref (self);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = comment;
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_data6_->comment);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data6_->comment = _tmp1_;
#line 989 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = _data6_->comment;
#line 989 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = is_string_empty (_tmp2_);
#line 989 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp3_) {
#line 7096 "PhotoMetadata.c"
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
		PhotoMetadataSetOption _tmp5_ = 0;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = photo_metadata_COMMENT_TAGS;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4__length1 = photo_metadata_COMMENT_TAGS_length1;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = option;
#line 990 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_generic (self, _tmp4_, _tmp4__length1, _tmp5_, ____lambda10__photo_metadata_set_generic_value, _data6_);
#line 7108 "PhotoMetadata.c"
	} else {
		gchar** _tmp6_ = NULL;
		gint _tmp6__length1 = 0;
#line 995 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = photo_metadata_COMMENT_TAGS;
#line 995 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6__length1 = photo_metadata_COMMENT_TAGS_length1;
#line 995 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp6_, _tmp6__length1);
#line 7118 "PhotoMetadata.c"
	}
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	block6_data_unref (_data6_);
#line 985 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_data6_ = NULL;
#line 7124 "PhotoMetadata.c"
}


GeeSet* photo_metadata_get_keywords (PhotoMetadata* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify) {
	GeeSet* result = NULL;
	GeeSet* keywords = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	GeeSet* _tmp22_ = NULL;
	gboolean _tmp23_ = FALSE;
	GeeSet* _tmp24_ = NULL;
	GeeSet* _tmp29_ = NULL;
#line 1015 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1016 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	keywords = NULL;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_KEYWORD_TAGS;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_KEYWORD_TAGS_length1;
#line 7145 "PhotoMetadata.c"
	{
		gchar** tag_collection = NULL;
		gint tag_collection_length1 = 0;
		gint _tag_collection_size_ = 0;
		gint tag_it = 0;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection = _tmp0_;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		tag_collection_length1 = _tmp0__length1;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (tag_it = 0; tag_it < _tmp0__length1; tag_it = tag_it + 1) {
#line 7157 "PhotoMetadata.c"
			gchar* _tmp1_ = NULL;
			gchar* tag = NULL;
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = g_strdup (tag_collection[tag_it]);
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			tag = _tmp1_;
#line 7164 "PhotoMetadata.c"
			{
				GeeCollection* values = NULL;
				const gchar* _tmp2_ = NULL;
				GeeList* _tmp3_ = NULL;
				gboolean _tmp4_ = FALSE;
				GeeCollection* _tmp5_ = NULL;
#line 1018 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = tag;
#line 1018 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = photo_metadata_get_string_multiple (self, _tmp2_);
#line 1018 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				values = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection);
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = values;
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp5_ != NULL) {
#line 7181 "PhotoMetadata.c"
					GeeCollection* _tmp6_ = NULL;
					gint _tmp7_ = 0;
					gint _tmp8_ = 0;
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp6_ = values;
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = gee_collection_get_size (_tmp6_);
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp8_ = _tmp7_;
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp4_ = _tmp8_ > 0;
#line 7193 "PhotoMetadata.c"
				} else {
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp4_ = FALSE;
#line 7197 "PhotoMetadata.c"
				}
#line 1019 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp4_) {
#line 7201 "PhotoMetadata.c"
					GeeSet* _tmp9_ = NULL;
#line 1020 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp9_ = keywords;
#line 1020 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					if (_tmp9_ == NULL) {
#line 7207 "PhotoMetadata.c"
						GCompareDataFunc _tmp10_ = NULL;
						void* _tmp10__target = NULL;
						GDestroyNotify _tmp10__target_destroy_notify = NULL;
						GeeSet* _tmp11_ = NULL;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp10_ = compare_func;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp10__target = compare_func_target;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp10__target_destroy_notify = compare_func_target_destroy_notify;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						compare_func = NULL;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						compare_func_target = NULL;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						compare_func_target_destroy_notify = NULL;
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp11_ = photo_metadata_create_string_set (self, _tmp10_, _tmp10__target, _tmp10__target_destroy_notify);
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_object_unref0 (keywords);
#line 1021 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						keywords = _tmp11_;
#line 7230 "PhotoMetadata.c"
					}
					{
						GeeIterator* _current_value_it = NULL;
						GeeCollection* _tmp12_ = NULL;
						GeeIterator* _tmp13_ = NULL;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp12_ = values;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp13_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_ITERABLE, GeeIterable));
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_current_value_it = _tmp13_;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						while (TRUE) {
#line 7244 "PhotoMetadata.c"
							GeeIterator* _tmp14_ = NULL;
							gboolean _tmp15_ = FALSE;
							gchar* current_value = NULL;
							GeeIterator* _tmp16_ = NULL;
							gpointer _tmp17_ = NULL;
							GeeSet* _tmp18_ = NULL;
							const gchar* _tmp19_ = NULL;
							gchar* _tmp20_ = NULL;
							gchar* _tmp21_ = NULL;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp14_ = _current_value_it;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp15_ = gee_iterator_next (_tmp14_);
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							if (!_tmp15_) {
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
								break;
#line 7262 "PhotoMetadata.c"
							}
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp16_ = _current_value_it;
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp17_ = gee_iterator_get (_tmp16_);
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							current_value = (gchar*) _tmp17_;
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp18_ = keywords;
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp19_ = current_value;
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp20_ = hierarchical_tag_utilities_make_flat_tag_safe (_tmp19_);
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp21_ = _tmp20_;
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_COLLECTION, GeeCollection), _tmp21_);
#line 1024 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_free0 (_tmp21_);
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_free0 (current_value);
#line 7284 "PhotoMetadata.c"
						}
#line 1023 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_object_unref0 (_current_value_it);
#line 7288 "PhotoMetadata.c"
					}
				}
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (values);
#line 1017 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (tag);
#line 7295 "PhotoMetadata.c"
			}
		}
	}
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_ = keywords;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp24_ != NULL) {
#line 7303 "PhotoMetadata.c"
		GeeSet* _tmp25_ = NULL;
		gint _tmp26_ = 0;
		gint _tmp27_ = 0;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp25_ = keywords;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GEE_TYPE_COLLECTION, GeeCollection));
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp27_ = _tmp26_;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = _tmp27_ > 0;
#line 7315 "PhotoMetadata.c"
	} else {
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp23_ = FALSE;
#line 7319 "PhotoMetadata.c"
	}
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp23_) {
#line 7323 "PhotoMetadata.c"
		GeeSet* _tmp28_ = NULL;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp28_ = keywords;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = _tmp28_;
#line 7329 "PhotoMetadata.c"
	} else {
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp22_ = NULL;
#line 7333 "PhotoMetadata.c"
	}
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp29_ = _g_object_ref0 (_tmp22_);
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp29_;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (keywords);
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	(compare_func_target_destroy_notify == NULL) ? NULL : (compare_func_target_destroy_notify (compare_func_target), NULL);
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func = NULL;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target = NULL;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	compare_func_target_destroy_notify = NULL;
#line 1028 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 7351 "PhotoMetadata.c"
}


static gpointer _hierarchical_keyword_field_ref0 (gpointer self) {
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? hierarchical_keyword_field_ref (self) : NULL;
#line 7358 "PhotoMetadata.c"
}


static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
	gchar* result = NULL;
	GError * _inner_error_ = NULL;
#line 1380 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1380 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (old != NULL, NULL);
#line 1380 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (replacement != NULL, NULL);
#line 7371 "PhotoMetadata.c"
	{
		GRegex* regex = NULL;
		const gchar* _tmp0_ = NULL;
		gchar* _tmp1_ = NULL;
		gchar* _tmp2_ = NULL;
		GRegex* _tmp3_ = NULL;
		GRegex* _tmp4_ = NULL;
		gchar* _tmp5_ = NULL;
		GRegex* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = old;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp1_ = g_regex_escape_string (_tmp0_, -1);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp2_ = _tmp1_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = _tmp3_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_free0 (_tmp2_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		regex = _tmp4_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			if (_inner_error_->domain == G_REGEX_ERROR) {
#line 7402 "PhotoMetadata.c"
				goto __catch27_g_regex_error;
			}
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			g_clear_error (&_inner_error_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			return NULL;
#line 7411 "PhotoMetadata.c"
		}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = regex;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp7_ = replacement;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) -1, 0, _tmp7_, 0, &_inner_error_);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = _tmp8_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			if (_inner_error_->domain == G_REGEX_ERROR) {
#line 7427 "PhotoMetadata.c"
				goto __catch27_g_regex_error;
			}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			g_clear_error (&_inner_error_);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			return NULL;
#line 7438 "PhotoMetadata.c"
		}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp9_ = _tmp5_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = NULL;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = _tmp9_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_free0 (_tmp5_);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 7452 "PhotoMetadata.c"
	}
	goto __finally27;
	__catch27_g_regex_error:
	{
		GError* e = NULL;
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		e = _inner_error_;
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_inner_error_ = NULL;
#line 1385 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_assert_not_reached ();
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_error_free0 (e);
#line 7466 "PhotoMetadata.c"
	}
	__finally27:
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_clear_error (&_inner_error_);
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return NULL;
#line 7477 "PhotoMetadata.c"
	}
}


static glong string_strnlen (gchar* str, glong maxlen) {
	glong result = 0L;
	gchar* end = NULL;
	gchar* _tmp0_ = NULL;
	glong _tmp1_ = 0L;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = str;
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = maxlen;
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	end = _tmp2_;
#line 1296 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp3_ = end;
#line 1296 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp3_ == NULL) {
#line 7501 "PhotoMetadata.c"
		glong _tmp4_ = 0L;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = maxlen;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = _tmp4_;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 7509 "PhotoMetadata.c"
	} else {
		gchar* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = end;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = str;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = (glong) (_tmp5_ - _tmp6_);
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 7521 "PhotoMetadata.c"
	}
}


static gchar* string_substring (const gchar* self, glong offset, glong len) {
	gchar* result = NULL;
	glong string_length = 0L;
	gboolean _tmp0_ = FALSE;
	glong _tmp1_ = 0L;
	glong _tmp8_ = 0L;
	glong _tmp14_ = 0L;
	glong _tmp17_ = 0L;
	glong _tmp18_ = 0L;
	glong _tmp19_ = 0L;
	glong _tmp20_ = 0L;
	glong _tmp21_ = 0L;
	gchar* _tmp22_ = NULL;
#line 1306 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = offset;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp1_ >= ((glong) 0)) {
#line 7545 "PhotoMetadata.c"
		glong _tmp2_ = 0L;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp2_ = len;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = _tmp2_ >= ((glong) 0);
#line 7551 "PhotoMetadata.c"
	} else {
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 7555 "PhotoMetadata.c"
	}
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp0_) {
#line 7559 "PhotoMetadata.c"
		glong _tmp3_ = 0L;
		glong _tmp4_ = 0L;
		glong _tmp5_ = 0L;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp3_ = offset;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = len;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = _tmp5_;
#line 7571 "PhotoMetadata.c"
	} else {
		gint _tmp6_ = 0;
		gint _tmp7_ = 0;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = strlen (self);
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp7_ = _tmp6_;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = (glong) _tmp7_;
#line 7581 "PhotoMetadata.c"
	}
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp8_ = offset;
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp8_ < ((glong) 0)) {
#line 7587 "PhotoMetadata.c"
		glong _tmp9_ = 0L;
		glong _tmp10_ = 0L;
		glong _tmp11_ = 0L;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp9_ = string_length;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp10_ = offset;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		offset = _tmp9_ + _tmp10_;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp11_ = offset;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
#line 7601 "PhotoMetadata.c"
	} else {
		glong _tmp12_ = 0L;
		glong _tmp13_ = 0L;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp12_ = offset;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp13_ = string_length;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
#line 7611 "PhotoMetadata.c"
	}
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp14_ = len;
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp14_ < ((glong) 0)) {
#line 7617 "PhotoMetadata.c"
		glong _tmp15_ = 0L;
		glong _tmp16_ = 0L;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp15_ = string_length;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp16_ = offset;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		len = _tmp15_ - _tmp16_;
#line 7626 "PhotoMetadata.c"
	}
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp17_ = offset;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp18_ = len;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp19_ = string_length;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp20_ = offset;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp21_ = len;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _tmp22_;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 7646 "PhotoMetadata.c"
}


static void photo_metadata_internal_set_hierarchical_keywords (PhotoMetadata* self, HierarchicalTagIndex* index) {
	HierarchicalKeywordField** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	HierarchicalTagIndex* _tmp4_ = NULL;
	HierarchicalKeywordField** _tmp5_ = NULL;
	gint _tmp5__length1 = 0;
#line 1031 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1031 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail ((index == NULL) || IS_HIERARCHICAL_TAG_INDEX (index));
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_HIERARCHICAL_KEYWORD_TAGS;
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1;
#line 7664 "PhotoMetadata.c"
	{
		HierarchicalKeywordField** current_field_collection = NULL;
		gint current_field_collection_length1 = 0;
		gint _current_field_collection_size_ = 0;
		gint current_field_it = 0;
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		current_field_collection = _tmp0_;
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		current_field_collection_length1 = _tmp0__length1;
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (current_field_it = 0; current_field_it < _tmp0__length1; current_field_it = current_field_it + 1) {
#line 7676 "PhotoMetadata.c"
			HierarchicalKeywordField* _tmp1_ = NULL;
			HierarchicalKeywordField* current_field = NULL;
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = _hierarchical_keyword_field_ref0 (current_field_collection[current_field_it]);
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			current_field = _tmp1_;
#line 7683 "PhotoMetadata.c"
			{
				HierarchicalKeywordField* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
#line 1033 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = current_field;
#line 1033 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = _tmp2_->field_name;
#line 1033 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				photo_metadata_remove_tag (self, _tmp3_);
#line 1032 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_hierarchical_keyword_field_unref0 (current_field);
#line 7695 "PhotoMetadata.c"
			}
		}
	}
#line 1035 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = index;
#line 1035 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ == NULL) {
#line 1036 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return;
#line 7705 "PhotoMetadata.c"
	}
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = photo_metadata_HIERARCHICAL_KEYWORD_TAGS;
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5__length1 = photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1;
#line 7711 "PhotoMetadata.c"
	{
		HierarchicalKeywordField** current_field_collection = NULL;
		gint current_field_collection_length1 = 0;
		gint _current_field_collection_size_ = 0;
		gint current_field_it = 0;
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		current_field_collection = _tmp5_;
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		current_field_collection_length1 = _tmp5__length1;
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (current_field_it = 0; current_field_it < _tmp5__length1; current_field_it = current_field_it + 1) {
#line 7723 "PhotoMetadata.c"
			HierarchicalKeywordField* _tmp6_ = NULL;
			HierarchicalKeywordField* current_field = NULL;
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp6_ = _hierarchical_keyword_field_ref0 (current_field_collection[current_field_it]);
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			current_field = _tmp6_;
#line 7730 "PhotoMetadata.c"
			{
				HierarchicalKeywordField* _tmp7_ = NULL;
				gboolean _tmp8_ = FALSE;
				GeeSet* writeable_set = NULL;
				GeeTreeSet* _tmp9_ = NULL;
				HierarchicalKeywordField* _tmp29_ = NULL;
				const gchar* _tmp30_ = NULL;
				GeeSet* _tmp31_ = NULL;
#line 1039 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp7_ = current_field;
#line 1039 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = _tmp7_->is_writeable;
#line 1039 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp8_) {
#line 1040 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_hierarchical_keyword_field_unref0 (current_field);
#line 1040 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					continue;
#line 7749 "PhotoMetadata.c"
				}
#line 1042 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp9_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 1042 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				writeable_set = G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_SET, GeeSet);
#line 7755 "PhotoMetadata.c"
				{
					GeeIterator* _current_path_it = NULL;
					HierarchicalTagIndex* _tmp10_ = NULL;
					GeeCollection* _tmp11_ = NULL;
					GeeCollection* _tmp12_ = NULL;
					GeeIterator* _tmp13_ = NULL;
					GeeIterator* _tmp14_ = NULL;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp10_ = index;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp11_ = hierarchical_tag_index_get_all_paths (_tmp10_);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp12_ = _tmp11_;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp13_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_ITERABLE, GeeIterable));
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp14_ = _tmp13_;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (_tmp12_);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_current_path_it = _tmp14_;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					while (TRUE) {
#line 7779 "PhotoMetadata.c"
						GeeIterator* _tmp15_ = NULL;
						gboolean _tmp16_ = FALSE;
						gchar* current_path = NULL;
						GeeIterator* _tmp17_ = NULL;
						gpointer _tmp18_ = NULL;
						gchar* writeable_path = NULL;
						const gchar* _tmp19_ = NULL;
						HierarchicalKeywordField* _tmp20_ = NULL;
						const gchar* _tmp21_ = NULL;
						gchar* _tmp22_ = NULL;
						HierarchicalKeywordField* _tmp23_ = NULL;
						gboolean _tmp24_ = FALSE;
						GeeSet* _tmp27_ = NULL;
						const gchar* _tmp28_ = NULL;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp15_ = _current_path_it;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp16_ = gee_iterator_next (_tmp15_);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (!_tmp16_) {
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							break;
#line 7802 "PhotoMetadata.c"
						}
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp17_ = _current_path_it;
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp18_ = gee_iterator_get (_tmp17_);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						current_path = (gchar*) _tmp18_;
#line 1045 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp19_ = current_path;
#line 1045 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp20_ = current_field;
#line 1045 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp21_ = _tmp20_->path_separator;
#line 1045 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp22_ = string_replace (_tmp19_, TAG_PATH_SEPARATOR_STRING, _tmp21_);
#line 1045 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						writeable_path = _tmp22_;
#line 1047 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp23_ = current_field;
#line 1047 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp24_ = _tmp23_->wants_leading_separator;
#line 1047 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (!_tmp24_) {
#line 7826 "PhotoMetadata.c"
							const gchar* _tmp25_ = NULL;
							gchar* _tmp26_ = NULL;
#line 1048 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp25_ = writeable_path;
#line 1048 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp26_ = string_substring (_tmp25_, (glong) 1, (glong) -1);
#line 1048 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_free0 (writeable_path);
#line 1048 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							writeable_path = _tmp26_;
#line 7837 "PhotoMetadata.c"
						}
#line 1050 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp27_ = writeable_set;
#line 1050 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp28_ = writeable_path;
#line 1050 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_COLLECTION, GeeCollection), _tmp28_);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_free0 (writeable_path);
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_free0 (current_path);
#line 7849 "PhotoMetadata.c"
					}
#line 1044 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (_current_path_it);
#line 7853 "PhotoMetadata.c"
				}
#line 1053 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp29_ = current_field;
#line 1053 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp30_ = _tmp29_->field_name;
#line 1053 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp31_ = writeable_set;
#line 1053 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				photo_metadata_set_string_multiple (self, _tmp30_, G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, GEE_TYPE_COLLECTION, GeeCollection));
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (writeable_set);
#line 1038 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_hierarchical_keyword_field_unref0 (current_field);
#line 7867 "PhotoMetadata.c"
			}
		}
	}
}


void photo_metadata_set_keywords (PhotoMetadata* self, GeeCollection* keywords, PhotoMetadataSetOption option) {
	HierarchicalTagIndex* htag_index = NULL;
	HierarchicalTagIndex* _tmp0_ = NULL;
	GeeSet* flat_keywords = NULL;
	GeeTreeSet* _tmp1_ = NULL;
	GeeCollection* _tmp2_ = NULL;
	GeeCollection* _tmp28_ = NULL;
#line 1057 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1057 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail ((keywords == NULL) || GEE_IS_COLLECTION (keywords));
#line 1058 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = hierarchical_tag_index_new ();
#line 1058 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	htag_index = _tmp0_;
#line 1059 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 1059 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	flat_keywords = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_SET, GeeSet);
#line 1061 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = keywords;
#line 1061 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp2_ != NULL) {
#line 7897 "PhotoMetadata.c"
		GeeSet* _tmp24_ = NULL;
		HierarchicalTagIndex* _tmp25_ = NULL;
		GeeCollection* _tmp26_ = NULL;
		GeeCollection* _tmp27_ = NULL;
		{
			GeeIterator* _keyword_it = NULL;
			GeeCollection* _tmp3_ = NULL;
			GeeIterator* _tmp4_ = NULL;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = keywords;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_keyword_it = _tmp4_;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			while (TRUE) {
#line 7914 "PhotoMetadata.c"
				GeeIterator* _tmp5_ = NULL;
				gboolean _tmp6_ = FALSE;
				gchar* keyword = NULL;
				GeeIterator* _tmp7_ = NULL;
				gpointer _tmp8_ = NULL;
				const gchar* _tmp9_ = NULL;
				gboolean _tmp10_ = FALSE;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = _keyword_it;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6_ = gee_iterator_next (_tmp5_);
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp6_) {
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					break;
#line 7930 "PhotoMetadata.c"
				}
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp7_ = _keyword_it;
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = gee_iterator_get (_tmp7_);
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				keyword = (gchar*) _tmp8_;
#line 1063 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp9_ = keyword;
#line 1063 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = g_str_has_prefix (_tmp9_, TAG_PATH_SEPARATOR_STRING);
#line 1063 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp10_) {
#line 7944 "PhotoMetadata.c"
					GeeCollection* path_components = NULL;
					const gchar* _tmp11_ = NULL;
					GeeList* _tmp12_ = NULL;
#line 1064 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp11_ = keyword;
#line 1064 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp12_ = hierarchical_tag_utilities_enumerate_path_components (_tmp11_);
#line 1064 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					path_components = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_COLLECTION, GeeCollection);
#line 7954 "PhotoMetadata.c"
					{
						GeeIterator* _component_it = NULL;
						GeeCollection* _tmp13_ = NULL;
						GeeIterator* _tmp14_ = NULL;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp13_ = path_components;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp14_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ITERABLE, GeeIterable));
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_component_it = _tmp14_;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						while (TRUE) {
#line 7967 "PhotoMetadata.c"
							GeeIterator* _tmp15_ = NULL;
							gboolean _tmp16_ = FALSE;
							gchar* component = NULL;
							GeeIterator* _tmp17_ = NULL;
							gpointer _tmp18_ = NULL;
							HierarchicalTagIndex* _tmp19_ = NULL;
							const gchar* _tmp20_ = NULL;
							const gchar* _tmp21_ = NULL;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp15_ = _component_it;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp16_ = gee_iterator_next (_tmp15_);
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							if (!_tmp16_) {
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
								break;
#line 7984 "PhotoMetadata.c"
							}
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp17_ = _component_it;
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp18_ = gee_iterator_get (_tmp17_);
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							component = (gchar*) _tmp18_;
#line 1067 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp19_ = htag_index;
#line 1067 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp20_ = component;
#line 1067 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp21_ = keyword;
#line 1067 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							hierarchical_tag_index_add_path (_tmp19_, _tmp20_, _tmp21_);
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_free0 (component);
#line 8002 "PhotoMetadata.c"
						}
#line 1066 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_object_unref0 (_component_it);
#line 8006 "PhotoMetadata.c"
					}
#line 1063 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (path_components);
#line 8010 "PhotoMetadata.c"
				} else {
					GeeSet* _tmp22_ = NULL;
					const gchar* _tmp23_ = NULL;
#line 1069 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp22_ = flat_keywords;
#line 1069 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp23_ = keyword;
#line 1069 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, GEE_TYPE_COLLECTION, GeeCollection), _tmp23_);
#line 8020 "PhotoMetadata.c"
				}
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_free0 (keyword);
#line 8024 "PhotoMetadata.c"
			}
#line 1062 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_object_unref0 (_keyword_it);
#line 8028 "PhotoMetadata.c"
		}
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp24_ = flat_keywords;
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp25_ = htag_index;
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp26_ = hierarchical_tag_index_get_all_tags (_tmp25_);
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp27_ = _tmp26_;
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_COLLECTION, GeeCollection), _tmp27_);
#line 1073 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_object_unref0 (_tmp27_);
#line 8042 "PhotoMetadata.c"
	}
#line 1076 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp28_ = keywords;
#line 1076 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp28_ != NULL) {
#line 8048 "PhotoMetadata.c"
		gchar** _tmp29_ = NULL;
		gint _tmp29__length1 = 0;
		GeeSet* _tmp30_ = NULL;
		PhotoMetadataSetOption _tmp31_ = 0;
		HierarchicalTagIndex* _tmp32_ = NULL;
#line 1077 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp29_ = photo_metadata_KEYWORD_TAGS;
#line 1077 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp29__length1 = photo_metadata_KEYWORD_TAGS_length1;
#line 1077 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp30_ = flat_keywords;
#line 1077 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp31_ = option;
#line 1077 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_all_string_multiple (self, _tmp29_, _tmp29__length1, G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_COLLECTION, GeeCollection), _tmp31_);
#line 1078 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp32_ = htag_index;
#line 1078 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_internal_set_hierarchical_keywords (self, _tmp32_);
#line 8068 "PhotoMetadata.c"
	} else {
		gchar** _tmp33_ = NULL;
		gint _tmp33__length1 = 0;
#line 1080 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp33_ = photo_metadata_KEYWORD_TAGS;
#line 1080 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp33__length1 = photo_metadata_KEYWORD_TAGS_length1;
#line 1080 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_remove_tags (self, _tmp33_, _tmp33__length1);
#line 1081 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_internal_set_hierarchical_keywords (self, NULL);
#line 8080 "PhotoMetadata.c"
	}
#line 1057 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (flat_keywords);
#line 1057 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_hierarchical_tag_index_unref0 (htag_index);
#line 8086 "PhotoMetadata.c"
}


gboolean photo_metadata_has_hierarchical_keywords (PhotoMetadata* self) {
	gboolean result = FALSE;
	HierarchicalKeywordField** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
#line 1085 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_HIERARCHICAL_KEYWORD_TAGS;
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1;
#line 8100 "PhotoMetadata.c"
	{
		HierarchicalKeywordField** field_collection = NULL;
		gint field_collection_length1 = 0;
		gint _field_collection_size_ = 0;
		gint field_it = 0;
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		field_collection = _tmp0_;
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		field_collection_length1 = _tmp0__length1;
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (field_it = 0; field_it < _tmp0__length1; field_it = field_it + 1) {
#line 8112 "PhotoMetadata.c"
			HierarchicalKeywordField* _tmp1_ = NULL;
			HierarchicalKeywordField* field = NULL;
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp1_ = _hierarchical_keyword_field_ref0 (field_collection[field_it]);
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			field = _tmp1_;
#line 8119 "PhotoMetadata.c"
			{
				GeeCollection* values = NULL;
				HierarchicalKeywordField* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				GeeList* _tmp4_ = NULL;
				gboolean _tmp5_ = FALSE;
				GeeCollection* _tmp6_ = NULL;
#line 1087 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp2_ = field;
#line 1087 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp3_ = _tmp2_->field_name;
#line 1087 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = photo_metadata_get_string_multiple (self, _tmp3_);
#line 1087 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				values = G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection);
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6_ = values;
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp6_ != NULL) {
#line 8139 "PhotoMetadata.c"
					GeeCollection* _tmp7_ = NULL;
					gint _tmp8_ = 0;
					gint _tmp9_ = 0;
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = values;
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp8_ = gee_collection_get_size (_tmp7_);
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp9_ = _tmp8_;
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp5_ = _tmp9_ > 0;
#line 8151 "PhotoMetadata.c"
				} else {
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp5_ = FALSE;
#line 8155 "PhotoMetadata.c"
				}
#line 1089 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp5_) {
#line 1090 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = TRUE;
#line 1090 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (values);
#line 1090 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_hierarchical_keyword_field_unref0 (field);
#line 1090 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 8167 "PhotoMetadata.c"
				}
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (values);
#line 1086 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_hierarchical_keyword_field_unref0 (field);
#line 8173 "PhotoMetadata.c"
			}
		}
	}
#line 1093 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = FALSE;
#line 1093 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8181 "PhotoMetadata.c"
}


GeeSet* photo_metadata_get_hierarchical_keywords (PhotoMetadata* self) {
	GeeSet* result = NULL;
	gboolean _tmp0_ = FALSE;
	GeeSet* h_keywords = NULL;
	GeeSet* _tmp1_ = NULL;
	HierarchicalKeywordField** _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	GError * _inner_error_ = NULL;
#line 1096 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1097 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_has_hierarchical_keywords (self);
#line 1097 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_assert (_tmp0_, "has_hierarchical_keywords()");
#line 1099 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_create_string_set (self, NULL, NULL, NULL);
#line 1099 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	h_keywords = _tmp1_;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = photo_metadata_HIERARCHICAL_KEYWORD_TAGS;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2__length1 = photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1;
#line 8207 "PhotoMetadata.c"
	{
		HierarchicalKeywordField** field_collection = NULL;
		gint field_collection_length1 = 0;
		gint _field_collection_size_ = 0;
		gint field_it = 0;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		field_collection = _tmp2_;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		field_collection_length1 = _tmp2__length1;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		for (field_it = 0; field_it < _tmp2__length1; field_it = field_it + 1) {
#line 8219 "PhotoMetadata.c"
			HierarchicalKeywordField* _tmp3_ = NULL;
			HierarchicalKeywordField* field = NULL;
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp3_ = _hierarchical_keyword_field_ref0 (field_collection[field_it]);
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			field = _tmp3_;
#line 8226 "PhotoMetadata.c"
			{
				GeeCollection* values = NULL;
				HierarchicalKeywordField* _tmp4_ = NULL;
				const gchar* _tmp5_ = NULL;
				GeeList* _tmp6_ = NULL;
				gboolean _tmp7_ = FALSE;
				GeeCollection* _tmp8_ = NULL;
				GeeArrayList* transformed_values = NULL;
				GeeArrayList* _tmp12_ = NULL;
#line 1102 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp4_ = field;
#line 1102 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp5_ = _tmp4_->field_name;
#line 1102 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp6_ = photo_metadata_get_string_multiple (self, _tmp5_);
#line 1102 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				values = G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_COLLECTION, GeeCollection);
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp8_ = values;
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp8_ == NULL) {
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = TRUE;
#line 8250 "PhotoMetadata.c"
				} else {
					GeeCollection* _tmp9_ = NULL;
					gint _tmp10_ = 0;
					gint _tmp11_ = 0;
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp9_ = values;
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp10_ = gee_collection_get_size (_tmp9_);
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp11_ = _tmp10_;
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp7_ = _tmp11_ < 1;
#line 8263 "PhotoMetadata.c"
				}
#line 1104 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp7_) {
#line 1105 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (values);
#line 1105 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_hierarchical_keyword_field_unref0 (field);
#line 1105 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					continue;
#line 8273 "PhotoMetadata.c"
				}
#line 1107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 1107 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				transformed_values = _tmp12_;
#line 8279 "PhotoMetadata.c"
				{
					GeeIterator* _current_value_it = NULL;
					GeeCollection* _tmp13_ = NULL;
					GeeIterator* _tmp14_ = NULL;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp13_ = values;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp14_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ITERABLE, GeeIterable));
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_current_value_it = _tmp14_;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					while (TRUE) {
#line 8292 "PhotoMetadata.c"
						GeeIterator* _tmp15_ = NULL;
						gboolean _tmp16_ = FALSE;
						gchar* current_value = NULL;
						GeeIterator* _tmp17_ = NULL;
						gpointer _tmp18_ = NULL;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp15_ = _current_value_it;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp16_ = gee_iterator_next (_tmp15_);
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (!_tmp16_) {
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							break;
#line 8306 "PhotoMetadata.c"
						}
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp17_ = _current_value_it;
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp18_ = gee_iterator_get (_tmp17_);
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						current_value = (gchar*) _tmp18_;
#line 8314 "PhotoMetadata.c"
						{
							GeeList* transformed = NULL;
							HierarchicalKeywordField* _tmp19_ = NULL;
							KeywordTransformer* _tmp20_ = NULL;
							const gchar* _tmp21_ = NULL;
							GeeList* _tmp22_ = NULL;
							GeeArrayList* _tmp23_ = NULL;
							GeeList* _tmp24_ = NULL;
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp19_ = field;
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp20_ = _tmp19_->transformer;
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp21_ = current_value;
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp22_ = keyword_transformer_transform (_tmp20_, _tmp21_, &_inner_error_);
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							transformed = _tmp22_;
#line 1110 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 8335 "PhotoMetadata.c"
								goto __catch28_g_error;
							}
#line 1111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp23_ = transformed_values;
#line 1111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp24_ = transformed;
#line 1111 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							gee_array_list_add_all (_tmp23_, G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_COLLECTION, GeeCollection));
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_object_unref0 (transformed);
#line 8346 "PhotoMetadata.c"
						}
						goto __finally28;
						__catch28_g_error:
						{
							GError* _error_ = NULL;
							const gchar* _tmp25_ = NULL;
							GError* _tmp26_ = NULL;
							const gchar* _tmp27_ = NULL;
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_error_ = _inner_error_;
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_inner_error_ = NULL;
#line 1113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp25_ = current_value;
#line 1113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp26_ = _error_;
#line 1113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp27_ = _tmp26_->message;
#line 1113 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							g_critical ("PhotoMetadata.vala:1113: Failed to transform tag value %s: %s", _tmp25_, _tmp27_);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_error_free0 (_error_);
#line 8369 "PhotoMetadata.c"
						}
						__finally28:
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_free0 (current_value);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_object_unref0 (_current_value_it);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_object_unref0 (transformed_values);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_object_unref0 (values);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_hierarchical_keyword_field_unref0 (field);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_g_object_unref0 (h_keywords);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							g_clear_error (&_inner_error_);
#line 1109 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							return NULL;
#line 8392 "PhotoMetadata.c"
						}
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_free0 (current_value);
#line 8396 "PhotoMetadata.c"
					}
#line 1108 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (_current_value_it);
#line 8400 "PhotoMetadata.c"
				}
				{
					GeeArrayList* _current_value_list = NULL;
					GeeArrayList* _tmp28_ = NULL;
					GeeArrayList* _tmp29_ = NULL;
					gint _current_value_size = 0;
					GeeArrayList* _tmp30_ = NULL;
					gint _tmp31_ = 0;
					gint _tmp32_ = 0;
					gint _current_value_index = 0;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp28_ = transformed_values;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp29_ = _g_object_ref0 (_tmp28_);
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_current_value_list = _tmp29_;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp30_ = _current_value_list;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp31_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp32_ = _tmp31_;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_current_value_size = _tmp32_;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_current_value_index = -1;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					while (TRUE) {
#line 8429 "PhotoMetadata.c"
						gint _tmp33_ = 0;
						gint _tmp34_ = 0;
						gint _tmp35_ = 0;
						gchar* current_value = NULL;
						GeeArrayList* _tmp36_ = NULL;
						gint _tmp37_ = 0;
						gpointer _tmp38_ = NULL;
						gchar* canonicalized = NULL;
						const gchar* _tmp39_ = NULL;
						HierarchicalKeywordField* _tmp40_ = NULL;
						const gchar* _tmp41_ = NULL;
						gchar* _tmp42_ = NULL;
						const gchar* _tmp43_ = NULL;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp33_ = _current_value_index;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_current_value_index = _tmp33_ + 1;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp34_ = _current_value_index;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp35_ = _current_value_size;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (!(_tmp34_ < _tmp35_)) {
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							break;
#line 8455 "PhotoMetadata.c"
						}
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp36_ = _current_value_list;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp37_ = _current_value_index;
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp38_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp37_);
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						current_value = (gchar*) _tmp38_;
#line 1120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp39_ = current_value;
#line 1120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp40_ = field;
#line 1120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp41_ = _tmp40_->path_separator;
#line 1120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp42_ = hierarchical_tag_utilities_canonicalize (_tmp39_, _tmp41_);
#line 1120 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						canonicalized = _tmp42_;
#line 1124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_tmp43_ = canonicalized;
#line 1124 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						if (_tmp43_ != NULL) {
#line 8479 "PhotoMetadata.c"
							GeeSet* _tmp44_ = NULL;
							const gchar* _tmp45_ = NULL;
#line 1125 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp44_ = h_keywords;
#line 1125 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							_tmp45_ = canonicalized;
#line 1125 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
							gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, GEE_TYPE_COLLECTION, GeeCollection), _tmp45_);
#line 8488 "PhotoMetadata.c"
						}
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_free0 (canonicalized);
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
						_g_free0 (current_value);
#line 8494 "PhotoMetadata.c"
					}
#line 1119 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_object_unref0 (_current_value_list);
#line 8498 "PhotoMetadata.c"
				}
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (transformed_values);
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_g_object_unref0 (values);
#line 1101 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_hierarchical_keyword_field_unref0 (field);
#line 8506 "PhotoMetadata.c"
			}
		}
	}
#line 1129 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = h_keywords;
#line 1129 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8514 "PhotoMetadata.c"
}


gboolean photo_metadata_has_orientation (PhotoMetadata* self) {
	gboolean result = FALSE;
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2Orientation _tmp1_ = 0;
#line 1132 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1133 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 1133 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gexiv2_metadata_get_orientation (_tmp0_);
#line 1133 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_ == GEXIV2_ORIENTATION_UNSPECIFIED;
#line 1133 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8532 "PhotoMetadata.c"
}


Orientation photo_metadata_get_orientation (PhotoMetadata* self) {
	Orientation result = 0;
	GExiv2Orientation orientation = 0;
	GExiv2Metadata* _tmp0_ = NULL;
	GExiv2Orientation _tmp1_ = 0;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	GExiv2Orientation _tmp4_ = 0;
#line 1137 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), 0);
#line 1140 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 1140 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = gexiv2_metadata_get_orientation (_tmp0_);
#line 1140 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	orientation = _tmp1_;
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = orientation;
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ == GEXIV2_ORIENTATION_UNSPECIFIED) {
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = TRUE;
#line 8558 "PhotoMetadata.c"
	} else {
		GExiv2Orientation _tmp5_ = 0;
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = orientation;
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp5_ < ORIENTATION_MIN;
#line 8565 "PhotoMetadata.c"
	}
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = TRUE;
#line 8571 "PhotoMetadata.c"
	} else {
		GExiv2Orientation _tmp6_ = 0;
#line 1142 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = orientation;
#line 1142 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp2_ = _tmp6_ > ORIENTATION_MAX;
#line 8578 "PhotoMetadata.c"
	}
#line 1141 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp2_) {
#line 1143 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = ORIENTATION_TOP_LEFT;
#line 1143 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8586 "PhotoMetadata.c"
	} else {
		GExiv2Orientation _tmp7_ = 0;
#line 1145 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = orientation;
#line 1145 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = (Orientation) _tmp7_;
#line 1145 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8595 "PhotoMetadata.c"
	}
}


void photo_metadata_set_orientation (PhotoMetadata* self, Orientation orientation) {
	GExiv2Metadata* _tmp0_ = NULL;
	Orientation _tmp1_ = 0;
#line 1148 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 1150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = orientation;
#line 1150 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	gexiv2_metadata_set_orientation (_tmp0_, (GExiv2Orientation) _tmp1_);
#line 8611 "PhotoMetadata.c"
}


gboolean photo_metadata_get_gps (PhotoMetadata* self, gdouble* longitude, gchar** long_ref, gdouble* latitude, gchar** lat_ref, gdouble* altitude) {
	gdouble _vala_longitude = 0.0;
	gchar* _vala_long_ref = NULL;
	gdouble _vala_latitude = 0.0;
	gchar* _vala_lat_ref = NULL;
	gdouble _vala_altitude = 0.0;
	gboolean result = FALSE;
	GExiv2Metadata* _tmp0_ = NULL;
	gdouble _tmp1_ = 0.0;
	gdouble _tmp2_ = 0.0;
	gdouble _tmp3_ = 0.0;
	gboolean _tmp4_ = FALSE;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
#line 1153 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->priv->exiv2;
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = gexiv2_metadata_get_gps_info (_tmp0_, &_tmp1_, &_tmp2_, &_tmp3_);
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_longitude = _tmp1_;
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_latitude = _tmp2_;
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_altitude = _tmp3_;
#line 1155 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp4_) {
#line 1156 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_vala_long_ref);
#line 1156 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_vala_long_ref = NULL;
#line 1157 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_vala_lat_ref);
#line 1157 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_vala_lat_ref = NULL;
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = FALSE;
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (longitude) {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*longitude = _vala_longitude;
#line 8657 "PhotoMetadata.c"
		}
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (long_ref) {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*long_ref = _vala_long_ref;
#line 8663 "PhotoMetadata.c"
		} else {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (_vala_long_ref);
#line 8667 "PhotoMetadata.c"
		}
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (latitude) {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*latitude = _vala_latitude;
#line 8673 "PhotoMetadata.c"
		}
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (lat_ref) {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*lat_ref = _vala_lat_ref;
#line 8679 "PhotoMetadata.c"
		} else {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_g_free0 (_vala_lat_ref);
#line 8683 "PhotoMetadata.c"
		}
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (altitude) {
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*altitude = _vala_altitude;
#line 8689 "PhotoMetadata.c"
		}
#line 1159 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8693 "PhotoMetadata.c"
	}
#line 1162 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = photo_metadata_get_string (self, "Exif.GPSInfo.GPSLongitudeRef", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1162 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_vala_long_ref);
#line 1162 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_long_ref = _tmp5_;
#line 1163 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = photo_metadata_get_string (self, "Exif.GPSInfo.GPSLatitudeRef", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1163 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_vala_lat_ref);
#line 1163 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_lat_ref = _tmp6_;
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = TRUE;
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (longitude) {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*longitude = _vala_longitude;
#line 8713 "PhotoMetadata.c"
	}
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (long_ref) {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*long_ref = _vala_long_ref;
#line 8719 "PhotoMetadata.c"
	} else {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_vala_long_ref);
#line 8723 "PhotoMetadata.c"
	}
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (latitude) {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*latitude = _vala_latitude;
#line 8729 "PhotoMetadata.c"
	}
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (lat_ref) {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*lat_ref = _vala_lat_ref;
#line 8735 "PhotoMetadata.c"
	} else {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_vala_lat_ref);
#line 8739 "PhotoMetadata.c"
	}
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (altitude) {
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*altitude = _vala_altitude;
#line 8745 "PhotoMetadata.c"
	}
#line 1165 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8749 "PhotoMetadata.c"
}


gboolean photo_metadata_get_exposure (PhotoMetadata* self, MetadataRational* exposure) {
	MetadataRational _vala_exposure = {0};
	gboolean result = FALSE;
	MetadataRational _tmp0_ = {0};
	gboolean _tmp1_ = FALSE;
#line 1168 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_rational (self, "Exif.Photo.ExposureTime", &_tmp0_);
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_exposure = _tmp0_;
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (exposure) {
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*exposure = _vala_exposure;
#line 8770 "PhotoMetadata.c"
	}
#line 1169 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8774 "PhotoMetadata.c"
}


gchar* photo_metadata_get_exposure_string (PhotoMetadata* self) {
	gchar* result = NULL;
	MetadataRational exposure_time = {0};
	MetadataRational _tmp0_ = {0};
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gchar* _tmp3_ = NULL;
#line 1172 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_rational (self, "Exif.Photo.ExposureTime", &_tmp0_);
#line 1174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	exposure_time = _tmp0_;
#line 1174 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp1_) {
#line 1175 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 1175 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8797 "PhotoMetadata.c"
	}
#line 1177 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = metadata_rational_is_valid (&exposure_time);
#line 1177 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp2_) {
#line 1178 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 1178 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8807 "PhotoMetadata.c"
	}
#line 1180 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = photo_metadata_get_string_interpreted (self, "Exif.Photo.ExposureTime", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1180 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp3_;
#line 1180 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8815 "PhotoMetadata.c"
}


gboolean photo_metadata_get_iso (PhotoMetadata* self, glong* iso) {
	glong _vala_iso = 0L;
	gboolean result = FALSE;
	gboolean fetched_ok = FALSE;
	glong _tmp0_ = 0L;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	glong _tmp4_ = 0L;
#line 1183 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1184 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_long (self, "Exif.Photo.ISOSpeedRatings", &_tmp0_);
#line 1184 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_iso = _tmp0_;
#line 1184 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	fetched_ok = _tmp1_;
#line 1186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = fetched_ok;
#line 1186 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp2_ == FALSE) {
#line 1187 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = FALSE;
#line 1187 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (iso) {
#line 1187 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*iso = _vala_iso;
#line 8846 "PhotoMetadata.c"
		}
#line 1187 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8850 "PhotoMetadata.c"
	}
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = _vala_iso;
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_ < ((glong) 6)) {
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = TRUE;
#line 8858 "PhotoMetadata.c"
	} else {
		glong _tmp5_ = 0L;
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = _vala_iso;
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = _tmp5_ > ((glong) 409600);
#line 8865 "PhotoMetadata.c"
	}
#line 1191 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp3_) {
#line 1192 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = FALSE;
#line 1192 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		if (iso) {
#line 1192 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			*iso = _vala_iso;
#line 8875 "PhotoMetadata.c"
		}
#line 1192 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8879 "PhotoMetadata.c"
	}
#line 1194 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = TRUE;
#line 1194 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (iso) {
#line 1194 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*iso = _vala_iso;
#line 8887 "PhotoMetadata.c"
	}
#line 1194 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8891 "PhotoMetadata.c"
}


gchar* photo_metadata_get_iso_string (PhotoMetadata* self) {
	gchar* result = NULL;
	glong iso = 0L;
	glong _tmp0_ = 0L;
	gboolean _tmp1_ = FALSE;
	gchar* _tmp2_ = NULL;
#line 1197 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1199 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_iso (self, &_tmp0_);
#line 1199 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	iso = _tmp0_;
#line 1199 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp1_) {
#line 1200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 1200 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8913 "PhotoMetadata.c"
	}
#line 1202 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = photo_metadata_get_string_interpreted (self, "Exif.Photo.ISOSpeedRatings", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1202 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp2_;
#line 1202 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8921 "PhotoMetadata.c"
}


gboolean photo_metadata_get_aperture (PhotoMetadata* self, MetadataRational* aperture) {
	MetadataRational _vala_aperture = {0};
	gboolean result = FALSE;
	MetadataRational _tmp0_ = {0};
	gboolean _tmp1_ = FALSE;
#line 1205 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_rational (self, "Exif.Photo.FNumber", &_tmp0_);
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_aperture = _tmp0_;
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (aperture) {
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*aperture = _vala_aperture;
#line 8942 "PhotoMetadata.c"
	}
#line 1206 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 8946 "PhotoMetadata.c"
}


gchar* photo_metadata_get_aperture_string (PhotoMetadata* self, gboolean pango_formatted) {
	gchar* result = NULL;
	MetadataRational aperture = {0};
	MetadataRational _tmp0_ = {0};
	gboolean _tmp1_ = FALSE;
	gdouble aperture_value = 0.0;
	MetadataRational _tmp2_ = {0};
	gint _tmp3_ = 0;
	MetadataRational _tmp4_ = {0};
	gint _tmp5_ = 0;
	gdouble _tmp6_ = 0.0;
	const gchar* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	const gchar* _tmp9_ = NULL;
	gdouble _tmp10_ = 0.0;
	gdouble _tmp11_ = 0.0;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
#line 1209 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_aperture (self, &_tmp0_);
#line 1211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	aperture = _tmp0_;
#line 1211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (!_tmp1_) {
#line 1212 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = NULL;
#line 1212 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 8982 "PhotoMetadata.c"
	}
#line 1214 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = aperture;
#line 1214 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_.numerator;
#line 1214 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = aperture;
#line 1214 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = _tmp4_.denominator;
#line 1214 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	aperture_value = ((gdouble) _tmp3_) / ((gdouble) _tmp5_);
#line 1215 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = aperture_value;
#line 1215 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	aperture_value = ((gint) (_tmp6_ * 10.0)) / 10.0;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = pango_formatted;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp8_) {
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = "<i>f</i>/";
#line 9004 "PhotoMetadata.c"
	} else {
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = "f/";
#line 9008 "PhotoMetadata.c"
	}
#line 1218 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = aperture_value;
#line 1218 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (fmod (_tmp10_, 1) == ((gdouble) 0)) {
#line 1218 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = "%.0f";
#line 9016 "PhotoMetadata.c"
	} else {
#line 1218 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = "%.1f";
#line 9020 "PhotoMetadata.c"
	}
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = aperture_value;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = g_strdup_printf (_tmp9_, _tmp11_);
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = _tmp12_;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = g_strconcat (_tmp7_, _tmp13_, NULL);
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = _tmp14_;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp13_);
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp15_;
#line 1217 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9038 "PhotoMetadata.c"
}


gchar* photo_metadata_get_camera_make (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1221 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1222 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Image.Make", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1222 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1222 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9053 "PhotoMetadata.c"
}


gchar* photo_metadata_get_camera_model (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1225 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Image.Model", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9068 "PhotoMetadata.c"
}


gboolean photo_metadata_get_flash (PhotoMetadata* self, glong* flash) {
	glong _vala_flash = 0L;
	gboolean result = FALSE;
	glong _tmp0_ = 0L;
	gboolean _tmp1_ = FALSE;
#line 1229 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_long (self, "Exif.Photo.Flash", &_tmp0_);
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_flash = _tmp0_;
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (flash) {
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*flash = _vala_flash;
#line 9089 "PhotoMetadata.c"
	}
#line 1231 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9093 "PhotoMetadata.c"
}


gchar* photo_metadata_get_flash_string (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1234 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1236 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Photo.Flash", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1236 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1236 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9108 "PhotoMetadata.c"
}


gboolean photo_metadata_get_focal_length (PhotoMetadata* self, MetadataRational* focal_length) {
	MetadataRational _vala_focal_length = {0};
	gboolean result = FALSE;
	MetadataRational _tmp0_ = {0};
	gboolean _tmp1_ = FALSE;
#line 1239 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), FALSE);
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_rational (self, "Exif.Photo.FocalLength", &_tmp0_);
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_focal_length = _tmp0_;
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (focal_length) {
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		*focal_length = _vala_focal_length;
#line 9129 "PhotoMetadata.c"
	}
#line 1240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9133 "PhotoMetadata.c"
}


gchar* photo_metadata_get_focal_length_string (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1244 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Photo.FocalLength", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1244 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1244 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9148 "PhotoMetadata.c"
}


gchar* photo_metadata_get_artist (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	gchar* _tmp1_ = NULL;
#line 1253 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_ARTIST_TAGS;
#line 1254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_ARTIST_TAGS_length1;
#line 1254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_string_interpreted (self, _tmp0_, _tmp0__length1);
#line 1254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp1_;
#line 1254 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9169 "PhotoMetadata.c"
}


gchar* photo_metadata_get_copyright (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1257 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Image.Copyright", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1258 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9184 "PhotoMetadata.c"
}


gchar* photo_metadata_get_software (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1261 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Image.Software", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1262 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9199 "PhotoMetadata.c"
}


void photo_metadata_set_software (PhotoMetadata* self, const gchar* software, const gchar* version) {
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
#line 1265 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1265 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (software != NULL);
#line 1265 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (version != NULL);
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = software;
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = version;
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = g_strdup_printf ("%s %s", _tmp0_, _tmp1_);
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_;
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string (self, "Exif.Image.Software", _tmp3_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1267 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp3_);
#line 1269 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = photo_metadata_has_iptc (self);
#line 1269 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp4_) {
#line 9231 "PhotoMetadata.c"
		const gchar* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
#line 1270 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = software;
#line 1270 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_string (self, "Iptc.Application2.Program", _tmp5_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1271 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = version;
#line 1271 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_string (self, "Iptc.Application2.ProgramVersion", _tmp6_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 9242 "PhotoMetadata.c"
	}
}


void photo_metadata_remove_software (PhotoMetadata* self) {
#line 1275 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1276 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_remove_tag (self, "Exif.Image.Software");
#line 1277 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_remove_tag (self, "Iptc.Application2.Program");
#line 1278 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_remove_tag (self, "Iptc.Application2.ProgramVersion");
#line 9256 "PhotoMetadata.c"
}


gchar* photo_metadata_get_exposure_bias (PhotoMetadata* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
#line 1281 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), NULL);
#line 1282 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_get_string_interpreted (self, "Exif.Photo.ExposureBiasValue", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1282 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp0_;
#line 1282 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9271 "PhotoMetadata.c"
}


Rating photo_metadata_get_rating (PhotoMetadata* self) {
	Rating result = 0;
	gchar* rating_string = NULL;
	gchar** _tmp0_ = NULL;
	gint _tmp0__length1 = 0;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gint int_percent_rating = 0;
	const gchar* _tmp8_ = NULL;
	gint _tmp9_ = 0;
	Rating _tmp18_ = 0;
#line 1293 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (self), 0);
#line 1294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = photo_metadata_RATING_TAGS;
#line 1294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0__length1 = photo_metadata_RATING_TAGS_length1;
#line 1294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = photo_metadata_get_first_string (self, _tmp0_, _tmp0__length1);
#line 1294 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	rating_string = _tmp1_;
#line 1295 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = rating_string;
#line 1295 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp2_ != NULL) {
#line 9302 "PhotoMetadata.c"
		const gchar* _tmp3_ = NULL;
		gint _tmp4_ = 0;
		Rating _tmp5_ = 0;
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp3_ = rating_string;
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = atoi (_tmp3_);
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp5_ = rating_unserialize (_tmp4_);
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = _tmp5_;
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (rating_string);
#line 1296 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 9318 "PhotoMetadata.c"
	}
#line 1298 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = photo_metadata_get_string (self, "Exif.Image.RatingPercent", PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1298 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (rating_string);
#line 1298 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	rating_string = _tmp6_;
#line 1299 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = rating_string;
#line 1299 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp7_ == NULL) {
#line 1300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		result = RATING_UNRATED;
#line 1300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (rating_string);
#line 1300 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		return result;
#line 9336 "PhotoMetadata.c"
	}
#line 1303 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = rating_string;
#line 1303 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = atoi (_tmp8_);
#line 1303 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	int_percent_rating = _tmp9_;
#line 9344 "PhotoMetadata.c"
	{
		gint i = 0;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		i = 5;
#line 9349 "PhotoMetadata.c"
		{
			gboolean _tmp10_ = FALSE;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			_tmp10_ = TRUE;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
			while (TRUE) {
#line 9356 "PhotoMetadata.c"
				gint _tmp12_ = 0;
				gint _tmp13_ = 0;
				gint _tmp14_ = 0;
				gint _tmp15_ = 0;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!_tmp10_) {
#line 9363 "PhotoMetadata.c"
					gint _tmp11_ = 0;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp11_ = i;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					i = _tmp11_ - 1;
#line 9369 "PhotoMetadata.c"
				}
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp10_ = FALSE;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp12_ = i;
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (!(_tmp12_ >= 0)) {
#line 1304 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					break;
#line 9379 "PhotoMetadata.c"
				}
#line 1305 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp13_ = int_percent_rating;
#line 1305 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp14_ = i;
#line 1305 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				_tmp15_ = RESOURCES_rating_thresholds[_tmp14_];
#line 1305 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
				if (_tmp13_ >= _tmp15_) {
#line 9389 "PhotoMetadata.c"
					gint _tmp16_ = 0;
					Rating _tmp17_ = 0;
#line 1306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp16_ = i;
#line 1306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_tmp17_ = rating_unserialize (_tmp16_);
#line 1306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					result = _tmp17_;
#line 1306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					_g_free0 (rating_string);
#line 1306 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
					return result;
#line 9402 "PhotoMetadata.c"
				}
			}
		}
	}
#line 1308 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp18_ = rating_unserialize (-1);
#line 1308 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp18_;
#line 1308 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (rating_string);
#line 1308 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9415 "PhotoMetadata.c"
}


void photo_metadata_set_rating (PhotoMetadata* self, Rating rating) {
	gint int_rating = 0;
	Rating _tmp0_ = 0;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gint _tmp5_ = 0;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gint _tmp8_ = 0;
#line 1316 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_if_fail (IS_PHOTO_METADATA (self));
#line 1317 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = rating;
#line 1317 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = rating_serialize (_tmp0_);
#line 1317 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	int_rating = _tmp1_;
#line 1318 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = int_rating;
#line 1318 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = g_strdup_printf ("%i", _tmp2_);
#line 1318 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = _tmp3_;
#line 1318 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string (self, "Xmp.xmp.Rating", _tmp4_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1318 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp4_);
#line 1319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = int_rating;
#line 1319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = g_strdup_printf ("%i", _tmp5_);
#line 1319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = _tmp6_;
#line 1319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_set_string (self, "Exif.Image.Rating", _tmp7_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1319 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (_tmp7_);
#line 1321 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = int_rating;
#line 1321 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (0 <= _tmp8_) {
#line 9462 "PhotoMetadata.c"
		gint _tmp9_ = 0;
		gint _tmp10_ = 0;
		gchar* _tmp11_ = NULL;
		gchar* _tmp12_ = NULL;
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp9_ = int_rating;
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp10_ = RESOURCES_rating_thresholds[_tmp9_];
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp11_ = g_strdup_printf ("%i", _tmp10_);
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp12_ = _tmp11_;
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_string (self, "Exif.Image.RatingPercent", _tmp12_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1322 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp12_);
#line 9479 "PhotoMetadata.c"
	} else {
		gint _tmp13_ = 0;
		gchar* _tmp14_ = NULL;
		gchar* _tmp15_ = NULL;
#line 1324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp13_ = int_rating;
#line 1324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp14_ = g_strdup_printf ("%i", _tmp13_);
#line 1324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp15_ = _tmp14_;
#line 1324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		photo_metadata_set_string (self, "Exif.Image.RatingPercent", _tmp15_, PHOTO_METADATA_PREPARE_STRING_OPTIONS);
#line 1324 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_g_free0 (_tmp15_);
#line 9494 "PhotoMetadata.c"
	}
}


static gpointer _media_metadata_ref0 (gpointer self) {
#line 235 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self ? media_metadata_ref (self) : NULL;
#line 9502 "PhotoMetadata.c"
}


static PhotoMetadataInternalPhotoPreview* photo_metadata_internal_photo_preview_construct (GType object_type, PhotoMetadata* owner, const gchar* name, guint number, GExiv2PreviewProperties* props) {
	PhotoMetadataInternalPhotoPreview* self = NULL;
	const gchar* _tmp0_ = NULL;
	GExiv2PreviewProperties* _tmp1_ = NULL;
	guint32 _tmp2_ = 0U;
	GExiv2PreviewProperties* _tmp3_ = NULL;
	guint32 _tmp4_ = 0U;
	Dimensions _tmp5_ = {0};
	GExiv2PreviewProperties* _tmp6_ = NULL;
	guint32 _tmp7_ = 0U;
	GExiv2PreviewProperties* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	GExiv2PreviewProperties* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	PhotoMetadata* _tmp12_ = NULL;
	PhotoMetadata* _tmp13_ = NULL;
	guint _tmp14_ = 0U;
#line 230 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (IS_PHOTO_METADATA (owner), NULL);
#line 230 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 230 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_return_val_if_fail (GEXIV2_IS_PREVIEW_PROPERTIES (props), NULL);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = name;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = props;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = gexiv2_preview_properties_get_width (_tmp1_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = props;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = gexiv2_preview_properties_get_height (_tmp3_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	dimensions_init (&_tmp5_, (gint) _tmp2_, (gint) _tmp4_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = props;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = gexiv2_preview_properties_get_size (_tmp6_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = props;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = gexiv2_preview_properties_get_mime_type (_tmp8_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = props;
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = gexiv2_preview_properties_get_extension (_tmp10_);
#line 232 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = (PhotoMetadataInternalPhotoPreview*) photo_preview_construct (object_type, _tmp0_, &_tmp5_, _tmp7_, _tmp9_, _tmp11_);
#line 235 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = owner;
#line 235 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = _media_metadata_ref0 (_tmp12_);
#line 235 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_media_metadata_unref0 (self->owner);
#line 235 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->owner = _tmp13_;
#line 236 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = number;
#line 236 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->number = _tmp14_;
#line 230 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return self;
#line 9569 "PhotoMetadata.c"
}


static PhotoMetadataInternalPhotoPreview* photo_metadata_internal_photo_preview_new (PhotoMetadata* owner, const gchar* name, guint number, GExiv2PreviewProperties* props) {
#line 230 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return photo_metadata_internal_photo_preview_construct (PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, owner, name, number, props);
#line 9576 "PhotoMetadata.c"
}


static GBytes* photo_metadata_internal_photo_preview_real_flatten (PhotoPreview* base, GError** error) {
	PhotoMetadataInternalPhotoPreview * self;
	GBytes* result = NULL;
	GExiv2PreviewProperties** props = NULL;
	PhotoMetadata* _tmp0_ = NULL;
	GExiv2Metadata* _tmp1_ = NULL;
	GExiv2PreviewProperties** _tmp2_ = NULL;
	GExiv2PreviewProperties** _tmp3_ = NULL;
	gint props_length1 = 0;
	gint _props_size_ = 0;
	gboolean _tmp4_ = FALSE;
	GExiv2PreviewProperties** _tmp5_ = NULL;
	gint _tmp5__length1 = 0;
	PhotoMetadata* _tmp8_ = NULL;
	GExiv2Metadata* _tmp9_ = NULL;
	GExiv2PreviewProperties** _tmp10_ = NULL;
	gint _tmp10__length1 = 0;
	guint _tmp11_ = 0U;
	GExiv2PreviewProperties* _tmp12_ = NULL;
	GExiv2PreviewImage* _tmp13_ = NULL;
	GExiv2PreviewImage* _tmp14_ = NULL;
	guint32 _tmp15_;
	guint8* _tmp16_ = NULL;
	GBytes* _tmp17_ = NULL;
	GBytes* _tmp18_ = NULL;
#line 239 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, PhotoMetadataInternalPhotoPreview);
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = self->owner;
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = _tmp0_->priv->exiv2;
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = _tmp2_ = gexiv2_metadata_get_preview_properties (_tmp1_);
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props = _tmp3_;
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	props_length1 = _vala_array_length (_tmp2_);
#line 240 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_props_size_ = props_length1;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = props;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5__length1 = props_length1;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	if (_tmp5_ != NULL) {
#line 9625 "PhotoMetadata.c"
		GExiv2PreviewProperties** _tmp6_ = NULL;
		gint _tmp6__length1 = 0;
		guint _tmp7_ = 0U;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6_ = props;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp6__length1 = props_length1;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp7_ = self->number;
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = ((guint) _tmp6__length1) > _tmp7_;
#line 9637 "PhotoMetadata.c"
	} else {
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
		_tmp4_ = FALSE;
#line 9641 "PhotoMetadata.c"
	}
#line 241 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_vala_assert (_tmp4_, "props != null && props.length > number");
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = self->owner;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = _tmp8_->priv->exiv2;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = props;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10__length1 = props_length1;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = self->number;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = _tmp10_[_tmp11_];
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = gexiv2_metadata_get_preview_image (_tmp9_, _tmp12_);
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = _tmp13_;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp16_ = gexiv2_preview_image_get_data (_tmp14_, &_tmp15_);
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp17_ = g_bytes_new (_tmp16_, _tmp15_);
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp18_ = _tmp17_;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (_tmp14_);
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	result = _tmp18_;
#line 243 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	return result;
#line 9673 "PhotoMetadata.c"
}


static void photo_metadata_internal_photo_preview_class_init (PhotoMetadataInternalPhotoPreviewClass * klass) {
#line 226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_internal_photo_preview_parent_class = g_type_class_peek_parent (klass);
#line 226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((PhotoPreviewClass *) klass)->finalize = photo_metadata_internal_photo_preview_finalize;
#line 226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((PhotoPreviewClass *) klass)->flatten = (GBytes* (*)(PhotoPreview*, GError**)) photo_metadata_internal_photo_preview_real_flatten;
#line 9684 "PhotoMetadata.c"
}


static void photo_metadata_internal_photo_preview_instance_init (PhotoMetadataInternalPhotoPreview * self) {
}


static void photo_metadata_internal_photo_preview_finalize (PhotoPreview* obj) {
	PhotoMetadataInternalPhotoPreview * self;
#line 226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PHOTO_METADATA_TYPE_INTERNAL_PHOTO_PREVIEW, PhotoMetadataInternalPhotoPreview);
#line 227 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_media_metadata_unref0 (self->owner);
#line 226 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	PHOTO_PREVIEW_CLASS (photo_metadata_internal_photo_preview_parent_class)->finalize (obj);
#line 9700 "PhotoMetadata.c"
}


static GType photo_metadata_internal_photo_preview_get_type (void) {
	static volatile gsize photo_metadata_internal_photo_preview_type_id__volatile = 0;
	if (g_once_init_enter (&photo_metadata_internal_photo_preview_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PhotoMetadataInternalPhotoPreviewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) photo_metadata_internal_photo_preview_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhotoMetadataInternalPhotoPreview), 0, (GInstanceInitFunc) photo_metadata_internal_photo_preview_instance_init, NULL };
		GType photo_metadata_internal_photo_preview_type_id;
		photo_metadata_internal_photo_preview_type_id = g_type_register_static (TYPE_PHOTO_PREVIEW, "PhotoMetadataInternalPhotoPreview", &g_define_type_info, 0);
		g_once_init_leave (&photo_metadata_internal_photo_preview_type_id__volatile, photo_metadata_internal_photo_preview_type_id);
	}
	return photo_metadata_internal_photo_preview_type_id__volatile;
}


static void photo_metadata_class_init (PhotoMetadataClass * klass) {
	gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar** _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	gchar* _tmp10_ = NULL;
	gchar** _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar** _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	gchar** _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	gchar* _tmp21_ = NULL;
	gchar* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	gchar** _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	gchar* _tmp26_ = NULL;
	gchar* _tmp27_ = NULL;
	gchar* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	gchar** _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	gchar* _tmp32_ = NULL;
	gchar** _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	gchar* _tmp36_ = NULL;
	gchar** _tmp37_ = NULL;
	NullKeywordTransformer* _tmp38_ = NULL;
	NullKeywordTransformer* _tmp39_ = NULL;
	HierarchicalKeywordField* _tmp40_ = NULL;
	NullKeywordTransformer* _tmp41_ = NULL;
	NullKeywordTransformer* _tmp42_ = NULL;
	HierarchicalKeywordField* _tmp43_ = NULL;
	ACDSeeKeywordTransformer* _tmp44_ = NULL;
	ACDSeeKeywordTransformer* _tmp45_ = NULL;
	HierarchicalKeywordField* _tmp46_ = NULL;
	NullKeywordTransformer* _tmp47_ = NULL;
	NullKeywordTransformer* _tmp48_ = NULL;
	HierarchicalKeywordField* _tmp49_ = NULL;
	NullKeywordTransformer* _tmp50_ = NULL;
	NullKeywordTransformer* _tmp51_ = NULL;
	HierarchicalKeywordField* _tmp52_ = NULL;
	HierarchicalKeywordField** _tmp53_ = NULL;
	gchar* _tmp54_ = NULL;
	gchar* _tmp55_ = NULL;
	gchar* _tmp56_ = NULL;
	gchar** _tmp57_ = NULL;
	gchar* _tmp58_ = NULL;
	gchar* _tmp59_ = NULL;
	gchar* _tmp60_ = NULL;
	gchar* _tmp61_ = NULL;
	gchar* _tmp62_ = NULL;
	gchar** _tmp63_ = NULL;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_parent_class = g_type_class_peek_parent (klass);
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((MediaMetadataClass *) klass)->finalize = photo_metadata_finalize;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	g_type_class_add_private (klass, sizeof (PhotoMetadataPrivate));
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((MediaMetadataClass *) klass)->read_from_file = (void (*)(MediaMetadata*, GFile*, GError**)) photo_metadata_real_read_from_file;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((MediaMetadataClass *) klass)->get_creation_date_time = (MetadataDateTime* (*)(MediaMetadata*)) photo_metadata_real_get_creation_date_time;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((MediaMetadataClass *) klass)->get_title = (gchar* (*)(MediaMetadata*)) photo_metadata_real_get_title;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	((MediaMetadataClass *) klass)->get_comment = (gchar* (*)(MediaMetadata*)) photo_metadata_real_get_comment;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = g_strdup ("Exif.Image.DateTime");
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup ("Xmp.tiff.DateTime");
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp2_ = g_strdup ("Xmp.xmp.ModifyDate");
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp3_ = g_strdup ("Xmp.acdsee.datetime");
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_ = g_new0 (gchar*, 4 + 1);
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_[0] = _tmp0_;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_[1] = _tmp1_;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_[2] = _tmp2_;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp4_[3] = _tmp3_;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_DATE_TIME_TAGS = _tmp4_;
#line 800 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_DATE_TIME_TAGS_length1 = 4;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp5_ = g_strdup ("Exif.Photo.DateTimeOriginal");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp6_ = g_strdup ("Xmp.exif.DateTimeOriginal");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp7_ = g_strdup ("Xmp.xmp.CreateDate");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp8_ = g_strdup ("Exif.Photo.DateTimeDigitized");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp9_ = g_strdup ("Xmp.exif.DateTimeDigitized");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp10_ = g_strdup ("Exif.Image.DateTime");
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_ = g_new0 (gchar*, 6 + 1);
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[0] = _tmp5_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[1] = _tmp6_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[2] = _tmp7_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[3] = _tmp8_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[4] = _tmp9_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp11_[5] = _tmp10_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_EXPOSURE_DATE_TIME_TAGS = _tmp11_;
#line 819 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_EXPOSURE_DATE_TIME_TAGS_length1 = 6;
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp12_ = g_strdup ("Exif.Photo.DateTimeDigitized");
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp13_ = g_strdup ("Xmp.exif.DateTimeDigitized");
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_ = g_new0 (gchar*, 2 + 1);
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_[0] = _tmp12_;
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp14_[1] = _tmp13_;
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_DIGITIZED_DATE_TIME_TAGS = _tmp14_;
#line 840 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_DIGITIZED_DATE_TIME_TAGS_length1 = 2;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp15_ = g_strdup ("Exif.Photo.PixelXDimension");
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp16_ = g_strdup ("Xmp.exif.PixelXDimension");
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp17_ = g_strdup ("Xmp.tiff.ImageWidth");
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp18_ = g_strdup ("Xmp.exif.PixelXDimension");
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_ = g_new0 (gchar*, 4 + 1);
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_[0] = _tmp15_;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_[1] = _tmp16_;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_[2] = _tmp17_;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp19_[3] = _tmp18_;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_WIDTH_TAGS = _tmp19_;
#line 865 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_WIDTH_TAGS_length1 = 4;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp20_ = g_strdup ("Exif.Photo.PixelYDimension");
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp21_ = g_strdup ("Xmp.exif.PixelYDimension");
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp22_ = g_strdup ("Xmp.tiff.ImageHeight");
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp23_ = g_strdup ("Xmp.exif.PixelYDimension");
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_ = g_new0 (gchar*, 4 + 1);
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_[0] = _tmp20_;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_[1] = _tmp21_;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_[2] = _tmp22_;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp24_[3] = _tmp23_;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_HEIGHT_TAGS = _tmp24_;
#line 872 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_HEIGHT_TAGS_length1 = 4;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp25_ = g_strdup ("Iptc.Application2.Caption");
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp26_ = g_strdup ("Xmp.dc.title");
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp27_ = g_strdup ("Iptc.Application2.Headline");
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp28_ = g_strdup ("Xmp.photoshop.Headline");
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp29_ = g_strdup ("Xmp.acdsee.caption");
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_ = g_new0 (gchar*, 5 + 1);
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_[0] = _tmp25_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_[1] = _tmp26_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_[2] = _tmp27_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_[3] = _tmp28_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp30_[4] = _tmp29_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_STANDARD_TITLE_TAGS = _tmp30_;
#line 931 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_STANDARD_TITLE_TAGS_length1 = 5;
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp31_ = g_strdup ("Exif.Photo.UserComment");
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp32_ = g_strdup ("Xmp.acdsee.notes");
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp33_ = g_new0 (gchar*, 2 + 1);
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp33_[0] = _tmp31_;
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp33_[1] = _tmp32_;
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_COMMENT_TAGS = _tmp33_;
#line 976 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_COMMENT_TAGS_length1 = 2;
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp34_ = g_strdup ("Xmp.dc.subject");
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp35_ = g_strdup ("Iptc.Application2.Keywords");
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp36_ = g_strdup ("Xmp.xmp.Label");
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp37_ = g_new0 (gchar*, 3 + 1);
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp37_[0] = _tmp34_;
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp37_[1] = _tmp35_;
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp37_[2] = _tmp36_;
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_KEYWORD_TAGS = _tmp37_;
#line 998 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_KEYWORD_TAGS_length1 = 3;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp38_ = null_keyword_transformer_new ();
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp39_ = _tmp38_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp40_ = hierarchical_keyword_field_new ("Xmp.lr.hierarchicalSubject", "|", FALSE, FALSE, G_TYPE_CHECK_INSTANCE_CAST (_tmp39_, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer));
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp41_ = null_keyword_transformer_new ();
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp42_ = _tmp41_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp43_ = hierarchical_keyword_field_new ("Xmp.acdsee.keywords", "|", FALSE, FALSE, G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer));
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp44_ = acd_see_keyword_transformer_new ();
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp45_ = _tmp44_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp46_ = hierarchical_keyword_field_new ("Xmp.acdsee.categories", "|", FALSE, FALSE, G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer));
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp47_ = null_keyword_transformer_new ();
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp48_ = _tmp47_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp49_ = hierarchical_keyword_field_new ("Xmp.digiKam.TagsList", "/", FALSE, TRUE, G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer));
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp50_ = null_keyword_transformer_new ();
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp51_ = _tmp50_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp52_ = hierarchical_keyword_field_new ("Xmp.MicrosoftPhoto.LastKeywordXMP", "/", FALSE, TRUE, G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, TYPE_KEYWORD_TRANSFORMER, KeywordTransformer));
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_ = g_new0 (HierarchicalKeywordField*, 5 + 1);
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_[0] = _tmp40_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_[1] = _tmp43_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_[2] = _tmp46_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_[3] = _tmp49_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp53_[4] = _tmp52_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_HIERARCHICAL_KEYWORD_TAGS = _tmp53_;
#line 1004 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_HIERARCHICAL_KEYWORD_TAGS_length1 = 5;
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp54_ = g_strdup ("Exif.Image.Artist");
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp55_ = g_strdup ("Exif.Canon.OwnerName");
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp56_ = g_strdup ("Xmp.acdsee.author");
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp57_ = g_new0 (gchar*, 3 + 1);
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp57_[0] = _tmp54_;
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp57_[1] = _tmp55_;
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp57_[2] = _tmp56_;
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_ARTIST_TAGS = _tmp57_;
#line 1247 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_ARTIST_TAGS_length1 = 3;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp58_ = g_strdup ("Xmp.xmp.Rating");
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp59_ = g_strdup ("Iptc.Application2.Urgency");
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp60_ = g_strdup ("Xmp.photoshop.Urgency");
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp61_ = g_strdup ("Exif.Image.Rating");
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp62_ = g_strdup ("Xmp.acdsee.rating");
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_ = g_new0 (gchar*, 5 + 1);
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_[0] = _tmp58_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_[1] = _tmp59_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_[2] = _tmp60_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_[3] = _tmp61_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp63_[4] = _tmp62_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_RATING_TAGS = _tmp63_;
#line 1285 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	photo_metadata_RATING_TAGS_length1 = 5;
#line 10053 "PhotoMetadata.c"
}


static void photo_metadata_instance_init (PhotoMetadata * self) {
	GExiv2Metadata* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv = PHOTO_METADATA_GET_PRIVATE (self);
#line 248 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp0_ = gexiv2_metadata_new ();
#line 248 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exiv2 = _tmp0_;
#line 249 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->exif = NULL;
#line 250 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_tmp1_ = g_strdup ("<uninitialized>");
#line 250 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->source_name = _tmp1_;
#line 251 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->metadata_hash = NULL;
#line 252 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self->priv->thumbnail_md5 = NULL;
#line 10076 "PhotoMetadata.c"
}


static void photo_metadata_finalize (MediaMetadata* obj) {
	PhotoMetadata * self;
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PHOTO_METADATA, PhotoMetadata);
#line 248 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_object_unref0 (self->priv->exiv2);
#line 249 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_exif_data_unref0 (self->priv->exif);
#line 250 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->source_name);
#line 251 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->metadata_hash);
#line 252 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	_g_free0 (self->priv->thumbnail_md5);
#line 211 "/home/jens/Source/shotwell/src/photos/PhotoMetadata.vala"
	MEDIA_METADATA_CLASS (photo_metadata_parent_class)->finalize (obj);
#line 10096 "PhotoMetadata.c"
}


GType photo_metadata_get_type (void) {
	static volatile gsize photo_metadata_type_id__volatile = 0;
	if (g_once_init_enter (&photo_metadata_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PhotoMetadataClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) photo_metadata_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhotoMetadata), 0, (GInstanceInitFunc) photo_metadata_instance_init, NULL };
		GType photo_metadata_type_id;
		photo_metadata_type_id = g_type_register_static (TYPE_MEDIA_METADATA, "PhotoMetadata", &g_define_type_info, 0);
		g_once_init_leave (&photo_metadata_type_id__volatile, photo_metadata_type_id);
	}
	return photo_metadata_type_id__volatile;
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}


static gint _vala_array_length (gpointer array) {
	int length;
	length = 0;
	if (array) {
		while (((gpointer*) array)[length]) {
			length++;
		}
	}
	return length;
}



