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

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


#include <glib.h>
#include <glib-object.h>
#include <gee.h>
#include <gobject/gvaluecollector.h>


#define CORE_TYPE_TRACKER_ACCUMULATOR (core_tracker_accumulator_get_type ())
#define CORE_TRACKER_ACCUMULATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CORE_TYPE_TRACKER_ACCUMULATOR, CoreTrackerAccumulator))
#define CORE_IS_TRACKER_ACCUMULATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CORE_TYPE_TRACKER_ACCUMULATOR))
#define CORE_TRACKER_ACCUMULATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CORE_TYPE_TRACKER_ACCUMULATOR, CoreTrackerAccumulatorIface))

typedef struct _CoreTrackerAccumulator CoreTrackerAccumulator;
typedef struct _CoreTrackerAccumulatorIface CoreTrackerAccumulatorIface;

#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_ALTERATION (alteration_get_type ())
#define ALTERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ALTERATION, Alteration))
#define ALTERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ALTERATION, AlterationClass))
#define IS_ALTERATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ALTERATION))
#define IS_ALTERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ALTERATION))
#define ALTERATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ALTERATION, AlterationClass))

typedef struct _Alteration Alteration;
typedef struct _AlterationClass AlterationClass;

#define CORE_TYPE_TRACKER (core_tracker_get_type ())
#define CORE_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CORE_TYPE_TRACKER, CoreTracker))
#define CORE_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CORE_TYPE_TRACKER, CoreTrackerClass))
#define CORE_IS_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CORE_TYPE_TRACKER))
#define CORE_IS_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CORE_TYPE_TRACKER))
#define CORE_TRACKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CORE_TYPE_TRACKER, CoreTrackerClass))

typedef struct _CoreTracker CoreTracker;
typedef struct _CoreTrackerClass CoreTrackerClass;
typedef struct _CoreTrackerPrivate CoreTrackerPrivate;

#define TYPE_DATA_COLLECTION (data_collection_get_type ())
#define DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_COLLECTION, DataCollection))
#define DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_COLLECTION, DataCollectionClass))
#define IS_DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_COLLECTION))
#define IS_DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_COLLECTION))
#define DATA_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_COLLECTION, DataCollectionClass))

typedef struct _DataCollection DataCollection;
typedef struct _DataCollectionClass DataCollectionClass;
#define _data_collection_unref0(var) ((var == NULL) ? NULL : (var = (data_collection_unref (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _alteration_unref0(var) ((var == NULL) ? NULL : (var = (alteration_unref (var), NULL)))
typedef struct _CoreParamSpecTracker CoreParamSpecTracker;
enum  {
	CORE_TRACKER_UPDATED_SIGNAL,
	CORE_TRACKER_NUM_SIGNALS
};
static guint core_tracker_signals[CORE_TRACKER_NUM_SIGNALS] = {0};

#define CORE_TYPE_VIEW_TRACKER (core_view_tracker_get_type ())
#define CORE_VIEW_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CORE_TYPE_VIEW_TRACKER, CoreViewTracker))
#define CORE_VIEW_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CORE_TYPE_VIEW_TRACKER, CoreViewTrackerClass))
#define CORE_IS_VIEW_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CORE_TYPE_VIEW_TRACKER))
#define CORE_IS_VIEW_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CORE_TYPE_VIEW_TRACKER))
#define CORE_VIEW_TRACKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CORE_TYPE_VIEW_TRACKER, CoreViewTrackerClass))

typedef struct _CoreViewTracker CoreViewTracker;
typedef struct _CoreViewTrackerClass CoreViewTrackerClass;
typedef struct _CoreViewTrackerPrivate CoreViewTrackerPrivate;

#define CORE_VIEW_TRACKER_TYPE_MUX (core_view_tracker_mux_get_type ())
#define CORE_VIEW_TRACKER_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMux))
#define CORE_VIEW_TRACKER_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMuxClass))
#define CORE_VIEW_TRACKER_IS_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CORE_VIEW_TRACKER_TYPE_MUX))
#define CORE_VIEW_TRACKER_IS_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CORE_VIEW_TRACKER_TYPE_MUX))
#define CORE_VIEW_TRACKER_MUX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMuxClass))

typedef struct _CoreViewTrackerMux CoreViewTrackerMux;
typedef struct _CoreViewTrackerMuxClass CoreViewTrackerMuxClass;

#define TYPE_VIEW_COLLECTION (view_collection_get_type ())
#define VIEW_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIEW_COLLECTION, ViewCollection))
#define VIEW_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIEW_COLLECTION, ViewCollectionClass))
#define IS_VIEW_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIEW_COLLECTION))
#define IS_VIEW_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIEW_COLLECTION))
#define VIEW_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIEW_COLLECTION, ViewCollectionClass))

typedef struct _ViewCollection ViewCollection;
typedef struct _ViewCollectionClass ViewCollectionClass;

#define TYPE_DATA_VIEW (data_view_get_type ())
#define DATA_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_VIEW, DataView))
#define DATA_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_VIEW, DataViewClass))
#define IS_DATA_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_VIEW))
#define IS_DATA_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_VIEW))
#define DATA_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_VIEW, DataViewClass))

typedef struct _DataView DataView;
typedef struct _DataViewClass DataViewClass;
typedef struct _CoreViewTrackerMuxPrivate CoreViewTrackerMuxPrivate;
enum  {
	CORE_VIEW_TRACKER_MUX_0_PROPERTY,
	CORE_VIEW_TRACKER_MUX_NUM_PROPERTIES
};
static GParamSpec* core_view_tracker_mux_properties[CORE_VIEW_TRACKER_MUX_NUM_PROPERTIES];
#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);

struct _CoreTrackerAccumulatorIface {
	GTypeInterface parent_iface;
	gboolean (*include) (CoreTrackerAccumulator* self, DataObject* object);
	gboolean (*uninclude) (CoreTrackerAccumulator* self, DataObject* object);
	gboolean (*altered) (CoreTrackerAccumulator* self, DataObject* object, Alteration* alteration);
};

struct _CoreTracker {
	GTypeInstance parent_instance;
	volatile int ref_count;
	CoreTrackerPrivate * priv;
};

struct _CoreTrackerClass {
	GTypeClass parent_class;
	void (*finalize) (CoreTracker *self);
	void (*updated) (CoreTracker* self);
};

struct _CoreTrackerPrivate {
	DataCollection* collection;
	GeeCollection* initial;
	CoreTrackerAccumulator* acc;
};

typedef gboolean (*CoreTrackerIncludeUnincludeObject) (DataObject* object, void* user_data);
struct _CoreParamSpecTracker {
	GParamSpec parent_instance;
};

struct _CoreViewTracker {
	CoreTracker parent_instance;
	CoreViewTrackerPrivate * priv;
};

struct _CoreViewTrackerClass {
	CoreTrackerClass parent_class;
};

struct _CoreViewTrackerPrivate {
	CoreViewTrackerMux* mux;
};

struct _CoreViewTrackerMux {
	GObject parent_instance;
	CoreViewTrackerMuxPrivate * priv;
	CoreTrackerAccumulator* all;
	CoreTrackerAccumulator* visible;
	CoreTrackerAccumulator* selected;
};

struct _CoreViewTrackerMuxClass {
	GObjectClass parent_class;
};


static gpointer core_tracker_parent_class = NULL;
static gpointer core_view_tracker_parent_class = NULL;
static gpointer core_view_tracker_mux_parent_class = NULL;
static CoreTrackerAccumulatorIface * core_view_tracker_mux_core_tracker_accumulator_parent_iface = NULL;

