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

/* Copyright 2016 Software Freedom Conservancy Inc.
 *
 * This software is licensed under the GNU LGPL (version 2.1 or later).
 * See the COPYING file in this distribution.
 */

#include <glib.h>
#include <glib-object.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>
#include <gee.h>
#include <gdk/gdk.h>
#include <float.h>
#include <math.h>
#include <gobject/gvaluecollector.h>

#define _g_checksum_free0(var) ((var == NULL) ? NULL : (var = (g_checksum_free (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define TYPE_DATA_OBJECT (data_object_get_type ())
#define DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_OBJECT, DataObject))
#define DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_OBJECT, DataObjectClass))
#define IS_DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_OBJECT))
#define IS_DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_OBJECT))
#define DATA_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_OBJECT, DataObjectClass))

typedef struct _DataObject DataObject;
typedef struct _DataObjectClass DataObjectClass;

#define TYPE_DATA_SOURCE (data_source_get_type ())
#define DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_SOURCE, DataSource))
#define DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_SOURCE, DataSourceClass))
#define IS_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_SOURCE))
#define IS_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_SOURCE))
#define DATA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_SOURCE, DataSourceClass))

typedef struct _DataSource DataSource;
typedef struct _DataSourceClass DataSourceClass;

#define TYPE_THUMBNAIL_SOURCE (thumbnail_source_get_type ())
#define THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSource))
#define THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))
#define IS_THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SOURCE))
#define IS_THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SOURCE))
#define THUMBNAIL_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))

typedef struct _ThumbnailSource ThumbnailSource;
typedef struct _ThumbnailSourceClass ThumbnailSourceClass;

#define TYPE_MEDIA_SOURCE (media_source_get_type ())
#define MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE, MediaSource))
#define MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE, MediaSourceClass))
#define IS_MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE))
#define IS_MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE))
#define MEDIA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE, MediaSourceClass))

typedef struct _MediaSource MediaSource;
typedef struct _MediaSourceClass MediaSourceClass;

#define TYPE_PHOTO_SOURCE (photo_source_get_type ())
#define PHOTO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_SOURCE, PhotoSource))
#define PHOTO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_SOURCE, PhotoSourceClass))
#define IS_PHOTO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_SOURCE))
#define IS_PHOTO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_SOURCE))
#define PHOTO_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_SOURCE, PhotoSourceClass))

typedef struct _PhotoSource PhotoSource;
typedef struct _PhotoSourceClass PhotoSourceClass;

#define TYPE_PHOTO (photo_get_type ())
#define PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO, Photo))
#define PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO, PhotoClass))
#define IS_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO))
#define IS_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO))
#define PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO, PhotoClass))

typedef struct _Photo Photo;
typedef struct _PhotoClass PhotoClass;

#define TYPE_PHOTO_ID (photo_id_get_type ())
typedef struct _PhotoID PhotoID;

#define TYPE_MEDIA_COLLECTION_REGISTRY (media_collection_registry_get_type ())
#define MEDIA_COLLECTION_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistry))
#define MEDIA_COLLECTION_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistryClass))
#define IS_MEDIA_COLLECTION_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_COLLECTION_REGISTRY))
#define IS_MEDIA_COLLECTION_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_COLLECTION_REGISTRY))
#define MEDIA_COLLECTION_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistryClass))

typedef struct _MediaCollectionRegistry MediaCollectionRegistry;
typedef struct _MediaCollectionRegistryClass MediaCollectionRegistryClass;
#define _media_collection_registry_unref0(var) ((var == NULL) ? NULL : (var = (media_collection_registry_unref (var), NULL)))

#define TYPE_ONE_SHOT_SCHEDULER (one_shot_scheduler_get_type ())
#define ONE_SHOT_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ONE_SHOT_SCHEDULER, OneShotScheduler))
#define ONE_SHOT_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ONE_SHOT_SCHEDULER, OneShotSchedulerClass))
#define IS_ONE_SHOT_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ONE_SHOT_SCHEDULER))
#define IS_ONE_SHOT_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ONE_SHOT_SCHEDULER))
#define ONE_SHOT_SCHEDULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ONE_SHOT_SCHEDULER, OneShotSchedulerClass))

typedef struct _OneShotScheduler OneShotScheduler;
typedef struct _OneShotSchedulerClass OneShotSchedulerClass;
typedef struct _OneShotSchedulerPrivate OneShotSchedulerPrivate;
typedef struct _ParamSpecOneShotScheduler ParamSpecOneShotScheduler;

#define TYPE_OP_TIMER (op_timer_get_type ())
#define OP_TIMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_OP_TIMER, OpTimer))
#define OP_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_OP_TIMER, OpTimerClass))
#define IS_OP_TIMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_OP_TIMER))
#define IS_OP_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_OP_TIMER))
#define OP_TIMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_OP_TIMER, OpTimerClass))

typedef struct _OpTimer OpTimer;
typedef struct _OpTimerClass OpTimerClass;
typedef struct _OpTimerPrivate OpTimerPrivate;
#define _g_timer_destroy0(var) ((var == NULL) ? NULL : (var = (g_timer_destroy (var), NULL)))
typedef struct _ParamSpecOpTimer ParamSpecOpTimer;
#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 gboolean (*ValueEqualFunc) (GValue* a, GValue* b, void* user_data);
struct _PhotoID {
	gint64 id;
};

typedef void (*OneShotCallback) (void* user_data);
struct _OneShotScheduler {
	GTypeInstance parent_instance;
	volatile int ref_count;
	OneShotSchedulerPrivate * priv;
};

struct _OneShotSchedulerClass {
	GTypeClass parent_class;
	void (*finalize) (OneShotScheduler *self);
};

struct _OneShotSchedulerPrivate {
	gchar* name;
	OneShotCallback callback;
	gpointer callback_target;
	guint scheduled;
};

struct _ParamSpecOneShotScheduler {
	GParamSpec parent_instance;
};

struct _OpTimer {
	GTypeInstance parent_instance;
	volatile int ref_count;
	OpTimerPrivate * priv;
};

struct _OpTimerClass {
	GTypeClass parent_class;
	void (*finalize) (OpTimer *self);
};

struct _OpTimerPrivate {
	gchar* name;
	GTimer* timer;
	glong count;
	gdouble elapsed;
	gdouble shortest;
	gdouble longest;
};

struct _ParamSpecOpTimer {
	GParamSpec parent_instance;
};


static gpointer one_shot_scheduler_parent_class = NULL;
static gpointer op_timer_parent_class = NULL;