GType data_object_get_type (void) G_GNUC_CONST;
gpointer alteration_ref (gpointer instance);
void alteration_unref (gpointer instance);
GParamSpec* param_spec_alteration (const gchar* name,
                                   const gchar* nick,
                                   const gchar* blurb,
                                   GType object_type,
                                   GParamFlags flags);
void value_set_alteration (GValue* value,
                           gpointer v_object);
void value_take_alteration (GValue* value,
                            gpointer v_object);
gpointer value_get_alteration (const GValue* value);
GType alteration_get_type (void) G_GNUC_CONST;
GType core_tracker_accumulator_get_type (void) G_GNUC_CONST;
gboolean core_tracker_accumulator_include (CoreTrackerAccumulator* self,
                                           DataObject* object);
gboolean core_tracker_accumulator_uninclude (CoreTrackerAccumulator* self,
                                             DataObject* object);
gboolean core_tracker_accumulator_altered (CoreTrackerAccumulator* self,
                                           DataObject* object,
                                           Alteration* alteration);
gpointer core_tracker_ref (gpointer instance);
void core_tracker_unref (gpointer instance);
GParamSpec* core_param_spec_tracker (const gchar* name,
                                     const gchar* nick,
                                     const gchar* blurb,
                                     GType object_type,
                                     GParamFlags flags);
void core_value_set_tracker (GValue* value,
                             gpointer v_object);
void core_value_take_tracker (GValue* value,
                              gpointer v_object);
gpointer core_value_get_tracker (const GValue* value);
GType core_tracker_get_type (void) G_GNUC_CONST;
gpointer data_collection_ref (gpointer instance);
void data_collection_unref (gpointer instance);
GParamSpec* param_spec_data_collection (const gchar* name,
                                        const gchar* nick,
                                        const gchar* blurb,
                                        GType object_type,
                                        GParamFlags flags);
void value_set_data_collection (GValue* value,
                                gpointer v_object);
void value_take_data_collection (GValue* value,
                                 gpointer v_object);
gpointer value_get_data_collection (const GValue* value);
GType data_collection_get_type (void) G_GNUC_CONST;
#define CORE_TRACKER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CORE_TYPE_TRACKER, CoreTrackerPrivate))
static void core_tracker_on_items_added (CoreTracker* self,
                                  GeeIterable* added);
static void _core_tracker_on_items_added_data_collection_items_added (DataCollection* _sender,
                                                               GeeIterable* added,
                                                               gpointer self);
static void core_tracker_on_items_removed (CoreTracker* self,
                                    GeeIterable* removed);
static void _core_tracker_on_items_removed_data_collection_items_removed (DataCollection* _sender,
                                                                   GeeIterable* removed,
                                                                   gpointer self);
static void core_tracker_on_items_altered (CoreTracker* self,
                                    GeeMap* map);
static void _core_tracker_on_items_altered_data_collection_items_altered (DataCollection* _sender,
                                                                   GeeMap* items,
                                                                   gpointer self);
CoreTracker* core_tracker_new (DataCollection* collection,
                               GeeCollection* initial);
CoreTracker* core_tracker_construct (GType object_type,
                                     DataCollection* collection,
                                     GeeCollection* initial);
void core_tracker_start (CoreTracker* self,
                         CoreTrackerAccumulator* acc);
GeeCollection* data_collection_get_all (DataCollection* self);
DataCollection* core_tracker_get_collection (CoreTracker* self);
void core_tracker_include_uninclude (CoreTracker* self,
                                     GeeIterable* objects,
                                     CoreTrackerIncludeUnincludeObject cb,
                                     void* cb_target);
static gboolean _core_tracker_accumulator_include_core_tracker_include_uninclude_object (DataObject* object,
                                                                                  gpointer self);
static gboolean _core_tracker_accumulator_uninclude_core_tracker_include_uninclude_object (DataObject* object,
                                                                                    gpointer self);
static void core_tracker_real_updated (CoreTracker* self);
static void core_tracker_finalize (CoreTracker * obj);
GType core_view_tracker_get_type (void) G_GNUC_CONST;
static GType core_view_tracker_mux_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
#define CORE_VIEW_TRACKER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CORE_TYPE_VIEW_TRACKER, CoreViewTrackerPrivate))
GType view_collection_get_type (void) G_GNUC_CONST;
GType data_view_get_type (void) G_GNUC_CONST;
static void core_view_tracker_on_items_shown (CoreViewTracker* self,
                                       GeeCollection* shown);
static void _core_view_tracker_on_items_shown_view_collection_items_shown (ViewCollection* _sender,
                                                                    GeeCollection* visible,
                                                                    gpointer self);
static void core_view_tracker_on_items_hidden (CoreViewTracker* self,
                                        GeeCollection* hidden);
static void _core_view_tracker_on_items_hidden_view_collection_items_hidden (ViewCollection* _sender,
                                                                      GeeCollection* hidden,
                                                                      gpointer self);
static void core_view_tracker_on_items_selected (CoreViewTracker* self,
                                          GeeIterable* selected);
static void _core_view_tracker_on_items_selected_view_collection_items_selected (ViewCollection* _sender,
                                                                          GeeIterable* selected,
                                                                          gpointer self);
static void core_view_tracker_on_items_unselected (CoreViewTracker* self,
                                            GeeIterable* unselected);
static void _core_view_tracker_on_items_unselected_view_collection_items_unselected (ViewCollection* _sender,
                                                                              GeeIterable* unselected,
                                                                              gpointer self);
CoreViewTracker* core_view_tracker_new (ViewCollection* collection);
CoreViewTracker* core_view_tracker_construct (GType object_type,
                                              ViewCollection* collection);
GeeCollection* view_collection_get_all_unfiltered (ViewCollection* self);
void core_view_tracker_start (CoreViewTracker* self,
                              CoreTrackerAccumulator* all,
                              CoreTrackerAccumulator* visible,
                              CoreTrackerAccumulator* selected);
static CoreViewTrackerMux* core_view_tracker_mux_new (CoreTrackerAccumulator* all,
                                               CoreTrackerAccumulator* visible,
                                               CoreTrackerAccumulator* selected);
static CoreViewTrackerMux* core_view_tracker_mux_construct (GType object_type,
                                                     CoreTrackerAccumulator* all,
                                                     CoreTrackerAccumulator* visible,
                                                     CoreTrackerAccumulator* selected);
static gboolean core_view_tracker_mux_real_include (CoreTrackerAccumulator* base,
                                             DataObject* object);
gboolean data_view_is_visible (DataView* self);
gboolean data_view_is_selected (DataView* self);
static gboolean core_view_tracker_mux_real_uninclude (CoreTrackerAccumulator* base,
                                               DataObject* object);
static gboolean core_view_tracker_mux_real_altered (CoreTrackerAccumulator* base,
                                             DataObject* object,
                                             Alteration* alteration);
static void core_view_tracker_mux_finalize (GObject * obj);
static void core_view_tracker_finalize (CoreTracker * obj);


gboolean
core_tracker_accumulator_include (CoreTrackerAccumulator* self,
                                  DataObject* object)
{
#line 13 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (CORE_IS_TRACKER_ACCUMULATOR (self), FALSE);
#line 13 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return CORE_TRACKER_ACCUMULATOR_GET_INTERFACE (self)->include (self, object);
#line 332 "Tracker.c"
}


gboolean
core_tracker_accumulator_uninclude (CoreTrackerAccumulator* self,
                                    DataObject* object)
{
#line 15 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (CORE_IS_TRACKER_ACCUMULATOR (self), FALSE);
#line 15 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return CORE_TRACKER_ACCUMULATOR_GET_INTERFACE (self)->uninclude (self, object);
#line 344 "Tracker.c"
}


gboolean
core_tracker_accumulator_altered (CoreTrackerAccumulator* self,
                                  DataObject* object,
                                  Alteration* alteration)
{
#line 17 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (CORE_IS_TRACKER_ACCUMULATOR (self), FALSE);
#line 17 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return CORE_TRACKER_ACCUMULATOR_GET_INTERFACE (self)->altered (self, object, alteration);
#line 357 "Tracker.c"
}


static void
core_tracker_accumulator_base_init (CoreTrackerAccumulatorIface * iface)
{
#line 12 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	static gboolean initialized = FALSE;
#line 12 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (!initialized) {
#line 12 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		initialized = TRUE;
#line 370 "Tracker.c"
	}
}


GType
core_tracker_accumulator_get_type (void)
{
	static volatile gsize core_tracker_accumulator_type_id__volatile = 0;
	if (g_once_init_enter (&core_tracker_accumulator_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (CoreTrackerAccumulatorIface), (GBaseInitFunc) core_tracker_accumulator_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType core_tracker_accumulator_type_id;
		core_tracker_accumulator_type_id = g_type_register_static (G_TYPE_INTERFACE, "CoreTrackerAccumulator", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (core_tracker_accumulator_type_id, G_TYPE_OBJECT);
		g_once_init_leave (&core_tracker_accumulator_type_id__volatile, core_tracker_accumulator_type_id);
	}
	return core_tracker_accumulator_type_id__volatile;
}


static void
_core_tracker_on_items_added_data_collection_items_added (DataCollection* _sender,
                                                          GeeIterable* added,
                                                          gpointer self)
{
#line 40 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_on_items_added ((CoreTracker*) self, added);
#line 397 "Tracker.c"
}


static void
_core_tracker_on_items_removed_data_collection_items_removed (DataCollection* _sender,
                                                              GeeIterable* removed,
                                                              gpointer self)
{
#line 41 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_on_items_removed ((CoreTracker*) self, removed);
#line 408 "Tracker.c"
}


static void
_core_tracker_on_items_altered_data_collection_items_altered (DataCollection* _sender,
                                                              GeeMap* items,
                                                              gpointer self)
{
#line 42 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_on_items_altered ((CoreTracker*) self, items);
#line 419 "Tracker.c"
}


static gpointer
_data_collection_ref0 (gpointer self)
{
#line 34 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return self ? data_collection_ref (self) : NULL;
#line 428 "Tracker.c"
}


static gpointer
_g_object_ref0 (gpointer self)
{
#line 35 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return self ? g_object_ref (self) : NULL;
#line 437 "Tracker.c"
}


CoreTracker*
core_tracker_construct (GType object_type,
                        DataCollection* collection,
                        GeeCollection* initial)
{
	CoreTracker* self = NULL;
	DataCollection* _tmp0_;
	GeeCollection* _tmp1_;
#line 33 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_DATA_COLLECTION (collection), NULL);
#line 33 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail ((initial == NULL) || GEE_IS_COLLECTION (initial), NULL);
#line 33 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = (CoreTracker*) g_type_create_instance (object_type);
#line 34 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = _data_collection_ref0 (collection);
#line 34 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_data_collection_unref0 (self->priv->collection);
#line 34 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->collection = _tmp0_;
#line 35 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _g_object_ref0 (initial);
#line 35 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->initial);
#line 35 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->initial = _tmp1_;
#line 33 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return self;
#line 469 "Tracker.c"
}


CoreTracker*
core_tracker_new (DataCollection* collection,
                  GeeCollection* initial)
{
#line 33 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return core_tracker_construct (CORE_TYPE_TRACKER, collection, initial);
#line 479 "Tracker.c"
}


void
core_tracker_start (CoreTracker* self,
                    CoreTrackerAccumulator* acc)
{
	CoreTrackerAccumulator* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
	DataCollection* _tmp2_;
	DataCollection* _tmp3_;
	DataCollection* _tmp4_;
	gboolean _tmp5_ = FALSE;
	GeeCollection* _tmp6_;
#line 46 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER (self));
#line 46 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER_ACCUMULATOR (acc));
#line 48 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->acc;
#line 48 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_vala_assert (_tmp0_ == NULL, "this.acc == null");
#line 50 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _g_object_ref0 (acc);
#line 50 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->acc);
#line 50 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->acc = _tmp1_;
#line 52 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp2_ = self->priv->collection;
#line 52 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (_tmp2_, "items-added", (GCallback) _core_tracker_on_items_added_data_collection_items_added, self);
#line 53 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp3_ = self->priv->collection;
#line 53 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (_tmp3_, "items-removed", (GCallback) _core_tracker_on_items_removed_data_collection_items_removed, self);
#line 54 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp4_ = self->priv->collection;
#line 54 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (_tmp4_, "items-altered", (GCallback) _core_tracker_on_items_altered_data_collection_items_altered, self);
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp6_ = self->priv->initial;
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp6_ != NULL) {
#line 524 "Tracker.c"
		GeeCollection* _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp7_ = self->priv->initial;
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp8_ = gee_collection_get_size (_tmp7_);
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp9_ = _tmp8_;
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp5_ = _tmp9_ > 0;
#line 536 "Tracker.c"
	} else {
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp5_ = FALSE;
#line 540 "Tracker.c"
	}
#line 56 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp5_) {
#line 544 "Tracker.c"
		GeeCollection* _tmp10_;
#line 57 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp10_ = self->priv->initial;
#line 57 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_on_items_added (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ITERABLE, GeeIterable));
#line 550 "Tracker.c"
	} else {
		GeeCollection* _tmp11_;
#line 58 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp11_ = self->priv->initial;
#line 58 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (_tmp11_ == NULL) {
#line 557 "Tracker.c"
			DataCollection* _tmp12_;
			GeeCollection* _tmp13_;
			GeeCollection* _tmp14_;
#line 59 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp12_ = self->priv->collection;
#line 59 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp13_ = data_collection_get_all (_tmp12_);
#line 59 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp14_ = _tmp13_;
#line 59 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			core_tracker_on_items_added (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ITERABLE, GeeIterable));
#line 59 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_g_object_unref0 (_tmp14_);
#line 571 "Tracker.c"
		}
	}
#line 61 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->initial);
#line 61 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->initial = NULL;
#line 578 "Tracker.c"
}


DataCollection*
core_tracker_get_collection (CoreTracker* self)
{
	DataCollection* result = NULL;
	DataCollection* _tmp0_;
	DataCollection* _tmp1_;
#line 64 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (CORE_IS_TRACKER (self), NULL);
#line 65 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->collection;
#line 65 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _data_collection_ref0 (_tmp0_);
#line 65 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	result = _tmp1_;
#line 65 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 598 "Tracker.c"
}


static gboolean
_core_tracker_accumulator_include_core_tracker_include_uninclude_object (DataObject* object,
                                                                         gpointer self)
{
	gboolean result;
	result = core_tracker_accumulator_include ((CoreTrackerAccumulator*) self, object);
#line 69 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 610 "Tracker.c"
}


static void
core_tracker_on_items_added (CoreTracker* self,
                             GeeIterable* added)
{
	CoreTrackerAccumulator* _tmp0_;
#line 68 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER (self));
#line 68 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_ITERABLE (added));
#line 69 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->acc;
#line 69 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_include_uninclude (self, added, _core_tracker_accumulator_include_core_tracker_include_uninclude_object, _tmp0_);
#line 627 "Tracker.c"
}


static gboolean
_core_tracker_accumulator_uninclude_core_tracker_include_uninclude_object (DataObject* object,
                                                                           gpointer self)
{
	gboolean result;
	result = core_tracker_accumulator_uninclude ((CoreTrackerAccumulator*) self, object);
#line 73 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 639 "Tracker.c"
}