guint int64_hash (gint64* n);
gboolean int64_equal (gint64* a, gint64* b);
gint int64_compare (gint64* a, gint64* b);
gint uint64_compare (guint64* a, guint64* b);
gboolean bool_value_equals (GValue* a, GValue* b);
gboolean int_value_equals (GValue* a, GValue* b);
gulong timeval_to_ms (GTimeVal* time_val);
gulong now_ms (void);
gulong now_sec (void);
time_t now_time_t (void);
gchar* md5_binary (guint8* buffer, gsize length);
gchar* md5_file (GFile* file, GError** error);
gboolean equal_sets (GeeSet* a, GeeSet* b);
GeeSet* intersection_of_sets (GeeSet* a, GeeSet* b, GeeSet* excluded);
GType data_object_get_type (void) G_GNUC_CONST;
GType data_source_get_type (void) G_GNUC_CONST;
GType thumbnail_source_get_type (void) G_GNUC_CONST;
GType media_source_get_type (void) G_GNUC_CONST;
GType photo_source_get_type (void) G_GNUC_CONST;
GType photo_get_type (void) G_GNUC_CONST;
guchar* serialize_photo_ids (GeeCollection* photos, int* result_length1);
GType photo_id_get_type (void) G_GNUC_CONST;
PhotoID* photo_id_dup (const PhotoID* self);
void photo_id_free (PhotoID* self);
void photo_get_photo_id (Photo* self, PhotoID* result);
GeeList* unserialize_photo_ids (guchar* serialized, gint size);
void photo_id_init (PhotoID *self, gint64 id);
guchar* serialize_media_sources (GeeCollection* media, int* result_length1);
gchar* data_source_get_source_id (DataSource* self);
GeeList* unserialize_media_sources (guchar* serialized, gint size);
gpointer media_collection_registry_ref (gpointer instance);
void media_collection_registry_unref (gpointer instance);
GParamSpec* param_spec_media_collection_registry (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_media_collection_registry (GValue* value, gpointer v_object);
void value_take_media_collection_registry (GValue* value, gpointer v_object);
gpointer value_get_media_collection_registry (const GValue* value);
GType media_collection_registry_get_type (void) G_GNUC_CONST;
MediaCollectionRegistry* media_collection_registry_get_instance (void);
MediaSource* media_collection_registry_fetch_media (MediaCollectionRegistry* self, const gchar* source_id);
gchar* format_local_datespan (struct tm* from_date, struct tm* to_date);
gchar* resources_get_start_multiday_span_format_string (void);
gchar* resources_get_end_multiday_span_format_string (void);
gchar* resources_get_start_multimonth_span_format_string (void);
gchar* resources_get_end_multimonth_span_format_string (void);
gchar* resources_get_long_date_format_string (void);
gchar* string_strip_leading_zeroes (const gchar* str);
gchar* format_local_date (struct tm* date);
gpointer one_shot_scheduler_ref (gpointer instance);
void one_shot_scheduler_unref (gpointer instance);
GParamSpec* param_spec_one_shot_scheduler (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_one_shot_scheduler (GValue* value, gpointer v_object);
void value_take_one_shot_scheduler (GValue* value, gpointer v_object);
gpointer value_get_one_shot_scheduler (const GValue* value);
GType one_shot_scheduler_get_type (void) G_GNUC_CONST;
#define ONE_SHOT_SCHEDULER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ONE_SHOT_SCHEDULER, OneShotSchedulerPrivate))
enum  {
	ONE_SHOT_SCHEDULER_DUMMY_PROPERTY
};
void one_shot_scheduler_cancel (OneShotScheduler* self);
OneShotScheduler* one_shot_scheduler_new (const gchar* name, OneShotCallback callback, void* callback_target);
OneShotScheduler* one_shot_scheduler_construct (GType object_type, const gchar* name, OneShotCallback callback, void* callback_target);
gboolean one_shot_scheduler_is_scheduled (OneShotScheduler* self);
void one_shot_scheduler_at_idle (OneShotScheduler* self);
void one_shot_scheduler_at_priority_idle (OneShotScheduler* self, gint priority);
static gboolean one_shot_scheduler_callback_wrapper (OneShotScheduler* self);
static gboolean _one_shot_scheduler_callback_wrapper_gsource_func (gpointer self);
void one_shot_scheduler_after_timeout (OneShotScheduler* self, guint msec, gboolean reschedule);
void one_shot_scheduler_priority_after_timeout (OneShotScheduler* self, gint priority, guint msec, gboolean reschedule);
static void one_shot_scheduler_finalize (OneShotScheduler * obj);
gpointer op_timer_ref (gpointer instance);
void op_timer_unref (gpointer instance);
GParamSpec* param_spec_op_timer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_op_timer (GValue* value, gpointer v_object);
void value_take_op_timer (GValue* value, gpointer v_object);
gpointer value_get_op_timer (const GValue* value);
GType op_timer_get_type (void) G_GNUC_CONST;
#define OP_TIMER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_OP_TIMER, OpTimerPrivate))
enum  {
	OP_TIMER_DUMMY_PROPERTY
};
OpTimer* op_timer_new (const gchar* name);
OpTimer* op_timer_construct (GType object_type, const gchar* name);
void op_timer_start (OpTimer* self);
void op_timer_stop (OpTimer* self);
gchar* op_timer_to_string (OpTimer* self);
static void op_timer_finalize (OpTimer * obj);


guint int64_hash (gint64* n) {
	guint result = 0U;
	guint8* u8 = NULL;
	gint64* _tmp0_;
	guint hash = 0U;
#line 9 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = n;
#line 9 "/home/jens/Source/shotwell/src/util/misc.vala"
	u8 = (guint8*) _tmp0_;
#line 10 "/home/jens/Source/shotwell/src/util/misc.vala"
	hash = (guint) 0;
#line 286 "misc.c"
	{
		gint ctr = 0;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
		ctr = 0;
#line 291 "misc.c"
		{
			gboolean _tmp1_ = FALSE;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp1_ = TRUE;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
			while (TRUE) {
#line 298 "misc.c"
				gint _tmp3_;
				guint _tmp4_;
				guint _tmp5_;
				guint8* _tmp6_;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
				if (!_tmp1_) {
#line 305 "misc.c"
					gint _tmp2_;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
					_tmp2_ = ctr;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
					ctr = _tmp2_ + 1;
#line 311 "misc.c"
				}
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp1_ = FALSE;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp3_ = ctr;
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
				if (!(((gulong) _tmp3_) < (sizeof (gint64) / sizeof (guint8)))) {
#line 11 "/home/jens/Source/shotwell/src/util/misc.vala"
					break;
#line 321 "misc.c"
				}
#line 12 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp4_ = hash;
#line 12 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp5_ = hash;
#line 12 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp6_ = u8;
#line 12 "/home/jens/Source/shotwell/src/util/misc.vala"
				u8 = _tmp6_ + 1;
#line 12 "/home/jens/Source/shotwell/src/util/misc.vala"
				hash = ((_tmp4_ << 4) ^ (_tmp5_ >> 28)) ^ (*_tmp6_);
#line 333 "misc.c"
			}
		}
	}
#line 15 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = hash;
#line 15 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 341 "misc.c"
}


gboolean int64_equal (gint64* a, gint64* b) {
	gboolean result = FALSE;
	gint64* bia = NULL;
	gint64* _tmp0_;
	gint64* bib = NULL;
	gint64* _tmp1_;
#line 19 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = a;
#line 19 "/home/jens/Source/shotwell/src/util/misc.vala"
	bia = (gint64*) _tmp0_;
#line 20 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = b;
#line 20 "/home/jens/Source/shotwell/src/util/misc.vala"
	bib = (gint64*) _tmp1_;
#line 22 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = (*bia) == (*bib);
#line 22 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 363 "misc.c"
}


gint int64_compare (gint64* a, gint64* b) {
	gint result = 0;
	gint64 diff = 0LL;
	gint64* _tmp0_;
	gint64* _tmp1_;
	gint64 _tmp2_;
#line 26 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = a;
#line 26 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = b;
#line 26 "/home/jens/Source/shotwell/src/util/misc.vala"
	diff = (*((gint64*) _tmp0_)) - (*((gint64*) _tmp1_));
#line 27 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = diff;
#line 27 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp2_ < ((gint64) 0)) {
#line 28 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = -1;
#line 28 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 387 "misc.c"
	} else {
		gint64 _tmp3_;
#line 29 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = diff;
#line 29 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp3_ > ((gint64) 0)) {
#line 30 "/home/jens/Source/shotwell/src/util/misc.vala"
			result = 1;
#line 30 "/home/jens/Source/shotwell/src/util/misc.vala"
			return result;
#line 398 "misc.c"
		} else {
#line 32 "/home/jens/Source/shotwell/src/util/misc.vala"
			result = 0;
#line 32 "/home/jens/Source/shotwell/src/util/misc.vala"
			return result;
#line 404 "misc.c"
		}
	}
}


gint uint64_compare (guint64* a, guint64* b) {
	gint result = 0;
	guint64 a64 = 0ULL;
	guint64* _tmp0_;
	guint64 b64 = 0ULL;
	guint64* _tmp1_;
	guint64 _tmp2_;
	guint64 _tmp3_;
#line 36 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = a;
#line 36 "/home/jens/Source/shotwell/src/util/misc.vala"
	a64 = *((guint64*) _tmp0_);
#line 37 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = b;
#line 37 "/home/jens/Source/shotwell/src/util/misc.vala"
	b64 = *((guint64*) _tmp1_);
#line 39 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = a64;
#line 39 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = b64;
#line 39 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp2_ < _tmp3_) {
#line 40 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = -1;
#line 40 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 436 "misc.c"
	} else {
		guint64 _tmp4_;
		guint64 _tmp5_;
#line 41 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = a64;
#line 41 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = b64;
#line 41 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp4_ > _tmp5_) {
#line 42 "/home/jens/Source/shotwell/src/util/misc.vala"
			result = 1;
#line 42 "/home/jens/Source/shotwell/src/util/misc.vala"
			return result;
#line 450 "misc.c"
		} else {
#line 44 "/home/jens/Source/shotwell/src/util/misc.vala"
			result = 0;
#line 44 "/home/jens/Source/shotwell/src/util/misc.vala"
			return result;
#line 456 "misc.c"
		}
	}
}


gboolean bool_value_equals (GValue* a, GValue* b) {
	gboolean result = FALSE;
	GValue _tmp0_;
	GValue _tmp1_;
#line 49 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (a != NULL, FALSE);
#line 49 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (b != NULL, FALSE);
#line 50 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = *a;
#line 50 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = *b;
#line 50 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = g_value_get_boolean (&_tmp0_) == g_value_get_boolean (&_tmp1_);
#line 50 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 478 "misc.c"
}


gboolean int_value_equals (GValue* a, GValue* b) {
	gboolean result = FALSE;
	GValue _tmp0_;
	GValue _tmp1_;
#line 53 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (a != NULL, FALSE);
#line 53 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (b != NULL, FALSE);
#line 54 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = *a;
#line 54 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = *b;
#line 54 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = g_value_get_int (&_tmp0_) == g_value_get_int (&_tmp1_);
#line 54 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 498 "misc.c"
}


gulong timeval_to_ms (GTimeVal* time_val) {
	gulong result = 0UL;
	GTimeVal _tmp0_;
	glong _tmp1_;
	GTimeVal _tmp2_;
	glong _tmp3_;
#line 57 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (time_val != NULL, 0UL);
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = *time_val;
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = _tmp0_.tv_sec;
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = *time_val;
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = _tmp2_.tv_usec;
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = (((gulong) _tmp1_) * 1000) + (((gulong) _tmp3_) / 1000);
#line 58 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 522 "misc.c"
}


gulong now_ms (void) {
	gulong result = 0UL;
	GTimeVal _tmp0_ = {0};
	gulong _tmp1_;
#line 62 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_get_current_time (&_tmp0_);
#line 62 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = timeval_to_ms (&_tmp0_);
#line 62 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp1_;
#line 62 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 538 "misc.c"
}


gulong now_sec (void) {
	gulong result = 0UL;
	GTimeVal time_val = {0};
	GTimeVal _tmp0_;
	glong _tmp1_;
#line 66 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_get_current_time (&time_val);
#line 68 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = time_val;
#line 68 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = _tmp0_.tv_sec;
#line 68 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = (gulong) _tmp1_;
#line 68 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 557 "misc.c"
}


inline time_t now_time_t (void) {
	time_t result = 0;
	gulong _tmp0_;
#line 72 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = now_sec ();
#line 72 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = (time_t) _tmp0_;
#line 72 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 570 "misc.c"
}


gchar* md5_binary (guint8* buffer, gsize length) {
	gchar* result = NULL;
	gsize _tmp0_;
	GChecksum* md5 = NULL;
	GChecksum* _tmp1_;
	guint8* _tmp2_;
	gsize _tmp3_;
	const gchar* _tmp4_;
	gchar* _tmp5_;
#line 76 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = length;
#line 76 "/home/jens/Source/shotwell/src/util/misc.vala"
	_vala_assert (_tmp0_ != ((gsize) 0), "length != 0");
#line 78 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = g_checksum_new (G_CHECKSUM_MD5);
#line 78 "/home/jens/Source/shotwell/src/util/misc.vala"
	md5 = _tmp1_;
#line 79 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = buffer;
#line 79 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = length;
#line 79 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_checksum_update (md5, (guchar*) _tmp2_, _tmp3_);
#line 81 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp4_ = g_checksum_get_string (md5);
#line 81 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = g_strdup (_tmp4_);
#line 81 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp5_;
#line 81 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_checksum_free0 (md5);
#line 81 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 607 "misc.c"
}