static void
core_tracker_on_items_removed (CoreTracker* self,
                               GeeIterable* removed)
{
	CoreTrackerAccumulator* _tmp0_;
#line 72 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER (self));
#line 72 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_ITERABLE (removed));
#line 73 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->acc;
#line 73 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_include_uninclude (self, removed, _core_tracker_accumulator_uninclude_core_tracker_include_uninclude_object, _tmp0_);
#line 656 "Tracker.c"
}


void
core_tracker_include_uninclude (CoreTracker* self,
                                GeeIterable* objects,
                                CoreTrackerIncludeUnincludeObject cb,
                                void* cb_target)
{
	gboolean fire_updated = FALSE;
	gboolean _tmp7_;
#line 77 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER (self));
#line 77 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_ITERABLE (objects));
#line 78 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	fire_updated = FALSE;
#line 674 "Tracker.c"
	{
		GeeIterator* _object_it = NULL;
		GeeIterator* _tmp0_;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp0_ = gee_iterable_iterator (objects);
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_object_it = _tmp0_;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		while (TRUE) {
#line 684 "Tracker.c"
			GeeIterator* _tmp1_;
			DataObject* object = NULL;
			GeeIterator* _tmp2_;
			gpointer _tmp3_;
			gboolean _tmp4_ = FALSE;
			DataObject* _tmp5_;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp1_ = _object_it;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			if (!gee_iterator_next (_tmp1_)) {
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				break;
#line 697 "Tracker.c"
			}
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = _object_it;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp3_ = gee_iterator_get (_tmp2_);
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			object = (DataObject*) _tmp3_;
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp5_ = object;
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			if (cb (_tmp5_, cb_target)) {
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp4_ = TRUE;
#line 711 "Tracker.c"
			} else {
				gboolean _tmp6_;
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp6_ = fire_updated;
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp4_ = _tmp6_;
#line 718 "Tracker.c"
			}
#line 80 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			fire_updated = _tmp4_;
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_g_object_unref0 (object);
#line 724 "Tracker.c"
		}
#line 79 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_g_object_unref0 (_object_it);
#line 728 "Tracker.c"
	}
#line 82 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp7_ = fire_updated;
#line 82 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp7_) {
#line 83 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_emit (self, core_tracker_signals[CORE_TRACKER_UPDATED_SIGNAL], 0);
#line 736 "Tracker.c"
	}
}


static void
core_tracker_on_items_altered (CoreTracker* self,
                               GeeMap* map)
{
	gboolean fire_updated = FALSE;
	gboolean _tmp16_;
#line 86 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_TRACKER (self));
#line 86 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_MAP (map));
#line 87 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	fire_updated = FALSE;
#line 753 "Tracker.c"
	{
		GeeIterator* _object_it = NULL;
		GeeSet* _tmp0_;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeIterator* _tmp3_;
		GeeIterator* _tmp4_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp0_ = gee_map_get_keys (map);
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp1_ = _tmp0_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = _tmp1_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ITERABLE, GeeIterable));
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp4_ = _tmp3_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_g_object_unref0 (_tmp2_);
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_object_it = _tmp4_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		while (TRUE) {
#line 777 "Tracker.c"
			GeeIterator* _tmp5_;
			DataObject* object = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			gboolean _tmp8_ = FALSE;
			CoreTrackerAccumulator* _tmp9_;
			DataObject* _tmp10_;
			DataObject* _tmp11_;
			gpointer _tmp12_;
			Alteration* _tmp13_;
			gboolean _tmp14_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp5_ = _object_it;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			if (!gee_iterator_next (_tmp5_)) {
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				break;
#line 795 "Tracker.c"
			}
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp6_ = _object_it;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp7_ = gee_iterator_get (_tmp6_);
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			object = (DataObject*) _tmp7_;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = self->priv->acc;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp10_ = object;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp11_ = object;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp12_ = gee_map_get (map, _tmp11_);
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp13_ = (Alteration*) _tmp12_;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp14_ = core_tracker_accumulator_altered (_tmp9_, _tmp10_, _tmp13_);
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_alteration_unref0 (_tmp13_);
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			if (_tmp14_) {
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp8_ = TRUE;
#line 821 "Tracker.c"
			} else {
				gboolean _tmp15_;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp15_ = fire_updated;
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
				_tmp8_ = _tmp15_;
#line 828 "Tracker.c"
			}
#line 89 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			fire_updated = _tmp8_;
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_g_object_unref0 (object);
#line 834 "Tracker.c"
		}
#line 88 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_g_object_unref0 (_object_it);
#line 838 "Tracker.c"
	}
#line 91 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp16_ = fire_updated;
#line 91 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp16_) {
#line 92 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_emit (self, core_tracker_signals[CORE_TRACKER_UPDATED_SIGNAL], 0);
#line 846 "Tracker.c"
	}
}


static void
core_tracker_real_updated (CoreTracker* self)
{
}


static void
core_value_tracker_init (GValue* value)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	value->data[0].v_pointer = NULL;
#line 862 "Tracker.c"
}


static void
core_value_tracker_free_value (GValue* value)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (value->data[0].v_pointer) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_unref (value->data[0].v_pointer);
#line 873 "Tracker.c"
	}
}


static void
core_value_tracker_copy_value (const GValue* src_value,
                               GValue* dest_value)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (src_value->data[0].v_pointer) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		dest_value->data[0].v_pointer = core_tracker_ref (src_value->data[0].v_pointer);
#line 886 "Tracker.c"
	} else {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		dest_value->data[0].v_pointer = NULL;
#line 890 "Tracker.c"
	}
}


static gpointer
core_value_tracker_peek_pointer (const GValue* value)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return value->data[0].v_pointer;
#line 900 "Tracker.c"
}


static gchar*
core_value_tracker_collect_value (GValue* value,
                                  guint n_collect_values,
                                  GTypeCValue* collect_values,
                                  guint collect_flags)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (collect_values[0].v_pointer) {
#line 912 "Tracker.c"
		CoreTracker * object;
		object = collect_values[0].v_pointer;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (object->parent_instance.g_class == NULL) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 919 "Tracker.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.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 923 "Tracker.c"
		}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = core_tracker_ref (object);
#line 927 "Tracker.c"
	} else {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = NULL;
#line 931 "Tracker.c"
	}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return NULL;
#line 935 "Tracker.c"
}


static gchar*
core_value_tracker_lcopy_value (const GValue* value,
                                guint n_collect_values,
                                GTypeCValue* collect_values,
                                guint collect_flags)
{
	CoreTracker ** object_p;
	object_p = collect_values[0].v_pointer;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (!object_p) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 951 "Tracker.c"
	}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (!value->data[0].v_pointer) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		*object_p = NULL;
#line 957 "Tracker.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		*object_p = value->data[0].v_pointer;
#line 961 "Tracker.c"
	} else {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		*object_p = core_tracker_ref (value->data[0].v_pointer);
#line 965 "Tracker.c"
	}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return NULL;
#line 969 "Tracker.c"
}


GParamSpec*
core_param_spec_tracker (const gchar* name,
                         const gchar* nick,
                         const gchar* blurb,
                         GType object_type,
                         GParamFlags flags)
{
	CoreParamSpecTracker* spec;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (g_type_is_a (object_type, CORE_TYPE_TRACKER), NULL);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return G_PARAM_SPEC (spec);
#line 989 "Tracker.c"
}


gpointer
core_value_get_tracker (const GValue* value)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CORE_TYPE_TRACKER), NULL);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return value->data[0].v_pointer;
#line 1000 "Tracker.c"
}


void
core_value_set_tracker (GValue* value,
                        gpointer v_object)
{
	CoreTracker * old;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CORE_TYPE_TRACKER));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	old = value->data[0].v_pointer;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (v_object) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, CORE_TYPE_TRACKER));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = v_object;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_ref (value->data[0].v_pointer);
#line 1023 "Tracker.c"
	} else {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = NULL;
#line 1027 "Tracker.c"
	}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (old) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_unref (old);
#line 1033 "Tracker.c"
	}
}


void
core_value_take_tracker (GValue* value,
                         gpointer v_object)
{
	CoreTracker * old;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CORE_TYPE_TRACKER));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	old = value->data[0].v_pointer;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (v_object) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, CORE_TYPE_TRACKER));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = v_object;
#line 1055 "Tracker.c"
	} else {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		value->data[0].v_pointer = NULL;
#line 1059 "Tracker.c"
	}
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (old) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_unref (old);
#line 1065 "Tracker.c"
	}
}


static void
core_tracker_class_init (CoreTrackerClass * klass)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_parent_class = g_type_class_peek_parent (klass);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	((CoreTrackerClass *) klass)->finalize = core_tracker_finalize;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_type_class_add_private (klass, sizeof (CoreTrackerPrivate));
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	((CoreTrackerClass *) klass)->updated = core_tracker_real_updated;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_signals[CORE_TRACKER_UPDATED_SIGNAL] = g_signal_new ("updated", CORE_TYPE_TRACKER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (CoreTrackerClass, updated), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
#line 1083 "Tracker.c"
}


static void
core_tracker_instance_init (CoreTracker * self)
{
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv = CORE_TRACKER_GET_PRIVATE (self);
#line 28 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->acc = NULL;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->ref_count = 1;
#line 1096 "Tracker.c"
}


static void
core_tracker_finalize (CoreTracker * obj)
{
	CoreTracker * self;
	CoreTrackerAccumulator* _tmp0_;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CORE_TYPE_TRACKER, CoreTracker);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_handlers_destroy (self);
#line 39 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->acc;
#line 39 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp0_ != NULL) {
#line 1113 "Tracker.c"
		DataCollection* _tmp1_;
		guint _tmp2_;
		DataCollection* _tmp3_;
		guint _tmp4_;
		DataCollection* _tmp5_;
		guint _tmp6_;
#line 40 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp1_ = self->priv->collection;
#line 40 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-added", TYPE_DATA_COLLECTION, &_tmp2_, NULL, FALSE);
#line 40 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp1_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _core_tracker_on_items_added_data_collection_items_added, self);
#line 41 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = self->priv->collection;
#line 41 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-removed", TYPE_DATA_COLLECTION, &_tmp4_, NULL, FALSE);
#line 41 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp3_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp4_, 0, NULL, (GCallback) _core_tracker_on_items_removed_data_collection_items_removed, self);
#line 42 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp5_ = self->priv->collection;
#line 42 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-altered", TYPE_DATA_COLLECTION, &_tmp6_, NULL, FALSE);
#line 42 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp5_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp6_, 0, NULL, (GCallback) _core_tracker_on_items_altered_data_collection_items_altered, self);
#line 1138 "Tracker.c"
	}
#line 26 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_data_collection_unref0 (self->priv->collection);
#line 27 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->initial);
#line 28 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->acc);
#line 1146 "Tracker.c"
}


GType
core_tracker_get_type (void)
{
	static volatile gsize core_tracker_type_id__volatile = 0;
	if (g_once_init_enter (&core_tracker_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { core_value_tracker_init, core_value_tracker_free_value, core_value_tracker_copy_value, core_value_tracker_peek_pointer, "p", core_value_tracker_collect_value, "p", core_value_tracker_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (CoreTrackerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) core_tracker_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CoreTracker), 0, (GInstanceInitFunc) core_tracker_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 core_tracker_type_id;
		core_tracker_type_id = g_type_register_fundamental (g_type_fundamental_next (), "CoreTracker", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&core_tracker_type_id__volatile, core_tracker_type_id);
	}
	return core_tracker_type_id__volatile;
}


gpointer
core_tracker_ref (gpointer instance)
{
	CoreTracker * self;
	self = instance;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_atomic_int_inc (&self->ref_count);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return instance;
#line 1175 "Tracker.c"
}


void
core_tracker_unref (gpointer instance)
{
	CoreTracker * self;
	self = instance;
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		CORE_TRACKER_GET_CLASS (self)->finalize (self);
#line 23 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 1190 "Tracker.c"
	}
}


static void
_core_view_tracker_on_items_shown_view_collection_items_shown (ViewCollection* _sender,
                                                               GeeCollection* visible,
                                                               gpointer self)
{
#line 173 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_on_items_shown ((CoreViewTracker*) self, visible);
#line 1202 "Tracker.c"
}


static void
_core_view_tracker_on_items_hidden_view_collection_items_hidden (ViewCollection* _sender,
                                                                 GeeCollection* hidden,
                                                                 gpointer self)
{
#line 174 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_on_items_hidden ((CoreViewTracker*) self, hidden);
#line 1213 "Tracker.c"
}


static void
_core_view_tracker_on_items_selected_view_collection_items_selected (ViewCollection* _sender,
                                                                     GeeIterable* selected,
                                                                     gpointer self)
{
#line 175 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_on_items_selected ((CoreViewTracker*) self, selected);
#line 1224 "Tracker.c"
}


static void
_core_view_tracker_on_items_unselected_view_collection_items_unselected (ViewCollection* _sender,
                                                                         GeeIterable* unselected,
                                                                         gpointer self)
{
#line 176 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_on_items_unselected ((CoreViewTracker*) self, unselected);
#line 1235 "Tracker.c"
}


CoreViewTracker*
core_view_tracker_construct (GType object_type,
                             ViewCollection* collection)
{
	CoreViewTracker* self = NULL;
	GeeCollection* _tmp0_;
	GeeCollection* _tmp1_;
#line 165 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_VIEW_COLLECTION (collection), NULL);
#line 166 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = view_collection_get_all_unfiltered (collection);
#line 166 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _tmp0_;
#line 166 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = (CoreViewTracker*) core_tracker_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (collection, TYPE_DATA_COLLECTION, DataCollection), _tmp1_);
#line 166 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (_tmp1_);
#line 165 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return self;
#line 1258 "Tracker.c"
}


CoreViewTracker*
core_view_tracker_new (ViewCollection* collection)
{
#line 165 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return core_view_tracker_construct (CORE_TYPE_VIEW_TRACKER, collection);
#line 1267 "Tracker.c"
}


void
core_view_tracker_start (CoreViewTracker* self,
                         CoreTrackerAccumulator* all,
                         CoreTrackerAccumulator* visible,
                         CoreTrackerAccumulator* selected)
{
	CoreViewTrackerMux* _tmp0_;
	CoreViewTrackerMux* _tmp1_;
	ViewCollection* collection = NULL;
	DataCollection* _tmp2_;
	ViewCollection* _tmp3_;
	CoreViewTrackerMux* _tmp4_;
#line 180 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_VIEW_TRACKER (self));
#line 180 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail ((all == NULL) || CORE_IS_TRACKER_ACCUMULATOR (all));
#line 180 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail ((visible == NULL) || CORE_IS_TRACKER_ACCUMULATOR (visible));
#line 180 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail ((selected == NULL) || CORE_IS_TRACKER_ACCUMULATOR (selected));
#line 181 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 181 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_vala_assert (_tmp0_ == NULL, "mux == null");
#line 183 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = core_view_tracker_mux_new (all, visible, selected);
#line 183 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->mux);
#line 183 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->mux = _tmp1_;
#line 185 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp2_ = core_tracker_get_collection (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker));
#line 185 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp3_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, TYPE_VIEW_COLLECTION) ? ((ViewCollection*) _tmp2_) : NULL;
#line 185 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp3_ == NULL) {
#line 185 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_data_collection_unref0 (_tmp2_);
#line 1309 "Tracker.c"
	}