gchar* md5_file (GFile* file, GError** error) {
	gchar* result = NULL;
	GChecksum* md5 = NULL;
	GChecksum* _tmp0_;
	guint8* buffer = NULL;
	guint8* _tmp1_;
	gint buffer_length1;
	gint _buffer_size_;
	GFileInputStream* fins = NULL;
	GFile* _tmp2_;
	GFileInputStream* _tmp3_;
	GChecksum* _tmp18_;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	GError * _inner_error_ = NULL;
#line 84 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 85 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = g_checksum_new (G_CHECKSUM_MD5);
#line 85 "/home/jens/Source/shotwell/src/util/misc.vala"
	md5 = _tmp0_;
#line 86 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = g_new0 (guint8, 64 * 1024);
#line 86 "/home/jens/Source/shotwell/src/util/misc.vala"
	buffer = _tmp1_;
#line 86 "/home/jens/Source/shotwell/src/util/misc.vala"
	buffer_length1 = 64 * 1024;
#line 86 "/home/jens/Source/shotwell/src/util/misc.vala"
	_buffer_size_ = buffer_length1;
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = file;
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = g_file_read (_tmp2_, NULL, &_inner_error_);
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
	fins = _tmp3_;
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_propagate_error (error, _inner_error_);
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
		buffer = (g_free (buffer), NULL);
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_checksum_free0 (md5);
#line 88 "/home/jens/Source/shotwell/src/util/misc.vala"
		return NULL;
#line 656 "misc.c"
	}
	{
		gboolean _tmp4_ = FALSE;
#line 89 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = TRUE;
#line 89 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 664 "misc.c"
			gsize bytes_read = 0UL;
			GFileInputStream* _tmp5_;
			guint8* _tmp6_;
			gint _tmp6__length1;
			gssize _tmp7_;
			gsize _tmp8_;
			GChecksum* _tmp9_;
			guint8* _tmp10_;
			gint _tmp10__length1;
			gsize _tmp11_;
#line 89 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp4_) {
#line 677 "misc.c"
			}
#line 89 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp4_ = FALSE;
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp5_ = fins;
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp6_ = buffer;
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp6__length1 = buffer_length1;
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp7_ = g_input_stream_read (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, g_input_stream_get_type (), GInputStream), _tmp6_, (gsize) _tmp6__length1, NULL, &_inner_error_);
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			bytes_read = (gsize) _tmp7_;
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
				g_propagate_error (error, _inner_error_);
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_object_unref0 (fins);
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
				buffer = (g_free (buffer), NULL);
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_checksum_free0 (md5);
#line 90 "/home/jens/Source/shotwell/src/util/misc.vala"
				return NULL;
#line 703 "misc.c"
			}
#line 91 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp8_ = bytes_read;
#line 91 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (_tmp8_ <= ((gsize) 0)) {
#line 92 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 711 "misc.c"
			}
#line 94 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = md5;
#line 94 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_ = buffer;
#line 94 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10__length1 = buffer_length1;
#line 94 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = bytes_read;
#line 94 "/home/jens/Source/shotwell/src/util/misc.vala"
			g_checksum_update (_tmp9_, (guchar*) _tmp10_, _tmp11_);
#line 723 "misc.c"
		}
	}
	{
		GFileInputStream* _tmp12_;
#line 98 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp12_ = fins;
#line 98 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_input_stream_close (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, g_input_stream_get_type (), GInputStream), NULL, &_inner_error_);
#line 98 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 734 "misc.c"
			goto __catch5_g_error;
		}
	}
	goto __finally5;
	__catch5_g_error:
	{
		GError* err = NULL;
		GFile* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		GError* _tmp16_;
		const gchar* _tmp17_;
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		err = _inner_error_;
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		_inner_error_ = NULL;
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp13_ = file;
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp14_ = g_file_get_path (_tmp13_);
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp15_ = _tmp14_;
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp16_ = err;
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp17_ = _tmp16_->message;
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_warning ("misc.vala:100: Unable to close MD5 input stream for %s: %s", _tmp15_, _tmp17_);
#line 100 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_free0 (_tmp15_);
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_error_free0 (err);
#line 767 "misc.c"
	}
	__finally5:
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_propagate_error (error, _inner_error_);
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (fins);
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		buffer = (g_free (buffer), NULL);
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_checksum_free0 (md5);
#line 97 "/home/jens/Source/shotwell/src/util/misc.vala"
		return NULL;
#line 782 "misc.c"
	}
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp18_ = md5;
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp19_ = g_checksum_get_string (_tmp18_);
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp20_ = g_strdup (_tmp19_);
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp20_;
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_object_unref0 (fins);
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	buffer = (g_free (buffer), NULL);
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_checksum_free0 (md5);
#line 103 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 800 "misc.c"
}


gboolean equal_sets (GeeSet* a, GeeSet* b) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GeeSet* _tmp2_;
	gboolean _tmp7_ = FALSE;
	GeeSet* _tmp8_;
	gboolean _tmp14_ = FALSE;
	gboolean _tmp15_ = FALSE;
	GeeSet* _tmp16_;
	gboolean _tmp21_ = FALSE;
	GeeSet* _tmp22_;
	GeeSet* _tmp24_;
	gint _tmp25_;
	gint _tmp26_;
	GeeSet* _tmp27_;
	gint _tmp28_;
	gint _tmp29_;
#line 107 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail ((a == NULL) || GEE_IS_SET (a), FALSE);
#line 107 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail ((b == NULL) || GEE_IS_SET (b), FALSE);
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = a;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp2_ != NULL) {
#line 830 "misc.c"
		GeeSet* _tmp3_;
		gint _tmp4_;
		gint _tmp5_;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = a;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection));
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = _tmp4_;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = _tmp5_ == 0;
#line 842 "misc.c"
	} else {
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = FALSE;
#line 846 "misc.c"
	}
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_) {
#line 850 "misc.c"
		GeeSet* _tmp6_;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = b;
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = _tmp6_ == NULL;
#line 856 "misc.c"
	} else {
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = FALSE;
#line 860 "misc.c"
	}
#line 108 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_) {
#line 109 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = TRUE;
#line 109 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 868 "misc.c"
	}
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp8_ = a;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp8_ == NULL) {
#line 874 "misc.c"
		gboolean _tmp9_ = FALSE;
		GeeSet* _tmp10_;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp10_ = b;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp10_ != NULL) {
#line 881 "misc.c"
			GeeSet* _tmp11_;
			gint _tmp12_;
			gint _tmp13_;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = b;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp12_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_COLLECTION, GeeCollection));
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp13_ = _tmp12_;
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = _tmp13_ == 0;
#line 893 "misc.c"
		} else {
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = FALSE;
#line 897 "misc.c"
		}
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp7_ = _tmp9_;
#line 901 "misc.c"
	} else {
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp7_ = FALSE;
#line 905 "misc.c"
	}
#line 111 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp7_) {
#line 112 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = TRUE;
#line 112 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 913 "misc.c"
	}
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp16_ = a;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp16_ == NULL) {
#line 919 "misc.c"
		GeeSet* _tmp17_;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp17_ = b;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp15_ = _tmp17_ != NULL;
#line 925 "misc.c"
	} else {
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp15_ = FALSE;
#line 929 "misc.c"
	}
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp15_) {
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp14_ = TRUE;
#line 935 "misc.c"
	} else {
		gboolean _tmp18_ = FALSE;
		GeeSet* _tmp19_;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp19_ = a;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp19_ != NULL) {
#line 943 "misc.c"
			GeeSet* _tmp20_;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp20_ = b;
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp18_ = _tmp20_ == NULL;
#line 949 "misc.c"
		} else {
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp18_ = FALSE;
#line 953 "misc.c"
		}
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp14_ = _tmp18_;
#line 957 "misc.c"
	}
#line 114 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp14_) {
#line 115 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = FALSE;
#line 115 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 965 "misc.c"
	}
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp22_ = a;
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp22_ == NULL) {
#line 971 "misc.c"
		GeeSet* _tmp23_;
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp23_ = b;
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp21_ = _tmp23_ == NULL;
#line 977 "misc.c"
	} else {
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp21_ = FALSE;
#line 981 "misc.c"
	}
#line 117 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp21_) {
#line 118 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = TRUE;
#line 118 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 989 "misc.c"
	}
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp24_ = a;
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp25_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_COLLECTION, GeeCollection));
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp26_ = _tmp25_;
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp27_ = b;
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp28_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_COLLECTION, GeeCollection));
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp29_ = _tmp28_;
#line 120 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp26_ != _tmp29_) {
#line 121 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = FALSE;
#line 121 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 1009 "misc.c"
	}
	{
		GeeIterator* _element_it = NULL;
		GeeSet* _tmp30_;
		GeeIterator* _tmp31_;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp30_ = a;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp31_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_ITERABLE, GeeIterable));
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
		_element_it = _tmp31_;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 1023 "misc.c"
			GeeIterator* _tmp32_;
			gboolean _tmp33_;
			gchar* element = NULL;
			GeeIterator* _tmp34_;
			gpointer _tmp35_;
			GeeSet* _tmp36_;
			const gchar* _tmp37_;
			gboolean _tmp38_;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp32_ = _element_it;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp33_ = gee_iterator_next (_tmp32_);
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp33_) {
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 1040 "misc.c"
			}
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp34_ = _element_it;
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp35_ = gee_iterator_get (_tmp34_);
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			element = (gchar*) _tmp35_;
#line 126 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp36_ = b;
#line 126 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp37_ = element;
#line 126 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp38_ = gee_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_COLLECTION, GeeCollection), _tmp37_);
#line 126 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp38_) {
#line 127 "/home/jens/Source/shotwell/src/util/misc.vala"
				result = FALSE;
#line 127 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_free0 (element);
#line 127 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_object_unref0 (_element_it);
#line 127 "/home/jens/Source/shotwell/src/util/misc.vala"
				return result;
#line 1064 "misc.c"
			}
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (element);
#line 1068 "misc.c"
		}
#line 125 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (_element_it);
#line 1072 "misc.c"
	}