#line 185 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	collection = _tmp3_;
#line 186 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_vala_assert (collection != NULL, "collection != null");
#line 187 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (collection, "items-shown", (GCallback) _core_view_tracker_on_items_shown_view_collection_items_shown, self);
#line 188 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (collection, "items-hidden", (GCallback) _core_view_tracker_on_items_hidden_view_collection_items_hidden, self);
#line 189 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (collection, "items-selected", (GCallback) _core_view_tracker_on_items_selected_view_collection_items_selected, self);
#line 190 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_signal_connect (collection, "items-unselected", (GCallback) _core_view_tracker_on_items_unselected_view_collection_items_unselected, self);
#line 192 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp4_ = self->priv->mux;
#line 192 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_tracker_start (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, CORE_TYPE_TRACKER_ACCUMULATOR, CoreTrackerAccumulator));
#line 180 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_data_collection_unref0 (collection);
#line 1329 "Tracker.c"
}


static void
core_view_tracker_on_items_shown (CoreViewTracker* self,
                                  GeeCollection* shown)
{
	CoreViewTrackerMux* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
#line 195 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_VIEW_TRACKER (self));
#line 195 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_COLLECTION (shown));
#line 196 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 196 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _tmp0_->visible;
#line 196 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1349 "Tracker.c"
		CoreViewTrackerMux* _tmp2_;
		CoreTrackerAccumulator* _tmp3_;
#line 197 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = self->priv->mux;
#line 197 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = _tmp2_->visible;
#line 197 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_include_uninclude (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker), G_TYPE_CHECK_INSTANCE_CAST (shown, GEE_TYPE_ITERABLE, GeeIterable), _core_tracker_accumulator_include_core_tracker_include_uninclude_object, _tmp3_);
#line 1358 "Tracker.c"
	}
}


static void
core_view_tracker_on_items_hidden (CoreViewTracker* self,
                                   GeeCollection* hidden)
{
	CoreViewTrackerMux* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
#line 200 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_VIEW_TRACKER (self));
#line 200 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_COLLECTION (hidden));
#line 201 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 201 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _tmp0_->visible;
#line 201 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1379 "Tracker.c"
		CoreViewTrackerMux* _tmp2_;
		CoreTrackerAccumulator* _tmp3_;
#line 202 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = self->priv->mux;
#line 202 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = _tmp2_->visible;
#line 202 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_include_uninclude (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker), G_TYPE_CHECK_INSTANCE_CAST (hidden, GEE_TYPE_ITERABLE, GeeIterable), _core_tracker_accumulator_uninclude_core_tracker_include_uninclude_object, _tmp3_);
#line 1388 "Tracker.c"
	}
}


static void
core_view_tracker_on_items_selected (CoreViewTracker* self,
                                     GeeIterable* selected)
{
	CoreViewTrackerMux* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
#line 205 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_VIEW_TRACKER (self));
#line 205 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_ITERABLE (selected));
#line 206 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 206 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _tmp0_->selected;
#line 206 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1409 "Tracker.c"
		CoreViewTrackerMux* _tmp2_;
		CoreTrackerAccumulator* _tmp3_;
#line 207 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = self->priv->mux;
#line 207 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = _tmp2_->selected;
#line 207 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_include_uninclude (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker), selected, _core_tracker_accumulator_include_core_tracker_include_uninclude_object, _tmp3_);
#line 1418 "Tracker.c"
	}
}


static void
core_view_tracker_on_items_unselected (CoreViewTracker* self,
                                       GeeIterable* unselected)
{
	CoreViewTrackerMux* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
#line 210 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (CORE_IS_VIEW_TRACKER (self));
#line 210 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_if_fail (GEE_IS_ITERABLE (unselected));
#line 211 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 211 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _tmp0_->selected;
#line 211 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1439 "Tracker.c"
		CoreViewTrackerMux* _tmp2_;
		CoreTrackerAccumulator* _tmp3_;
#line 212 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = self->priv->mux;
#line 212 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = _tmp2_->selected;
#line 212 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		core_tracker_include_uninclude (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker), unselected, _core_tracker_accumulator_uninclude_core_tracker_include_uninclude_object, _tmp3_);
#line 1448 "Tracker.c"
	}
}


static CoreViewTrackerMux*
core_view_tracker_mux_construct (GType object_type,
                                 CoreTrackerAccumulator* all,
                                 CoreTrackerAccumulator* visible,
                                 CoreTrackerAccumulator* selected)
{
	CoreViewTrackerMux * self = NULL;
	CoreTrackerAccumulator* _tmp0_;
	CoreTrackerAccumulator* _tmp1_;
	CoreTrackerAccumulator* _tmp2_;
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail ((all == NULL) || CORE_IS_TRACKER_ACCUMULATOR (all), NULL);
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail ((visible == NULL) || CORE_IS_TRACKER_ACCUMULATOR (visible), NULL);
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail ((selected == NULL) || CORE_IS_TRACKER_ACCUMULATOR (selected), NULL);
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = (CoreViewTrackerMux*) g_object_new (object_type, NULL);
#line 106 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = _g_object_ref0 (all);
#line 106 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->all);
#line 106 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->all = _tmp0_;
#line 107 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = _g_object_ref0 (visible);
#line 107 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->visible);
#line 107 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->visible = _tmp1_;
#line 108 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp2_ = _g_object_ref0 (selected);
#line 108 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->selected);
#line 108 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->selected = _tmp2_;
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return self;
#line 1491 "Tracker.c"
}


static CoreViewTrackerMux*
core_view_tracker_mux_new (CoreTrackerAccumulator* all,
                           CoreTrackerAccumulator* visible,
                           CoreTrackerAccumulator* selected)
{
#line 105 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return core_view_tracker_mux_construct (CORE_VIEW_TRACKER_TYPE_MUX, all, visible, selected);
#line 1502 "Tracker.c"
}


static gboolean
core_view_tracker_mux_real_include (CoreTrackerAccumulator* base,
                                    DataObject* object)
{
	CoreViewTrackerMux * self;
	gboolean result = FALSE;
	DataView* view = NULL;
	DataView* _tmp0_;
	gboolean fire_updated = FALSE;
	CoreTrackerAccumulator* _tmp1_;
	gboolean _tmp6_ = FALSE;
	CoreTrackerAccumulator* _tmp7_;
	gboolean _tmp13_ = FALSE;
	CoreTrackerAccumulator* _tmp14_;
#line 111 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMux);
#line 111 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_DATA_OBJECT (object), FALSE);
#line 112 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_DATA_VIEW, DataView));
#line 112 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	view = _tmp0_;
#line 114 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	fire_updated = FALSE;
#line 116 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = self->all;
#line 116 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1534 "Tracker.c"
		gboolean _tmp2_ = FALSE;
		CoreTrackerAccumulator* _tmp3_;
		DataView* _tmp4_;
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = self->all;
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp4_ = view;
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_include (_tmp3_, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_DATA_OBJECT, DataObject))) {
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = TRUE;
#line 1546 "Tracker.c"
		} else {
			gboolean _tmp5_;
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp5_ = fire_updated;
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = _tmp5_;
#line 1553 "Tracker.c"
		}
#line 117 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp2_;
#line 1557 "Tracker.c"
	}
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp7_ = self->visible;
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp7_ != NULL) {
#line 1563 "Tracker.c"
		DataView* _tmp8_;
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp8_ = view;
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = data_view_is_visible (_tmp8_);
#line 1569 "Tracker.c"
	} else {
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = FALSE;
#line 1573 "Tracker.c"
	}
#line 119 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp6_) {
#line 1577 "Tracker.c"
		gboolean _tmp9_ = FALSE;
		CoreTrackerAccumulator* _tmp10_;
		DataView* _tmp11_;
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp10_ = self->visible;
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp11_ = view;
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_include (_tmp10_, G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_DATA_OBJECT, DataObject))) {
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = TRUE;
#line 1589 "Tracker.c"
		} else {
			gboolean _tmp12_;
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp12_ = fire_updated;
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = _tmp12_;
#line 1596 "Tracker.c"
		}