#line 130 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = TRUE;
#line 130 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1078 "misc.c"
}


static gpointer _g_object_ref0 (gpointer self) {
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	return self ? g_object_ref (self) : NULL;
#line 1085 "misc.c"
}


GeeSet* intersection_of_sets (GeeSet* a, GeeSet* b, GeeSet* excluded) {
	GeeSet* result = NULL;
	gboolean _tmp0_ = FALSE;
	GeeSet* _tmp1_;
	gboolean _tmp6_ = FALSE;
	GeeSet* _tmp7_;
	GeeSet* intersection = NULL;
	GeeHashSet* _tmp12_;
	GeeSet* _tmp41_ = NULL;
	GeeSet* _tmp42_;
	gint _tmp43_;
	gint _tmp44_;
	GeeSet* _tmp46_;
#line 134 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail ((a == NULL) || GEE_IS_SET (a), NULL);
#line 134 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail ((b == NULL) || GEE_IS_SET (b), NULL);
#line 134 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail ((excluded == NULL) || GEE_IS_SET (excluded), NULL);
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = a;
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_ != NULL) {
#line 1112 "misc.c"
		GeeSet* _tmp2_;
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp2_ = b;
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = _tmp2_ == NULL;
#line 1118 "misc.c"
	} else {
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = FALSE;
#line 1122 "misc.c"
	}
#line 136 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_) {
#line 1126 "misc.c"
		GeeSet* _tmp3_;
#line 137 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = excluded;
#line 137 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp3_ != NULL) {
#line 1132 "misc.c"
			GeeSet* _tmp4_;
			GeeSet* _tmp5_;
#line 138 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp4_ = excluded;
#line 138 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp5_ = a;
#line 138 "/home/jens/Source/shotwell/src/util/misc.vala"
			gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_COLLECTION, GeeCollection));
#line 1141 "misc.c"
		}
#line 140 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = NULL;
#line 140 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 1147 "misc.c"
	}
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp7_ = a;
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp7_ == NULL) {
#line 1153 "misc.c"
		GeeSet* _tmp8_;
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp8_ = b;
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = _tmp8_ != NULL;
#line 1159 "misc.c"
	} else {
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = FALSE;
#line 1163 "misc.c"
	}
#line 143 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp6_) {
#line 1167 "misc.c"
		GeeSet* _tmp9_;
#line 144 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp9_ = excluded;
#line 144 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp9_ != NULL) {
#line 1173 "misc.c"
			GeeSet* _tmp10_;
			GeeSet* _tmp11_;
#line 145 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_ = excluded;
#line 145 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = b;
#line 145 "/home/jens/Source/shotwell/src/util/misc.vala"
			gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_COLLECTION, GeeCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_COLLECTION, GeeCollection));
#line 1182 "misc.c"
		}
#line 147 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = NULL;
#line 147 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 1188 "misc.c"
	}
#line 150 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp12_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
#line 150 "/home/jens/Source/shotwell/src/util/misc.vala"
	intersection = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_SET, GeeSet);
#line 1194 "misc.c"
	{
		GeeIterator* _element_it = NULL;
		GeeSet* _tmp13_;
		GeeIterator* _tmp14_;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp13_ = a;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp14_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ITERABLE, GeeIterable));
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
		_element_it = _tmp14_;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 1207 "misc.c"
			GeeIterator* _tmp15_;
			gboolean _tmp16_;
			gchar* element = NULL;
			GeeIterator* _tmp17_;
			gpointer _tmp18_;
			GeeSet* _tmp19_;
			const gchar* _tmp20_;
			gboolean _tmp21_;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp15_ = _element_it;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp16_ = gee_iterator_next (_tmp15_);
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp16_) {
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 1224 "misc.c"
			}
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp17_ = _element_it;
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp18_ = gee_iterator_get (_tmp17_);
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			element = (gchar*) _tmp18_;
#line 153 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp19_ = b;
#line 153 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp20_ = element;
#line 153 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp21_ = gee_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_COLLECTION, GeeCollection), _tmp20_);
#line 153 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (_tmp21_) {
#line 1240 "misc.c"
				GeeSet* _tmp22_;
				const gchar* _tmp23_;
#line 154 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp22_ = intersection;
#line 154 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp23_ = element;
#line 154 "/home/jens/Source/shotwell/src/util/misc.vala"
				gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, GEE_TYPE_COLLECTION, GeeCollection), _tmp23_);
#line 1249 "misc.c"
			} else {
				GeeSet* _tmp24_;
#line 155 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp24_ = excluded;
#line 155 "/home/jens/Source/shotwell/src/util/misc.vala"
				if (_tmp24_ != NULL) {
#line 1256 "misc.c"
					GeeSet* _tmp25_;
					const gchar* _tmp26_;
#line 156 "/home/jens/Source/shotwell/src/util/misc.vala"
					_tmp25_ = excluded;
#line 156 "/home/jens/Source/shotwell/src/util/misc.vala"
					_tmp26_ = element;
#line 156 "/home/jens/Source/shotwell/src/util/misc.vala"
					gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GEE_TYPE_COLLECTION, GeeCollection), _tmp26_);
#line 1265 "misc.c"
				}
			}
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (element);
#line 1270 "misc.c"
		}
#line 152 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (_element_it);
#line 1274 "misc.c"
	}
	{
		GeeIterator* _element_it = NULL;
		GeeSet* _tmp27_;
		GeeIterator* _tmp28_;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp27_ = b;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp28_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_ITERABLE, GeeIterable));
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
		_element_it = _tmp28_;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 1288 "misc.c"
			GeeIterator* _tmp29_;
			gboolean _tmp30_;
			gchar* element = NULL;
			GeeIterator* _tmp31_;
			gpointer _tmp32_;
			GeeSet* _tmp33_;
			const gchar* _tmp34_;
			gboolean _tmp35_;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp29_ = _element_it;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp30_ = gee_iterator_next (_tmp29_);
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp30_) {
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 1305 "misc.c"
			}
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp31_ = _element_it;
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp32_ = gee_iterator_get (_tmp31_);
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			element = (gchar*) _tmp32_;
#line 160 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp33_ = a;
#line 160 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp34_ = element;
#line 160 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp35_ = gee_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, GEE_TYPE_COLLECTION, GeeCollection), _tmp34_);
#line 160 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (_tmp35_) {
#line 1321 "misc.c"
				GeeSet* _tmp36_;
				const gchar* _tmp37_;
#line 161 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp36_ = intersection;
#line 161 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp37_ = element;
#line 161 "/home/jens/Source/shotwell/src/util/misc.vala"
				gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_COLLECTION, GeeCollection), _tmp37_);
#line 1330 "misc.c"
			} else {
				GeeSet* _tmp38_;
#line 162 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp38_ = excluded;
#line 162 "/home/jens/Source/shotwell/src/util/misc.vala"
				if (_tmp38_ != NULL) {
#line 1337 "misc.c"
					GeeSet* _tmp39_;
					const gchar* _tmp40_;
#line 163 "/home/jens/Source/shotwell/src/util/misc.vala"
					_tmp39_ = excluded;
#line 163 "/home/jens/Source/shotwell/src/util/misc.vala"
					_tmp40_ = element;
#line 163 "/home/jens/Source/shotwell/src/util/misc.vala"
					gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp39_, GEE_TYPE_COLLECTION, GeeCollection), _tmp40_);
#line 1346 "misc.c"
				}
			}
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (element);
#line 1351 "misc.c"
		}
#line 159 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (_element_it);
#line 1355 "misc.c"
	}
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp42_ = intersection;
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp43_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, GEE_TYPE_COLLECTION, GeeCollection));
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp44_ = _tmp43_;
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp44_ > 0) {
#line 1365 "misc.c"
		GeeSet* _tmp45_;
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp45_ = intersection;
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp41_ = _tmp45_;
#line 1371 "misc.c"
	} else {
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp41_ = NULL;
#line 1375 "misc.c"
	}
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp46_ = _g_object_ref0 (_tmp41_);
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp46_;
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_object_unref0 (intersection);
#line 166 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1385 "misc.c"
}


guchar* serialize_photo_ids (GeeCollection* photos, int* result_length1) {
	guchar* result = NULL;
	gint64* ids = NULL;
	GeeCollection* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	gint64* _tmp3_;
	gint ids_length1;
	gint _ids_size_;
	gint ctr = 0;
	gsize bytes = 0UL;
	GeeCollection* _tmp16_;
	gint _tmp17_;
	gint _tmp18_;
	guchar* serialized = NULL;
	guchar* _tmp19_;
	gint serialized_length1;
	gint _serialized_size_;
	gint64* _tmp20_;
	gint _tmp20__length1;
	guchar* _tmp21_;
	gint _tmp21__length1;
#line 169 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (photos), NULL);
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = photos;
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = gee_collection_get_size (_tmp0_);
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = _tmp1_;
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = g_new0 (gint64, _tmp2_);
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids = _tmp3_;
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids_length1 = _tmp2_;
#line 170 "/home/jens/Source/shotwell/src/util/misc.vala"
	_ids_size_ = ids_length1;
#line 171 "/home/jens/Source/shotwell/src/util/misc.vala"
	ctr = 0;
#line 1429 "misc.c"
	{
		GeeIterator* _photo_it = NULL;
		GeeCollection* _tmp4_;
		GeeIterator* _tmp5_;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = photos;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
		_photo_it = _tmp5_;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 1442 "misc.c"
			GeeIterator* _tmp6_;
			gboolean _tmp7_;
			Photo* photo = NULL;
			GeeIterator* _tmp8_;
			gpointer _tmp9_;
			gint64* _tmp10_;
			gint _tmp10__length1;
			gint _tmp11_;
			Photo* _tmp12_;
			PhotoID _tmp13_ = {0};
			gint64 _tmp14_;
			gint64 _tmp15_;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp6_ = _photo_it;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp7_ = gee_iterator_next (_tmp6_);
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp7_) {
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 1463 "misc.c"
			}
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp8_ = _photo_it;
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = gee_iterator_get (_tmp8_);
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			photo = (Photo*) _tmp9_;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_ = ids;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10__length1 = ids_length1;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = ctr;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			ctr = _tmp11_ + 1;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp12_ = photo;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			photo_get_photo_id (_tmp12_, &_tmp13_);
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp14_ = _tmp13_.id;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_[_tmp11_] = _tmp14_;
#line 173 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp15_ = _tmp10_[_tmp11_];
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_object_unref0 (photo);
#line 1491 "misc.c"
		}
#line 172 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (_photo_it);
#line 1495 "misc.c"
	}
#line 175 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp16_ = photos;
#line 175 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp17_ = gee_collection_get_size (_tmp16_);
#line 175 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp18_ = _tmp17_;
#line 175 "/home/jens/Source/shotwell/src/util/misc.vala"
	bytes = (gsize) (_tmp18_ * sizeof (gint64));
#line 176 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp19_ = g_new0 (guchar, bytes);
#line 176 "/home/jens/Source/shotwell/src/util/misc.vala"
	serialized = _tmp19_;
#line 176 "/home/jens/Source/shotwell/src/util/misc.vala"
	serialized_length1 = bytes;
#line 176 "/home/jens/Source/shotwell/src/util/misc.vala"
	_serialized_size_ = serialized_length1;
#line 177 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp20_ = ids;
#line 177 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp20__length1 = ids_length1;
#line 177 "/home/jens/Source/shotwell/src/util/misc.vala"
	memcpy (serialized, _tmp20_, bytes);
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp21_ = serialized;
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp21__length1 = serialized_length1;
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (result_length1) {
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
		*result_length1 = _tmp21__length1;
#line 1527 "misc.c"
	}
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp21_;
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids = (g_free (ids), NULL);
#line 179 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1535 "misc.c"
}


GeeList* unserialize_photo_ids (guchar* serialized, gint size) {
	GeeList* result = NULL;
	gsize count = 0UL;
	gint _tmp0_;
	gboolean _tmp1_ = FALSE;
	gsize _tmp2_;
	gint64* ids = NULL;
	gsize _tmp4_;
	gint64* _tmp5_;
	gint ids_length1;
	gint _ids_size_;
	gint64* _tmp6_;
	gint _tmp6__length1;
	guchar* _tmp7_;
	gint _tmp8_;
	GeeArrayList* list = NULL;
	GeeArrayList* _tmp9_;
	gint64* _tmp10_;
	gint _tmp10__length1;
#line 183 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = size;
#line 183 "/home/jens/Source/shotwell/src/util/misc.vala"
	count = (gsize) (_tmp0_ / sizeof (gint64));
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = count;
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp2_ <= ((gsize) 0)) {
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = TRUE;
#line 1568 "misc.c"
	} else {
		guchar* _tmp3_;
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = serialized;
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = _tmp3_ == NULL;
#line 1575 "misc.c"
	}
#line 184 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_) {
#line 185 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = NULL;
#line 185 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 1583 "misc.c"
	}
#line 187 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp4_ = count;
#line 187 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = g_new0 (gint64, _tmp4_);
#line 187 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids = _tmp5_;
#line 187 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids_length1 = _tmp4_;
#line 187 "/home/jens/Source/shotwell/src/util/misc.vala"
	_ids_size_ = ids_length1;
#line 188 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp6_ = ids;
#line 188 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp6__length1 = ids_length1;
#line 188 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp7_ = serialized;
#line 188 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp8_ = size;
#line 188 "/home/jens/Source/shotwell/src/util/misc.vala"
	memcpy (_tmp6_, _tmp7_, (gsize) _tmp8_);
#line 190 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp9_ = gee_array_list_new (TYPE_PHOTO_ID, (GBoxedCopyFunc) photo_id_dup, (GDestroyNotify) photo_id_free, NULL, NULL, NULL);
#line 190 "/home/jens/Source/shotwell/src/util/misc.vala"
	list = _tmp9_;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp10_ = ids;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp10__length1 = ids_length1;
#line 1613 "misc.c"
	{
		gint64* id_collection = NULL;
		gint id_collection_length1 = 0;
		gint _id_collection_size_ = 0;
		gint id_it = 0;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
		id_collection = _tmp10_;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
		id_collection_length1 = _tmp10__length1;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
		for (id_it = 0; id_it < _tmp10__length1; id_it = id_it + 1) {
#line 1625 "misc.c"
			gint64 id = 0LL;
#line 191 "/home/jens/Source/shotwell/src/util/misc.vala"
			id = id_collection[id_it];
#line 1629 "misc.c"
			{
				GeeArrayList* _tmp11_;
				gint64 _tmp12_;
				PhotoID _tmp13_ = {0};
#line 192 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp11_ = list;
#line 192 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp12_ = id;
#line 192 "/home/jens/Source/shotwell/src/util/misc.vala"
				photo_id_init (&_tmp13_, _tmp12_);
#line 192 "/home/jens/Source/shotwell/src/util/misc.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), &_tmp13_);
#line 1642 "misc.c"
			}
		}
	}
#line 194 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (list, GEE_TYPE_LIST, GeeList);
#line 194 "/home/jens/Source/shotwell/src/util/misc.vala"
	ids = (g_free (ids), NULL);
#line 194 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1652 "misc.c"
}


guchar* serialize_media_sources (GeeCollection* media, int* result_length1) {
	guchar* result = NULL;
	GdkAtom* atoms = NULL;
	GeeCollection* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	GdkAtom* _tmp3_;
	gint atoms_length1;
	gint _atoms_size_;
	gint ctr = 0;
	gsize bytes = 0UL;
	GeeCollection* _tmp17_;
	gint _tmp18_;
	gint _tmp19_;
	guchar* serialized = NULL;
	guchar* _tmp20_;
	gint serialized_length1;
	gint _serialized_size_;
	GdkAtom* _tmp21_;
	gint _tmp21__length1;
	guchar* _tmp22_;
	gint _tmp22__length1;
#line 197 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (media), NULL);
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = media;
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = gee_collection_get_size (_tmp0_);
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = _tmp1_;
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = g_new0 (GdkAtom, _tmp2_);
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms = _tmp3_;
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms_length1 = _tmp2_;
#line 198 "/home/jens/Source/shotwell/src/util/misc.vala"
	_atoms_size_ = atoms_length1;
#line 199 "/home/jens/Source/shotwell/src/util/misc.vala"
	ctr = 0;
#line 1696 "misc.c"
	{
		GeeIterator* _current_media_it = NULL;
		GeeCollection* _tmp4_;
		GeeIterator* _tmp5_;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = media;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
		_current_media_it = _tmp5_;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
		while (TRUE) {
#line 1709 "misc.c"
			GeeIterator* _tmp6_;
			gboolean _tmp7_;
			MediaSource* current_media = NULL;
			GeeIterator* _tmp8_;
			gpointer _tmp9_;
			GdkAtom* _tmp10_;
			gint _tmp10__length1;
			gint _tmp11_;
			MediaSource* _tmp12_;
			gchar* _tmp13_;
			gchar* _tmp14_;
			GdkAtom _tmp15_;
			GdkAtom _tmp16_;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp6_ = _current_media_it;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp7_ = gee_iterator_next (_tmp6_);
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			if (!_tmp7_) {
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
				break;
#line 1731 "misc.c"
			}
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp8_ = _current_media_it;
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = gee_iterator_get (_tmp8_);
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			current_media = (MediaSource*) _tmp9_;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_ = atoms;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10__length1 = atoms_length1;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = ctr;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			ctr = _tmp11_ + 1;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp12_ = current_media;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp13_ = data_source_get_source_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_DATA_SOURCE, DataSource));
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp14_ = _tmp13_;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp15_ = gdk_atom_intern (_tmp14_, FALSE);
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_[_tmp11_] = _tmp15_;
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp16_ = _tmp10_[_tmp11_];
#line 201 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (_tmp14_);
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_object_unref0 (current_media);
#line 1763 "misc.c"
		}
#line 200 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_object_unref0 (_current_media_it);
#line 1767 "misc.c"
	}
#line 203 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp17_ = media;
#line 203 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp18_ = gee_collection_get_size (_tmp17_);
#line 203 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp19_ = _tmp18_;
#line 203 "/home/jens/Source/shotwell/src/util/misc.vala"
	bytes = (gsize) (_tmp19_ * sizeof (GdkAtom));
#line 204 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp20_ = g_new0 (guchar, bytes);
#line 204 "/home/jens/Source/shotwell/src/util/misc.vala"
	serialized = _tmp20_;
#line 204 "/home/jens/Source/shotwell/src/util/misc.vala"
	serialized_length1 = bytes;
#line 204 "/home/jens/Source/shotwell/src/util/misc.vala"
	_serialized_size_ = serialized_length1;
#line 205 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp21_ = atoms;
#line 205 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp21__length1 = atoms_length1;
#line 205 "/home/jens/Source/shotwell/src/util/misc.vala"
	memcpy (serialized, _tmp21_, bytes);
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp22_ = serialized;
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp22__length1 = serialized_length1;
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (result_length1) {
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
		*result_length1 = _tmp22__length1;
#line 1799 "misc.c"
	}
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp22_;
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms = (g_free (atoms), NULL);
#line 207 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1807 "misc.c"
}


GeeList* unserialize_media_sources (guchar* serialized, gint size) {
	GeeList* result = NULL;
	gsize count = 0UL;
	gint _tmp0_;
	gboolean _tmp1_ = FALSE;
	gsize _tmp2_;
	GdkAtom* atoms = NULL;
	gsize _tmp4_;
	GdkAtom* _tmp5_;
	gint atoms_length1;
	gint _atoms_size_;
	GdkAtom* _tmp6_;
	gint _tmp6__length1;
	guchar* _tmp7_;
	gint _tmp8_;
	GeeArrayList* list = NULL;
	GeeArrayList* _tmp9_;
	GdkAtom* _tmp10_;
	gint _tmp10__length1;
#line 211 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = size;
#line 211 "/home/jens/Source/shotwell/src/util/misc.vala"
	count = (gsize) (_tmp0_ / sizeof (GdkAtom));
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = count;
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp2_ <= ((gsize) 0)) {
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = TRUE;
#line 1840 "misc.c"
	} else {
		guchar* _tmp3_;
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = serialized;
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = _tmp3_ == NULL;
#line 1847 "misc.c"
	}