#line 120 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp9_;
#line 1600 "Tracker.c"
	}
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp14_ = self->selected;
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp14_ != NULL) {
#line 1606 "Tracker.c"
		DataView* _tmp15_;
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp15_ = view;
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = data_view_is_selected (_tmp15_);
#line 1612 "Tracker.c"
	} else {
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = FALSE;
#line 1616 "Tracker.c"
	}
#line 122 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp13_) {
#line 1620 "Tracker.c"
		gboolean _tmp16_ = FALSE;
		CoreTrackerAccumulator* _tmp17_;
		DataView* _tmp18_;
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp17_ = self->selected;
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp18_ = view;
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_include (_tmp17_, G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_DATA_OBJECT, DataObject))) {
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = TRUE;
#line 1632 "Tracker.c"
		} else {
			gboolean _tmp19_;
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp19_ = fire_updated;
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = _tmp19_;
#line 1639 "Tracker.c"
		}
#line 123 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp16_;
#line 1643 "Tracker.c"
	}
#line 125 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	result = fire_updated;
#line 125 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (view);
#line 125 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 1651 "Tracker.c"
}


static gboolean
core_view_tracker_mux_real_uninclude (CoreTrackerAccumulator* base,
                                      DataObject* object)
{
	CoreViewTrackerMux * self;
	gboolean result = FALSE;
	DataView* view = NULL;
	DataView* _tmp0_;
	gboolean fire_updated = FALSE;
	CoreTrackerAccumulator* _tmp1_;
	gboolean _tmp6_ = FALSE;
	CoreTrackerAccumulator* _tmp7_;
	gboolean _tmp13_ = FALSE;
	CoreTrackerAccumulator* _tmp14_;
#line 128 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMux);
#line 128 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_DATA_OBJECT (object), FALSE);
#line 129 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_DATA_VIEW, DataView));
#line 129 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	view = _tmp0_;
#line 131 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	fire_updated = FALSE;
#line 133 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = self->all;
#line 133 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1683 "Tracker.c"
		gboolean _tmp2_ = FALSE;
		CoreTrackerAccumulator* _tmp3_;
		DataView* _tmp4_;
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = self->all;
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp4_ = view;
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_uninclude (_tmp3_, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_DATA_OBJECT, DataObject))) {
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = TRUE;
#line 1695 "Tracker.c"
		} else {
			gboolean _tmp5_;
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp5_ = fire_updated;
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = _tmp5_;
#line 1702 "Tracker.c"
		}
#line 134 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp2_;
#line 1706 "Tracker.c"
	}
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp7_ = self->visible;
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp7_ != NULL) {
#line 1712 "Tracker.c"
		DataView* _tmp8_;
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp8_ = view;
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = data_view_is_visible (_tmp8_);
#line 1718 "Tracker.c"
	} else {
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = FALSE;
#line 1722 "Tracker.c"
	}
#line 136 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp6_) {
#line 1726 "Tracker.c"
		gboolean _tmp9_ = FALSE;
		CoreTrackerAccumulator* _tmp10_;
		DataView* _tmp11_;
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp10_ = self->visible;
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp11_ = view;
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_uninclude (_tmp10_, G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_DATA_OBJECT, DataObject))) {
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = TRUE;
#line 1738 "Tracker.c"
		} else {
			gboolean _tmp12_;
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp12_ = fire_updated;
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = _tmp12_;
#line 1745 "Tracker.c"
		}
#line 137 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp9_;
#line 1749 "Tracker.c"
	}
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp14_ = self->selected;
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp14_ != NULL) {
#line 1755 "Tracker.c"
		DataView* _tmp15_;
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp15_ = view;
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = data_view_is_selected (_tmp15_);
#line 1761 "Tracker.c"
	} else {
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = FALSE;
#line 1765 "Tracker.c"
	}
#line 139 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp13_) {
#line 1769 "Tracker.c"
		gboolean _tmp16_ = FALSE;
		CoreTrackerAccumulator* _tmp17_;
		DataView* _tmp18_;
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp17_ = self->selected;
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp18_ = view;
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_uninclude (_tmp17_, G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_DATA_OBJECT, DataObject))) {
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = TRUE;
#line 1781 "Tracker.c"
		} else {
			gboolean _tmp19_;
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp19_ = fire_updated;
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = _tmp19_;
#line 1788 "Tracker.c"
		}
#line 140 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp16_;
#line 1792 "Tracker.c"
	}
#line 142 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	result = fire_updated;
#line 142 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (view);
#line 142 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 1800 "Tracker.c"
}


static gboolean
core_view_tracker_mux_real_altered (CoreTrackerAccumulator* base,
                                    DataObject* object,
                                    Alteration* alteration)
{
	CoreViewTrackerMux * self;
	gboolean result = FALSE;
	DataView* view = NULL;
	DataView* _tmp0_;
	gboolean fire_updated = FALSE;
	CoreTrackerAccumulator* _tmp1_;
	gboolean _tmp6_ = FALSE;
	CoreTrackerAccumulator* _tmp7_;
	gboolean _tmp13_ = FALSE;
	CoreTrackerAccumulator* _tmp14_;
#line 145 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMux);
#line 145 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_DATA_OBJECT (object), FALSE);
#line 145 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_return_val_if_fail (IS_ALTERATION (alteration), FALSE);
#line 146 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_DATA_VIEW, DataView));
#line 146 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	view = _tmp0_;
#line 148 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	fire_updated = FALSE;
#line 150 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp1_ = self->all;
#line 150 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp1_ != NULL) {
#line 1835 "Tracker.c"
		gboolean _tmp2_ = FALSE;
		CoreTrackerAccumulator* _tmp3_;
		DataView* _tmp4_;
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = self->all;
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp4_ = view;
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_altered (_tmp3_, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_DATA_OBJECT, DataObject), alteration)) {
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = TRUE;
#line 1847 "Tracker.c"
		} else {
			gboolean _tmp5_;
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp5_ = fire_updated;
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp2_ = _tmp5_;
#line 1854 "Tracker.c"
		}
#line 151 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp2_;
#line 1858 "Tracker.c"
	}
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp7_ = self->visible;
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp7_ != NULL) {
#line 1864 "Tracker.c"
		DataView* _tmp8_;
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp8_ = view;
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = data_view_is_visible (_tmp8_);
#line 1870 "Tracker.c"
	} else {
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = FALSE;
#line 1874 "Tracker.c"
	}
#line 153 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp6_) {
#line 1878 "Tracker.c"
		gboolean _tmp9_ = FALSE;
		CoreTrackerAccumulator* _tmp10_;
		DataView* _tmp11_;
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp10_ = self->visible;
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp11_ = view;
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_altered (_tmp10_, G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_DATA_OBJECT, DataObject), alteration)) {
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = TRUE;
#line 1890 "Tracker.c"
		} else {
			gboolean _tmp12_;
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp12_ = fire_updated;
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp9_ = _tmp12_;
#line 1897 "Tracker.c"
		}
#line 154 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp9_;
#line 1901 "Tracker.c"
	}
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp14_ = self->selected;
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp14_ != NULL) {
#line 1907 "Tracker.c"
		DataView* _tmp15_;
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp15_ = view;
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = data_view_is_selected (_tmp15_);
#line 1913 "Tracker.c"
	} else {
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp13_ = FALSE;
#line 1917 "Tracker.c"
	}