#line 212 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_) {
#line 213 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = NULL;
#line 213 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 1855 "misc.c"
	}
#line 215 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp4_ = count;
#line 215 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = g_new0 (GdkAtom, _tmp4_);
#line 215 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms = _tmp5_;
#line 215 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms_length1 = _tmp4_;
#line 215 "/home/jens/Source/shotwell/src/util/misc.vala"
	_atoms_size_ = atoms_length1;
#line 216 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp6_ = atoms;
#line 216 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp6__length1 = atoms_length1;
#line 216 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp7_ = serialized;
#line 216 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp8_ = size;
#line 216 "/home/jens/Source/shotwell/src/util/misc.vala"
	memcpy (_tmp6_, _tmp7_, (gsize) _tmp8_);
#line 218 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp9_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 218 "/home/jens/Source/shotwell/src/util/misc.vala"
	list = _tmp9_;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp10_ = atoms;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp10__length1 = atoms_length1;
#line 1885 "misc.c"
	{
		GdkAtom* current_atom_collection = NULL;
		gint current_atom_collection_length1 = 0;
		gint _current_atom_collection_size_ = 0;
		gint current_atom_it = 0;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
		current_atom_collection = _tmp10_;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
		current_atom_collection_length1 = _tmp10__length1;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
		for (current_atom_it = 0; current_atom_it < _tmp10__length1; current_atom_it = current_atom_it + 1) {
#line 1897 "misc.c"
			GdkAtom current_atom = 0U;
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
			current_atom = current_atom_collection[current_atom_it];
#line 1901 "misc.c"
			{
				MediaSource* media = NULL;
				MediaCollectionRegistry* _tmp11_;
				MediaCollectionRegistry* _tmp12_;
				GdkAtom _tmp13_;
				gchar* _tmp14_;
				gchar* _tmp15_;
				MediaSource* _tmp16_;
				MediaSource* _tmp17_;
				MediaSource* _tmp18_;
				GeeArrayList* _tmp19_;
				MediaSource* _tmp20_;
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp11_ = media_collection_registry_get_instance ();
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp12_ = _tmp11_;
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp13_ = current_atom;
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp14_ = gdk_atom_name (_tmp13_);
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp15_ = _tmp14_;
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp16_ = media_collection_registry_fetch_media (_tmp12_, _tmp15_);
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp17_ = _tmp16_;
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_free0 (_tmp15_);
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				_media_collection_registry_unref0 (_tmp12_);
#line 220 "/home/jens/Source/shotwell/src/util/misc.vala"
				media = _tmp17_;
#line 221 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp18_ = media;
#line 221 "/home/jens/Source/shotwell/src/util/misc.vala"
				_vala_assert (_tmp18_ != NULL, "media != null");
#line 222 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp19_ = list;
#line 222 "/home/jens/Source/shotwell/src/util/misc.vala"
				_tmp20_ = media;
#line 222 "/home/jens/Source/shotwell/src/util/misc.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp20_);
#line 219 "/home/jens/Source/shotwell/src/util/misc.vala"
				_g_object_unref0 (media);
#line 1946 "misc.c"
			}
		}
	}
#line 225 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (list, GEE_TYPE_LIST, GeeList);
#line 225 "/home/jens/Source/shotwell/src/util/misc.vala"
	atoms = (g_free (atoms), NULL);
#line 225 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 1956 "misc.c"
}


static gchar* g_time_format (struct tm *self, const gchar* format) {
	gchar* result = NULL;
	gchar* buffer = NULL;
	gchar* _tmp0_;
	gint buffer_length1;
	gint _buffer_size_;
	gchar* _tmp1_;
	gint _tmp1__length1;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gint _tmp3__length1;
	gchar* _tmp4_;
#line 2854 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (format != NULL, NULL);
#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = g_new0 (gchar, 64);
#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	buffer = _tmp0_;
#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	buffer_length1 = 64;
#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_buffer_size_ = buffer_length1;
#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = buffer;
#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1__length1 = buffer_length1;
#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp2_ = format;
#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	strftime (_tmp1_, _tmp1__length1, _tmp2_, &(*self));
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp3_ = buffer;
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp3__length1 = buffer_length1;
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp4_ = g_strdup ((const gchar*) _tmp3_);
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = _tmp4_;
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	buffer = (g_free (buffer), NULL);
#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	return result;
#line 2002 "misc.c"
}


gchar* format_local_datespan (struct tm* from_date, struct tm* to_date) {
	gchar* result = NULL;
	gchar* from_format = NULL;
	gchar* to_format = NULL;
	struct tm _tmp0_;
	gint _tmp1_;
	struct tm _tmp2_;
	gint _tmp3_;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
#line 228 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (from_date != NULL, NULL);
#line 228 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (to_date != NULL, NULL);
#line 233 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = *from_date;
#line 233 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = _tmp0_.tm_year;
#line 233 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = *to_date;
#line 233 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = _tmp2_.tm_year;
#line 233 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_ == _tmp3_) {
#line 2038 "misc.c"
		gboolean _tmp4_ = FALSE;
		struct tm _tmp5_;
		gint _tmp6_;
		struct tm _tmp7_;
		gint _tmp8_;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = *from_date;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = _tmp5_.tm_mon;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp7_ = *to_date;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp8_ = _tmp7_.tm_mon;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp6_ == _tmp8_) {
#line 2054 "misc.c"
			struct tm _tmp9_;
			gint _tmp10_;
			struct tm _tmp11_;
			gint _tmp12_;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp9_ = *from_date;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp10_ = _tmp9_.tm_mday;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp11_ = *to_date;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp12_ = _tmp11_.tm_mday;
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp4_ = _tmp10_ == (_tmp12_ - 1);
#line 2069 "misc.c"
		} else {
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp4_ = FALSE;
#line 2073 "misc.c"
		}
#line 235 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (_tmp4_) {
#line 2077 "misc.c"
			gchar* _tmp13_;
			gchar* _tmp14_;
#line 237 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp13_ = resources_get_start_multiday_span_format_string ();
#line 237 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (from_format);
#line 237 "/home/jens/Source/shotwell/src/util/misc.vala"
			from_format = _tmp13_;
#line 238 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp14_ = resources_get_end_multiday_span_format_string ();
#line 238 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (to_format);
#line 238 "/home/jens/Source/shotwell/src/util/misc.vala"
			to_format = _tmp14_;
#line 2092 "misc.c"
		} else {
			gchar* _tmp15_;
			gchar* _tmp16_;
#line 242 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp15_ = resources_get_start_multimonth_span_format_string ();
#line 242 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (from_format);
#line 242 "/home/jens/Source/shotwell/src/util/misc.vala"
			from_format = _tmp15_;
#line 243 "/home/jens/Source/shotwell/src/util/misc.vala"
			_tmp16_ = resources_get_end_multimonth_span_format_string ();
#line 243 "/home/jens/Source/shotwell/src/util/misc.vala"
			_g_free0 (to_format);
#line 243 "/home/jens/Source/shotwell/src/util/misc.vala"
			to_format = _tmp16_;
#line 2108 "misc.c"
		}
	} else {
		gchar* _tmp17_;
		gchar* _tmp18_;
#line 248 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp17_ = resources_get_long_date_format_string ();
#line 248 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_free0 (from_format);
#line 248 "/home/jens/Source/shotwell/src/util/misc.vala"
		from_format = _tmp17_;
#line 249 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp18_ = resources_get_long_date_format_string ();
#line 249 "/home/jens/Source/shotwell/src/util/misc.vala"
		_g_free0 (to_format);
#line 249 "/home/jens/Source/shotwell/src/util/misc.vala"
		to_format = _tmp18_;
#line 2125 "misc.c"
	}
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp19_ = from_format;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp20_ = g_time_format (from_date, _tmp19_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp21_ = _tmp20_;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp22_ = to_format;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp23_ = g_time_format (to_date, _tmp22_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp24_ = _tmp23_;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp25_ = g_strdup_printf ("%s - %s", _tmp21_, _tmp24_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp26_ = _tmp25_;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp27_ = string_strip_leading_zeroes (_tmp26_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp28_ = _tmp27_;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (_tmp26_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (_tmp24_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (_tmp21_);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp28_;
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (to_format);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (from_format);
#line 252 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 2161 "misc.c"
}


gchar* format_local_date (struct tm* date) {
	gchar* result = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
#line 256 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (date != NULL, NULL);
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = resources_get_long_date_format_string ();
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = _tmp0_;
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = g_time_format (date, _tmp1_);
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = _tmp2_;
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp4_ = string_strip_leading_zeroes (_tmp3_);
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = _tmp4_;
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (_tmp3_);
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (_tmp1_);
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp5_;
#line 257 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 2195 "misc.c"
}


OneShotScheduler* one_shot_scheduler_construct (GType object_type, const gchar* name, OneShotCallback callback, void* callback_target) {
	OneShotScheduler* self = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	OneShotCallback _tmp2_;
	void* _tmp2__target;
#line 267 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 267 "/home/jens/Source/shotwell/src/util/misc.vala"
	self = (OneShotScheduler*) g_type_create_instance (object_type);
#line 268 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = name;
#line 268 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 268 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (self->priv->name);
#line 268 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->name = _tmp1_;
#line 269 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = callback;
#line 269 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2__target = callback_target;
#line 269 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->callback = _tmp2_;
#line 269 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->callback_target = _tmp2__target;
#line 267 "/home/jens/Source/shotwell/src/util/misc.vala"
	return self;
#line 2227 "misc.c"
}


OneShotScheduler* one_shot_scheduler_new (const gchar* name, OneShotCallback callback, void* callback_target) {
#line 267 "/home/jens/Source/shotwell/src/util/misc.vala"
	return one_shot_scheduler_construct (TYPE_ONE_SHOT_SCHEDULER, name, callback, callback_target);
#line 2234 "misc.c"
}


gboolean one_shot_scheduler_is_scheduled (OneShotScheduler* self) {
	gboolean result = FALSE;
	guint _tmp0_;
#line 280 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (IS_ONE_SHOT_SCHEDULER (self), FALSE);
#line 281 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->scheduled;
#line 281 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = _tmp0_ != ((guint) 0);
#line 281 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 2249 "misc.c"
}


void one_shot_scheduler_at_idle (OneShotScheduler* self) {
#line 284 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_ONE_SHOT_SCHEDULER (self));
#line 285 "/home/jens/Source/shotwell/src/util/misc.vala"
	one_shot_scheduler_at_priority_idle (self, G_PRIORITY_DEFAULT_IDLE);
#line 2258 "misc.c"
}


static gboolean _one_shot_scheduler_callback_wrapper_gsource_func (gpointer self) {
	gboolean result;
	result = one_shot_scheduler_callback_wrapper ((OneShotScheduler*) self);
#line 290 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 2267 "misc.c"
}


void one_shot_scheduler_at_priority_idle (OneShotScheduler* self, gint priority) {
	guint _tmp0_;
#line 288 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_ONE_SHOT_SCHEDULER (self));
#line 289 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->scheduled;
#line 289 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_ == ((guint) 0)) {
#line 2279 "misc.c"
		gint _tmp1_;
		guint _tmp2_;
#line 290 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = priority;
#line 290 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp2_ = g_idle_add_full (_tmp1_, _one_shot_scheduler_callback_wrapper_gsource_func, one_shot_scheduler_ref (self), one_shot_scheduler_unref);
#line 290 "/home/jens/Source/shotwell/src/util/misc.vala"
		self->priv->scheduled = _tmp2_;
#line 2288 "misc.c"
	}
}


void one_shot_scheduler_after_timeout (OneShotScheduler* self, guint msec, gboolean reschedule) {
	guint _tmp0_;
	gboolean _tmp1_;
#line 293 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_ONE_SHOT_SCHEDULER (self));
#line 294 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = msec;
#line 294 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = reschedule;
#line 294 "/home/jens/Source/shotwell/src/util/misc.vala"
	one_shot_scheduler_priority_after_timeout (self, G_PRIORITY_DEFAULT, _tmp0_, _tmp1_);
#line 2304 "misc.c"
}


void one_shot_scheduler_priority_after_timeout (OneShotScheduler* self, gint priority, guint msec, gboolean reschedule) {
	gboolean _tmp0_ = FALSE;
	guint _tmp1_;
	guint _tmp3_;
	gint _tmp5_;
	guint _tmp6_;
	guint _tmp7_;
#line 297 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_ONE_SHOT_SCHEDULER (self));
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = self->priv->scheduled;
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp1_ != ((guint) 0)) {
#line 2321 "misc.c"
		gboolean _tmp2_;
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp2_ = reschedule;
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = !_tmp2_;
#line 2327 "misc.c"
	} else {
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp0_ = FALSE;
#line 2331 "misc.c"
	}
#line 298 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_) {
#line 299 "/home/jens/Source/shotwell/src/util/misc.vala"
		return;
#line 2337 "misc.c"
	}
#line 301 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = self->priv->scheduled;
#line 301 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp3_ != ((guint) 0)) {
#line 2343 "misc.c"
		guint _tmp4_;
#line 302 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = self->priv->scheduled;
#line 302 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_source_remove (_tmp4_);
#line 2349 "misc.c"
	}
#line 304 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = priority;
#line 304 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp6_ = msec;
#line 304 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp7_ = g_timeout_add_full (_tmp5_, _tmp6_, _one_shot_scheduler_callback_wrapper_gsource_func, one_shot_scheduler_ref (self), one_shot_scheduler_unref);
#line 304 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->scheduled = _tmp7_;
#line 2359 "misc.c"
}


void one_shot_scheduler_cancel (OneShotScheduler* self) {
	guint _tmp0_;
	guint _tmp1_;
#line 307 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_ONE_SHOT_SCHEDULER (self));
#line 308 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->scheduled;
#line 308 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_ == ((guint) 0)) {
#line 309 "/home/jens/Source/shotwell/src/util/misc.vala"
		return;
#line 2374 "misc.c"
	}
#line 311 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = self->priv->scheduled;
#line 311 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_source_remove (_tmp1_);
#line 312 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->scheduled = (guint) 0;
#line 2382 "misc.c"
}


static gboolean one_shot_scheduler_callback_wrapper (OneShotScheduler* self) {
	gboolean result = FALSE;
	OneShotCallback _tmp0_;
	void* _tmp0__target;
#line 315 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (IS_ONE_SHOT_SCHEDULER (self), FALSE);
#line 316 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->scheduled = (guint) 0;
#line 317 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->callback;
#line 317 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0__target = self->priv->callback_target;
#line 317 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ (_tmp0__target);
#line 319 "/home/jens/Source/shotwell/src/util/misc.vala"
	result = FALSE;
#line 319 "/home/jens/Source/shotwell/src/util/misc.vala"
	return result;
#line 2404 "misc.c"
}


static void value_one_shot_scheduler_init (GValue* value) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	value->data[0].v_pointer = NULL;
#line 2411 "misc.c"
}


static void value_one_shot_scheduler_free_value (GValue* value) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (value->data[0].v_pointer) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		one_shot_scheduler_unref (value->data[0].v_pointer);
#line 2420 "misc.c"
	}
}


static void value_one_shot_scheduler_copy_value (const GValue* src_value, GValue* dest_value) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (src_value->data[0].v_pointer) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		dest_value->data[0].v_pointer = one_shot_scheduler_ref (src_value->data[0].v_pointer);
#line 2430 "misc.c"
	} else {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		dest_value->data[0].v_pointer = NULL;
#line 2434 "misc.c"
	}
}


static gpointer value_one_shot_scheduler_peek_pointer (const GValue* value) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return value->data[0].v_pointer;
#line 2442 "misc.c"
}


static gchar* value_one_shot_scheduler_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (collect_values[0].v_pointer) {
#line 2449 "misc.c"
		OneShotScheduler * object;
		object = collect_values[0].v_pointer;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (object->parent_instance.g_class == NULL) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 2456 "misc.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.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 2460 "misc.c"
		}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = one_shot_scheduler_ref (object);
#line 2464 "misc.c"
	} else {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2468 "misc.c"
	}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return NULL;
#line 2472 "misc.c"
}


static gchar* value_one_shot_scheduler_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	OneShotScheduler ** object_p;
	object_p = collect_values[0].v_pointer;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (!object_p) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 2483 "misc.c"
	}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (!value->data[0].v_pointer) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = NULL;
#line 2489 "misc.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = value->data[0].v_pointer;
#line 2493 "misc.c"
	} else {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = one_shot_scheduler_ref (value->data[0].v_pointer);
#line 2497 "misc.c"
	}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return NULL;
#line 2501 "misc.c"
}


GParamSpec* param_spec_one_shot_scheduler (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecOneShotScheduler* spec;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_ONE_SHOT_SCHEDULER), NULL);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return G_PARAM_SPEC (spec);
#line 2515 "misc.c"
}


gpointer value_get_one_shot_scheduler (const GValue* value) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ONE_SHOT_SCHEDULER), NULL);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return value->data[0].v_pointer;
#line 2524 "misc.c"
}


void value_set_one_shot_scheduler (GValue* value, gpointer v_object) {
	OneShotScheduler * old;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ONE_SHOT_SCHEDULER));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	old = value->data[0].v_pointer;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (v_object) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_ONE_SHOT_SCHEDULER));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = v_object;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		one_shot_scheduler_ref (value->data[0].v_pointer);
#line 2544 "misc.c"
	} else {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2548 "misc.c"
	}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (old) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		one_shot_scheduler_unref (old);
#line 2554 "misc.c"
	}
}


void value_take_one_shot_scheduler (GValue* value, gpointer v_object) {
	OneShotScheduler * old;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_ONE_SHOT_SCHEDULER));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	old = value->data[0].v_pointer;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (v_object) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_ONE_SHOT_SCHEDULER));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = v_object;
#line 2573 "misc.c"
	} else {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2577 "misc.c"
	}
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (old) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		one_shot_scheduler_unref (old);
#line 2583 "misc.c"
	}
}


static void one_shot_scheduler_class_init (OneShotSchedulerClass * klass) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	one_shot_scheduler_parent_class = g_type_class_peek_parent (klass);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	((OneShotSchedulerClass *) klass)->finalize = one_shot_scheduler_finalize;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_type_class_add_private (klass, sizeof (OneShotSchedulerPrivate));
#line 2595 "misc.c"
}


static void one_shot_scheduler_instance_init (OneShotScheduler * self) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv = ONE_SHOT_SCHEDULER_GET_PRIVATE (self);
#line 265 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->scheduled = (guint) 0;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->ref_count = 1;
#line 2606 "misc.c"
}


static void one_shot_scheduler_finalize (OneShotScheduler * obj) {
	OneShotScheduler * self;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ONE_SHOT_SCHEDULER, OneShotScheduler);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_signal_handlers_destroy (self);
#line 277 "/home/jens/Source/shotwell/src/util/misc.vala"
	one_shot_scheduler_cancel (self);
#line 263 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (self->priv->name);
#line 2620 "misc.c"
}


GType one_shot_scheduler_get_type (void) {
	static volatile gsize one_shot_scheduler_type_id__volatile = 0;
	if (g_once_init_enter (&one_shot_scheduler_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_one_shot_scheduler_init, value_one_shot_scheduler_free_value, value_one_shot_scheduler_copy_value, value_one_shot_scheduler_peek_pointer, "p", value_one_shot_scheduler_collect_value, "p", value_one_shot_scheduler_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (OneShotSchedulerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) one_shot_scheduler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (OneShotScheduler), 0, (GInstanceInitFunc) one_shot_scheduler_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 one_shot_scheduler_type_id;
		one_shot_scheduler_type_id = g_type_register_fundamental (g_type_fundamental_next (), "OneShotScheduler", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&one_shot_scheduler_type_id__volatile, one_shot_scheduler_type_id);
	}
	return one_shot_scheduler_type_id__volatile;
}


gpointer one_shot_scheduler_ref (gpointer instance) {
	OneShotScheduler * self;
	self = instance;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_atomic_int_inc (&self->ref_count);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	return instance;
#line 2645 "misc.c"
}


void one_shot_scheduler_unref (gpointer instance) {
	OneShotScheduler * self;
	self = instance;
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		ONE_SHOT_SCHEDULER_GET_CLASS (self)->finalize (self);
#line 262 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 2658 "misc.c"
	}
}