#line 156 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp13_) {
#line 1921 "Tracker.c"
		gboolean _tmp16_ = FALSE;
		CoreTrackerAccumulator* _tmp17_;
		DataView* _tmp18_;
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp17_ = self->selected;
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp18_ = view;
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (core_tracker_accumulator_altered (_tmp17_, G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_DATA_OBJECT, DataObject), alteration)) {
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = TRUE;
#line 1933 "Tracker.c"
		} else {
			gboolean _tmp19_;
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp19_ = fire_updated;
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_tmp16_ = _tmp19_;
#line 1940 "Tracker.c"
		}
#line 157 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		fire_updated = _tmp16_;
#line 1944 "Tracker.c"
	}
#line 159 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	result = fire_updated;
#line 159 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (view);
#line 159 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	return result;
#line 1952 "Tracker.c"
}


static void
core_view_tracker_mux_class_init (CoreViewTrackerMuxClass * klass)
{
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_mux_parent_class = g_type_class_peek_parent (klass);
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	G_OBJECT_CLASS (klass)->finalize = core_view_tracker_mux_finalize;
#line 1963 "Tracker.c"
}


static void
core_view_tracker_mux_core_tracker_accumulator_interface_init (CoreTrackerAccumulatorIface * iface)
{
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_mux_core_tracker_accumulator_parent_iface = g_type_interface_peek_parent (iface);
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	iface->include = (gboolean (*) (CoreTrackerAccumulator *, DataObject*)) core_view_tracker_mux_real_include;
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	iface->uninclude = (gboolean (*) (CoreTrackerAccumulator *, DataObject*)) core_view_tracker_mux_real_uninclude;
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	iface->altered = (gboolean (*) (CoreTrackerAccumulator *, DataObject*, Alteration*)) core_view_tracker_mux_real_altered;
#line 1978 "Tracker.c"
}


static void
core_view_tracker_mux_instance_init (CoreViewTrackerMux * self)
{
}


static void
core_view_tracker_mux_finalize (GObject * obj)
{
	CoreViewTrackerMux * self;
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CORE_VIEW_TRACKER_TYPE_MUX, CoreViewTrackerMux);
#line 101 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->all);
#line 102 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->visible);
#line 103 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->selected);
#line 100 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	G_OBJECT_CLASS (core_view_tracker_mux_parent_class)->finalize (obj);
#line 2002 "Tracker.c"
}


static GType
core_view_tracker_mux_get_type (void)
{
	static volatile gsize core_view_tracker_mux_type_id__volatile = 0;
	if (g_once_init_enter (&core_view_tracker_mux_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (CoreViewTrackerMuxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) core_view_tracker_mux_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CoreViewTrackerMux), 0, (GInstanceInitFunc) core_view_tracker_mux_instance_init, NULL };
		static const GInterfaceInfo core_tracker_accumulator_info = { (GInterfaceInitFunc) core_view_tracker_mux_core_tracker_accumulator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType core_view_tracker_mux_type_id;
		core_view_tracker_mux_type_id = g_type_register_static (G_TYPE_OBJECT, "CoreViewTrackerMux", &g_define_type_info, 0);
		g_type_add_interface_static (core_view_tracker_mux_type_id, CORE_TYPE_TRACKER_ACCUMULATOR, &core_tracker_accumulator_info);
		g_once_init_leave (&core_view_tracker_mux_type_id__volatile, core_view_tracker_mux_type_id);
	}
	return core_view_tracker_mux_type_id__volatile;
}


static void
core_view_tracker_class_init (CoreViewTrackerClass * klass)
{
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	core_view_tracker_parent_class = g_type_class_peek_parent (klass);
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	((CoreTrackerClass *) klass)->finalize = core_view_tracker_finalize;
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	g_type_class_add_private (klass, sizeof (CoreViewTrackerPrivate));
#line 2031 "Tracker.c"
}


static void
core_view_tracker_instance_init (CoreViewTracker * self)
{
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv = CORE_VIEW_TRACKER_GET_PRIVATE (self);
#line 163 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self->priv->mux = NULL;
#line 2042 "Tracker.c"
}


static void
core_view_tracker_finalize (CoreTracker * obj)
{
	CoreViewTracker * self;
	CoreViewTrackerMux* _tmp0_;
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CORE_TYPE_VIEW_TRACKER, CoreViewTracker);
#line 170 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_tmp0_ = self->priv->mux;
#line 170 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	if (_tmp0_ != NULL) {
#line 2057 "Tracker.c"
		ViewCollection* collection = NULL;
		DataCollection* _tmp1_;
		ViewCollection* _tmp2_;
		ViewCollection* _tmp3_;
		ViewCollection* _tmp4_;
		guint _tmp5_;
		ViewCollection* _tmp6_;
		guint _tmp7_;
		ViewCollection* _tmp8_;
		guint _tmp9_;
		ViewCollection* _tmp10_;
		guint _tmp11_;
#line 171 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp1_ = core_tracker_get_collection (G_TYPE_CHECK_INSTANCE_CAST (self, CORE_TYPE_TRACKER, CoreTracker));
#line 171 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, TYPE_VIEW_COLLECTION) ? ((ViewCollection*) _tmp1_) : NULL;
#line 171 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		if (_tmp2_ == NULL) {
#line 171 "/home/jens/Source/shotwell/src/core/Tracker.vala"
			_data_collection_unref0 (_tmp1_);
#line 2078 "Tracker.c"
		}
#line 171 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		collection = _tmp2_;
#line 172 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp3_ = collection;
#line 172 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_vala_assert (_tmp3_ != NULL, "collection != null");
#line 173 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp4_ = collection;
#line 173 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-shown", TYPE_VIEW_COLLECTION, &_tmp5_, NULL, FALSE);
#line 173 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp4_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _core_view_tracker_on_items_shown_view_collection_items_shown, self);
#line 174 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp6_ = collection;
#line 174 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-hidden", TYPE_VIEW_COLLECTION, &_tmp7_, NULL, FALSE);
#line 174 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp6_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp7_, 0, NULL, (GCallback) _core_view_tracker_on_items_hidden_view_collection_items_hidden, self);
#line 175 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp8_ = collection;
#line 175 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-selected", TYPE_VIEW_COLLECTION, &_tmp9_, NULL, FALSE);
#line 175 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp8_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp9_, 0, NULL, (GCallback) _core_view_tracker_on_items_selected_view_collection_items_selected, self);
#line 176 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_tmp10_ = collection;
#line 176 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_parse_name ("items-unselected", TYPE_VIEW_COLLECTION, &_tmp11_, NULL, FALSE);
#line 176 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		g_signal_handlers_disconnect_matched (_tmp10_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp11_, 0, NULL, (GCallback) _core_view_tracker_on_items_unselected_view_collection_items_unselected, self);
#line 170 "/home/jens/Source/shotwell/src/core/Tracker.vala"
		_data_collection_unref0 (collection);
#line 2112 "Tracker.c"
	}
#line 163 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	_g_object_unref0 (self->priv->mux);
#line 99 "/home/jens/Source/shotwell/src/core/Tracker.vala"
	CORE_TRACKER_CLASS (core_view_tracker_parent_class)->finalize (obj);
#line 2118 "Tracker.c"
}


GType
core_view_tracker_get_type (void)
{
	static volatile gsize core_view_tracker_type_id__volatile = 0;
	if (g_once_init_enter (&core_view_tracker_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (CoreViewTrackerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) core_view_tracker_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CoreViewTracker), 0, (GInstanceInitFunc) core_view_tracker_instance_init, NULL };
		GType core_view_tracker_type_id;
		core_view_tracker_type_id = g_type_register_static (CORE_TYPE_TRACKER, "CoreViewTracker", &g_define_type_info, 0);
		g_once_init_leave (&core_view_tracker_type_id__volatile, core_view_tracker_type_id);
	}
	return core_view_tracker_type_id__volatile;
}