OpTimer* op_timer_construct (GType object_type, const gchar* name) {
	OpTimer* self = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
#line 331 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 331 "/home/jens/Source/shotwell/src/util/misc.vala"
	self = (OpTimer*) g_type_create_instance (object_type);
#line 332 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = name;
#line 332 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 332 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (self->priv->name);
#line 332 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->name = _tmp1_;
#line 331 "/home/jens/Source/shotwell/src/util/misc.vala"
	return self;
#line 2681 "misc.c"
}


OpTimer* op_timer_new (const gchar* name) {
#line 331 "/home/jens/Source/shotwell/src/util/misc.vala"
	return op_timer_construct (TYPE_OP_TIMER, name);
#line 2688 "misc.c"
}


void op_timer_start (OpTimer* self) {
	GTimer* _tmp0_;
#line 335 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_OP_TIMER (self));
#line 336 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->timer;
#line 336 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_timer_start (_tmp0_);
#line 2700 "misc.c"
}


void op_timer_stop (OpTimer* self) {
	gdouble time = 0.0;
	GTimer* _tmp0_;
	gdouble _tmp1_;
	gdouble _tmp2_;
	gdouble _tmp3_;
	gdouble _tmp4_;
	gdouble _tmp5_;
	gdouble _tmp7_;
	gdouble _tmp8_;
	glong _tmp10_;
#line 339 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (IS_OP_TIMER (self));
#line 340 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->timer;
#line 340 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp1_ = g_timer_elapsed (_tmp0_, NULL);
#line 340 "/home/jens/Source/shotwell/src/util/misc.vala"
	time = _tmp1_;
#line 342 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp2_ = self->priv->elapsed;
#line 342 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp3_ = time;
#line 342 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->elapsed = _tmp2_ + _tmp3_;
#line 344 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp4_ = time;
#line 344 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp5_ = self->priv->shortest;
#line 344 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp4_ < _tmp5_) {
#line 2735 "misc.c"
		gdouble _tmp6_;
#line 345 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = time;
#line 345 "/home/jens/Source/shotwell/src/util/misc.vala"
		self->priv->shortest = _tmp6_;
#line 2741 "misc.c"
	}
#line 347 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp7_ = time;
#line 347 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp8_ = self->priv->longest;
#line 347 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp7_ > _tmp8_) {
#line 2749 "misc.c"
		gdouble _tmp9_;
#line 348 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp9_ = time;
#line 348 "/home/jens/Source/shotwell/src/util/misc.vala"
		self->priv->longest = _tmp9_;
#line 2755 "misc.c"
	}
#line 350 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp10_ = self->priv->count;
#line 350 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->count = _tmp10_ + 1;
#line 2761 "misc.c"
}


gchar* op_timer_to_string (OpTimer* self) {
	gchar* result = NULL;
	glong _tmp0_;
#line 353 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (IS_OP_TIMER (self), NULL);
#line 354 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = self->priv->count;
#line 354 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (_tmp0_ > ((glong) 0)) {
#line 2774 "misc.c"
		const gchar* _tmp1_;
		glong _tmp2_;
		gdouble _tmp3_;
		gdouble _tmp4_;
		gdouble _tmp5_;
		glong _tmp6_;
		gdouble _tmp7_;
		gchar* _tmp8_;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp1_ = self->priv->name;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp2_ = self->priv->count;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp3_ = self->priv->elapsed;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp4_ = self->priv->shortest;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp5_ = self->priv->elapsed;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp6_ = self->priv->count;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp7_ = self->priv->longest;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp8_ = g_strdup_printf ("%s: count=%ld elapsed=%.03lfs min/avg/max=%.03lf/%.03lf/%.03lf", _tmp1_, _tmp2_, _tmp3_, _tmp4_, _tmp5_ / ((gdouble) _tmp6_), _tmp7_);
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = _tmp8_;
#line 355 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 2803 "misc.c"
	} else {
		const gchar* _tmp9_;
		gchar* _tmp10_;
#line 358 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp9_ = self->priv->name;
#line 358 "/home/jens/Source/shotwell/src/util/misc.vala"
		_tmp10_ = g_strdup_printf ("%s: no operations", _tmp9_);
#line 358 "/home/jens/Source/shotwell/src/util/misc.vala"
		result = _tmp10_;
#line 358 "/home/jens/Source/shotwell/src/util/misc.vala"
		return result;
#line 2815 "misc.c"
	}
}


static void value_op_timer_init (GValue* value) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	value->data[0].v_pointer = NULL;
#line 2823 "misc.c"
}


static void value_op_timer_free_value (GValue* value) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (value->data[0].v_pointer) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		op_timer_unref (value->data[0].v_pointer);
#line 2832 "misc.c"
	}
}


static void value_op_timer_copy_value (const GValue* src_value, GValue* dest_value) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (src_value->data[0].v_pointer) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		dest_value->data[0].v_pointer = op_timer_ref (src_value->data[0].v_pointer);
#line 2842 "misc.c"
	} else {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		dest_value->data[0].v_pointer = NULL;
#line 2846 "misc.c"
	}
}


static gpointer value_op_timer_peek_pointer (const GValue* value) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return value->data[0].v_pointer;
#line 2854 "misc.c"
}


static gchar* value_op_timer_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (collect_values[0].v_pointer) {
#line 2861 "misc.c"
		OpTimer * object;
		object = collect_values[0].v_pointer;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		if (object->parent_instance.g_class == NULL) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 2868 "misc.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.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 2872 "misc.c"
		}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = op_timer_ref (object);
#line 2876 "misc.c"
	} else {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2880 "misc.c"
	}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return NULL;
#line 2884 "misc.c"
}


static gchar* value_op_timer_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	OpTimer ** object_p;
	object_p = collect_values[0].v_pointer;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (!object_p) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 2895 "misc.c"
	}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (!value->data[0].v_pointer) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = NULL;
#line 2901 "misc.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = value->data[0].v_pointer;
#line 2905 "misc.c"
	} else {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		*object_p = op_timer_ref (value->data[0].v_pointer);
#line 2909 "misc.c"
	}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return NULL;
#line 2913 "misc.c"
}


GParamSpec* param_spec_op_timer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecOpTimer* spec;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_OP_TIMER), NULL);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return G_PARAM_SPEC (spec);
#line 2927 "misc.c"
}


gpointer value_get_op_timer (const GValue* value) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_OP_TIMER), NULL);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return value->data[0].v_pointer;
#line 2936 "misc.c"
}


void value_set_op_timer (GValue* value, gpointer v_object) {
	OpTimer * old;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_OP_TIMER));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	old = value->data[0].v_pointer;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (v_object) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_OP_TIMER));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = v_object;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		op_timer_ref (value->data[0].v_pointer);
#line 2956 "misc.c"
	} else {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2960 "misc.c"
	}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (old) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		op_timer_unref (old);
#line 2966 "misc.c"
	}
}


void value_take_op_timer (GValue* value, gpointer v_object) {
	OpTimer * old;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_OP_TIMER));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	old = value->data[0].v_pointer;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (v_object) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_OP_TIMER));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = v_object;
#line 2985 "misc.c"
	} else {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		value->data[0].v_pointer = NULL;
#line 2989 "misc.c"
	}
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (old) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		op_timer_unref (old);
#line 2995 "misc.c"
	}
}


static void op_timer_class_init (OpTimerClass * klass) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	op_timer_parent_class = g_type_class_peek_parent (klass);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	((OpTimerClass *) klass)->finalize = op_timer_finalize;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_type_class_add_private (klass, sizeof (OpTimerPrivate));
#line 3007 "misc.c"
}


static void op_timer_instance_init (OpTimer * self) {
	GTimer* _tmp0_;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv = OP_TIMER_GET_PRIVATE (self);
#line 325 "/home/jens/Source/shotwell/src/util/misc.vala"
	_tmp0_ = g_timer_new ();
#line 325 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->timer = _tmp0_;
#line 326 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->count = (glong) 0;
#line 327 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->elapsed = (gdouble) 0;
#line 328 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->shortest = DBL_MAX;
#line 329 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->priv->longest = DBL_MIN;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	self->ref_count = 1;
#line 3029 "misc.c"
}


static void op_timer_finalize (OpTimer * obj) {
	OpTimer * self;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_OP_TIMER, OpTimer);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_signal_handlers_destroy (self);
#line 324 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_free0 (self->priv->name);
#line 325 "/home/jens/Source/shotwell/src/util/misc.vala"
	_g_timer_destroy0 (self->priv->timer);
#line 3043 "misc.c"
}


GType op_timer_get_type (void) {
	static volatile gsize op_timer_type_id__volatile = 0;
	if (g_once_init_enter (&op_timer_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_op_timer_init, value_op_timer_free_value, value_op_timer_copy_value, value_op_timer_peek_pointer, "p", value_op_timer_collect_value, "p", value_op_timer_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (OpTimerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) op_timer_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (OpTimer), 0, (GInstanceInitFunc) op_timer_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 op_timer_type_id;
		op_timer_type_id = g_type_register_fundamental (g_type_fundamental_next (), "OpTimer", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&op_timer_type_id__volatile, op_timer_type_id);
	}
	return op_timer_type_id__volatile;
}


gpointer op_timer_ref (gpointer instance) {
	OpTimer * self;
	self = instance;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	g_atomic_int_inc (&self->ref_count);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	return instance;
#line 3068 "misc.c"
}


void op_timer_unref (gpointer instance) {
	OpTimer * self;
	self = instance;
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		OP_TIMER_GET_CLASS (self)->finalize (self);
#line 323 "/home/jens/Source/shotwell/src/util/misc.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 3081 "misc.c"
	}
}



