/* MediaDataRepresentation.c generated by valac 0.40.4, the Vala compiler
 * generated from MediaDataRepresentation.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 <stdlib.h>
#include <string.h>
#include <time.h>
#include <gio/gio.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gee.h>
#include <gobject/gvaluecollector.h>


#define TYPE_BACKING_FILE_STATE (backing_file_state_get_type ())
#define BACKING_FILE_STATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BACKING_FILE_STATE, BackingFileState))
#define BACKING_FILE_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BACKING_FILE_STATE, BackingFileStateClass))
#define IS_BACKING_FILE_STATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BACKING_FILE_STATE))
#define IS_BACKING_FILE_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BACKING_FILE_STATE))
#define BACKING_FILE_STATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BACKING_FILE_STATE, BackingFileStateClass))

typedef struct _BackingFileState BackingFileState;
typedef struct _BackingFileStateClass BackingFileStateClass;
typedef struct _BackingFileStatePrivate BackingFileStatePrivate;
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_BACKING_PHOTO_ROW (backing_photo_row_get_type ())
#define BACKING_PHOTO_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BACKING_PHOTO_ROW, BackingPhotoRow))
#define BACKING_PHOTO_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BACKING_PHOTO_ROW, BackingPhotoRowClass))
#define IS_BACKING_PHOTO_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BACKING_PHOTO_ROW))
#define IS_BACKING_PHOTO_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BACKING_PHOTO_ROW))
#define BACKING_PHOTO_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BACKING_PHOTO_ROW, BackingPhotoRowClass))

typedef struct _BackingPhotoRow BackingPhotoRow;
typedef struct _BackingPhotoRowClass BackingPhotoRowClass;
typedef struct _BackingPhotoRowPrivate BackingPhotoRowPrivate;

#define TYPE_BACKING_PHOTO_ID (backing_photo_id_get_type ())
typedef struct _BackingPhotoID BackingPhotoID;

#define TYPE_PHOTO_FILE_FORMAT (photo_file_format_get_type ())

#define TYPE_DIMENSIONS (dimensions_get_type ())
typedef struct _Dimensions Dimensions;

#define TYPE_ORIENTATION (orientation_get_type ())
typedef struct _ParamSpecBackingFileState ParamSpecBackingFileState;

#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;
typedef struct _DataObjectPrivate DataObjectPrivate;

#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 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 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;
typedef struct _DataSourcePrivate DataSourcePrivate;

#define TYPE_SOURCE_HOLDING_TANK (source_holding_tank_get_type ())
#define SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank))
#define SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_HOLDING_TANK, SourceHoldingTankClass))
#define IS_SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_HOLDING_TANK))
#define IS_SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_HOLDING_TANK))
#define SOURCE_HOLDING_TANK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_HOLDING_TANK, SourceHoldingTankClass))

typedef struct _SourceHoldingTank SourceHoldingTank;
typedef struct _SourceHoldingTankClass SourceHoldingTankClass;

#define TYPE_SOURCE_COLLECTION (source_collection_get_type ())
#define SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_COLLECTION, SourceCollection))
#define SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_COLLECTION, SourceCollectionClass))
#define IS_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_COLLECTION))
#define IS_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_COLLECTION))
#define SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_COLLECTION, SourceCollectionClass))

typedef struct _SourceCollection SourceCollection;
typedef struct _SourceCollectionClass SourceCollectionClass;

#define TYPE_SOURCE_SNAPSHOT (source_snapshot_get_type ())
#define SOURCE_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_SNAPSHOT, SourceSnapshot))
#define SOURCE_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_SNAPSHOT, SourceSnapshotClass))
#define IS_SOURCE_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_SNAPSHOT))
#define IS_SOURCE_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_SNAPSHOT))
#define SOURCE_SNAPSHOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_SNAPSHOT, SourceSnapshotClass))

typedef struct _SourceSnapshot SourceSnapshot;
typedef struct _SourceSnapshotClass SourceSnapshotClass;

#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;
typedef struct _ThumbnailSourcePrivate ThumbnailSourcePrivate;

#define TYPE_INDEXABLE (indexable_get_type ())
#define INDEXABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_INDEXABLE, Indexable))
#define IS_INDEXABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_INDEXABLE))
#define INDEXABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_INDEXABLE, IndexableIface))

typedef struct _Indexable Indexable;
typedef struct _IndexableIface IndexableIface;

#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;
typedef struct _MediaSourcePrivate MediaSourcePrivate;

#define TYPE_EVENT_ID (event_id_get_type ())
typedef struct _EventID EventID;

#define TYPE_RATING (rating_get_type ())

#define PHOTO_TYPE_EXCEPTION (photo_exception_get_type ())

#define TYPE_SCALING (scaling_get_type ())

#define TYPE_SCALE_CONSTRAINT (scale_constraint_get_type ())
typedef struct _Scaling Scaling;

#define TYPE_IMPORT_ID (import_id_get_type ())
typedef struct _ImportID ImportID;

#define TYPE_EVENT_SOURCE (event_source_get_type ())
#define EVENT_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_SOURCE, EventSource))
#define EVENT_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_SOURCE, EventSourceClass))
#define IS_EVENT_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_SOURCE))
#define IS_EVENT_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_SOURCE))
#define EVENT_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_SOURCE, EventSourceClass))

typedef struct _EventSource EventSource;
typedef struct _EventSourceClass EventSourceClass;

#define TYPE_EVENT (event_get_type ())
#define EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT, Event))
#define EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT, EventClass))
#define IS_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT))
#define IS_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT))
#define EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT, EventClass))

typedef struct _Event Event;
typedef struct _EventClass EventClass;
enum  {
	MEDIA_SOURCE_0_PROPERTY,
	MEDIA_SOURCE_NUM_PROPERTIES
};
static GParamSpec* media_source_properties[MEDIA_SOURCE_NUM_PROPERTIES];
#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)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define TYPE_PREPARE_INPUT_TEXT_OPTIONS (prepare_input_text_options_get_type ())

#define TYPE_DATABASE_SOURCE_COLLECTION (database_source_collection_get_type ())
#define DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollection))
#define DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))
#define IS_DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATABASE_SOURCE_COLLECTION))
#define IS_DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATABASE_SOURCE_COLLECTION))
#define DATABASE_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))

typedef struct _DatabaseSourceCollection DatabaseSourceCollection;
typedef struct _DatabaseSourceCollectionClass DatabaseSourceCollectionClass;

#define TYPE_CONTAINER_SOURCE_COLLECTION (container_source_collection_get_type ())
#define CONTAINER_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollection))
#define CONTAINER_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollectionClass))
#define IS_CONTAINER_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONTAINER_SOURCE_COLLECTION))
#define IS_CONTAINER_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONTAINER_SOURCE_COLLECTION))
#define CONTAINER_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollectionClass))

typedef struct _ContainerSourceCollection ContainerSourceCollection;
typedef struct _ContainerSourceCollectionClass ContainerSourceCollectionClass;

#define TYPE_EVENT_SOURCE_COLLECTION (event_source_collection_get_type ())
#define EVENT_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollection))
#define EVENT_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollectionClass))
#define IS_EVENT_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_SOURCE_COLLECTION))
#define IS_EVENT_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_SOURCE_COLLECTION))
#define EVENT_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollectionClass))

typedef struct _EventSourceCollection EventSourceCollection;
typedef struct _EventSourceCollectionClass EventSourceCollectionClass;

#define TYPE_TRANSACTION_CONTROLLER (transaction_controller_get_type ())
#define TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionController))
#define TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))
#define IS_TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSACTION_CONTROLLER))
#define IS_TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRANSACTION_CONTROLLER))
#define TRANSACTION_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))

typedef struct _TransactionController TransactionController;
typedef struct _TransactionControllerClass TransactionControllerClass;
enum  {
	MEDIA_SOURCE_MASTER_REPLACED_SIGNAL,
	MEDIA_SOURCE_NUM_SIGNALS
};
static guint media_source_signals[MEDIA_SOURCE_NUM_SIGNALS] = {0};
typedef struct _SourceHoldingTankPrivate SourceHoldingTankPrivate;

#define TYPE_DATABASE_SOURCE_HOLDING_TANK (database_source_holding_tank_get_type ())
#define DATABASE_SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATABASE_SOURCE_HOLDING_TANK, DatabaseSourceHoldingTank))
#define DATABASE_SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATABASE_SOURCE_HOLDING_TANK, DatabaseSourceHoldingTankClass))
#define IS_DATABASE_SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATABASE_SOURCE_HOLDING_TANK))
#define IS_DATABASE_SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATABASE_SOURCE_HOLDING_TANK))
#define DATABASE_SOURCE_HOLDING_TANK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATABASE_SOURCE_HOLDING_TANK, DatabaseSourceHoldingTankClass))

typedef struct _DatabaseSourceHoldingTank DatabaseSourceHoldingTank;
typedef struct _DatabaseSourceHoldingTankClass DatabaseSourceHoldingTankClass;
typedef struct _DatabaseSourceHoldingTankPrivate DatabaseSourceHoldingTankPrivate;

#define TYPE_MEDIA_SOURCE_HOLDING_TANK (media_source_holding_tank_get_type ())
#define MEDIA_SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTank))
#define MEDIA_SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTankClass))
#define IS_MEDIA_SOURCE_HOLDING_TANK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_HOLDING_TANK))
#define IS_MEDIA_SOURCE_HOLDING_TANK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_HOLDING_TANK))
#define MEDIA_SOURCE_HOLDING_TANK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTankClass))

typedef struct _MediaSourceHoldingTank MediaSourceHoldingTank;
typedef struct _MediaSourceHoldingTankClass MediaSourceHoldingTankClass;
typedef struct _MediaSourceHoldingTankPrivate MediaSourceHoldingTankPrivate;

#define TYPE_MEDIA_SOURCE_COLLECTION (media_source_collection_get_type ())
#define MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection))
#define MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))
#define IS_MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_COLLECTION))
#define IS_MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_COLLECTION))
#define MEDIA_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))

typedef struct _MediaSourceCollection MediaSourceCollection;
typedef struct _MediaSourceCollectionClass MediaSourceCollectionClass;
typedef struct _TransactionControllerPrivate TransactionControllerPrivate;

#define TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER (media_source_transaction_controller_get_type ())
#define MEDIA_SOURCE_TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionController))
#define MEDIA_SOURCE_TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionControllerClass))
#define IS_MEDIA_SOURCE_TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER))
#define IS_MEDIA_SOURCE_TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER))
#define MEDIA_SOURCE_TRANSACTION_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionControllerClass))

typedef struct _MediaSourceTransactionController MediaSourceTransactionController;
typedef struct _MediaSourceTransactionControllerClass MediaSourceTransactionControllerClass;
typedef struct _MediaSourceTransactionControllerPrivate MediaSourceTransactionControllerPrivate;
#define _data_collection_unref0(var) ((var == NULL) ? NULL : (var = (data_collection_unref (var), NULL)))
typedef struct _DataCollectionPrivate DataCollectionPrivate;

#define TYPE_MARKER (marker_get_type ())
#define MARKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MARKER, Marker))
#define IS_MARKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MARKER))
#define MARKER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MARKER, MarkerIface))

typedef struct _Marker Marker;
typedef struct _MarkerIface MarkerIface;
typedef struct _SourceCollectionPrivate SourceCollectionPrivate;

#define TYPE_SOURCE_BACKLINK (source_backlink_get_type ())
#define SOURCE_BACKLINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_BACKLINK, SourceBacklink))
#define SOURCE_BACKLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_BACKLINK, SourceBacklinkClass))
#define IS_SOURCE_BACKLINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_BACKLINK))
#define IS_SOURCE_BACKLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_BACKLINK))
#define SOURCE_BACKLINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_BACKLINK, SourceBacklinkClass))

typedef struct _SourceBacklink SourceBacklink;
typedef struct _SourceBacklinkClass SourceBacklinkClass;
typedef struct _DatabaseSourceCollectionPrivate DatabaseSourceCollectionPrivate;
typedef struct _MediaSourceCollectionPrivate MediaSourceCollectionPrivate;

#define TYPE_WORKERS (workers_get_type ())
#define WORKERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WORKERS, Workers))
#define WORKERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WORKERS, WorkersClass))
#define IS_WORKERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WORKERS))
#define IS_WORKERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_WORKERS))
#define WORKERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_WORKERS, WorkersClass))

typedef struct _Workers Workers;
typedef struct _WorkersClass WorkersClass;

#define TYPE_MEDIA_MONITOR (media_monitor_get_type ())
#define MEDIA_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_MONITOR, MediaMonitor))
#define MEDIA_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_MONITOR, MediaMonitorClass))
#define IS_MEDIA_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_MONITOR))
#define IS_MEDIA_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_MONITOR))
#define MEDIA_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_MONITOR, MediaMonitorClass))

typedef struct _MediaMonitor MediaMonitor;
typedef struct _MediaMonitorClass MediaMonitorClass;
#define _source_holding_tank_unref0(var) ((var == NULL) ? NULL : (var = (source_holding_tank_unref (var), NULL)))

#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_LIBRARY_PHOTO (library_photo_get_type ())
#define LIBRARY_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_PHOTO, LibraryPhoto))
#define LIBRARY_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_PHOTO, LibraryPhotoClass))
#define IS_LIBRARY_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_PHOTO))
#define IS_LIBRARY_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_PHOTO))
#define LIBRARY_PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_PHOTO, LibraryPhotoClass))

typedef struct _LibraryPhoto LibraryPhoto;
typedef struct _LibraryPhotoClass LibraryPhotoClass;

#define TYPE_VIDEO_SOURCE (video_source_get_type ())
#define VIDEO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_SOURCE, VideoSource))
#define VIDEO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_SOURCE, VideoSourceClass))
#define IS_VIDEO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_SOURCE))
#define IS_VIDEO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_SOURCE))
#define VIDEO_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_SOURCE, VideoSourceClass))

typedef struct _VideoSource VideoSource;
typedef struct _VideoSourceClass VideoSourceClass;

#define TYPE_VIDEO (video_get_type ())
#define VIDEO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO, Video))
#define VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO, VideoClass))
#define IS_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO))
#define IS_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO))
#define VIDEO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO, VideoClass))

typedef struct _Video Video;
typedef struct _VideoClass VideoClass;

#define TYPE_FLAGGABLE (flaggable_get_type ())
#define FLAGGABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FLAGGABLE, Flaggable))
#define IS_FLAGGABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FLAGGABLE))
#define FLAGGABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_FLAGGABLE, FlaggableIface))

typedef struct _Flaggable Flaggable;
typedef struct _FlaggableIface FlaggableIface;
#define _import_id_free0(var) ((var == NULL) ? NULL : (var = (import_id_free (var), NULL)))

#define TYPE_AGGREGATE_PROGRESS_MONITOR (aggregate_progress_monitor_get_type ())
#define AGGREGATE_PROGRESS_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_AGGREGATE_PROGRESS_MONITOR, AggregateProgressMonitor))
#define AGGREGATE_PROGRESS_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_AGGREGATE_PROGRESS_MONITOR, AggregateProgressMonitorClass))
#define IS_AGGREGATE_PROGRESS_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_AGGREGATE_PROGRESS_MONITOR))
#define IS_AGGREGATE_PROGRESS_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_AGGREGATE_PROGRESS_MONITOR))
#define AGGREGATE_PROGRESS_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_AGGREGATE_PROGRESS_MONITOR, AggregateProgressMonitorClass))

typedef struct _AggregateProgressMonitor AggregateProgressMonitor;
typedef struct _AggregateProgressMonitorClass AggregateProgressMonitorClass;
#define _aggregate_progress_monitor_unref0(var) ((var == NULL) ? NULL : (var = (aggregate_progress_monitor_unref (var), NULL)))

#define TOMBSTONE_TYPE_REASON (tombstone_reason_get_type ())
enum  {
	MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_STARTING_SIGNAL,
	MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_COMPLETED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_MASTER_FILE_REPLACED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_TRASHCAN_CONTENTS_ALTERED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_IMPORT_ROLL_ALTERED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_OFFLINE_CONTENTS_ALTERED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_FLAGGED_CONTENTS_ALTERED_SIGNAL,
	MEDIA_SOURCE_COLLECTION_NUM_SIGNALS
};
static guint media_source_collection_signals[MEDIA_SOURCE_COLLECTION_NUM_SIGNALS] = {0};

#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;
typedef struct _MediaCollectionRegistryPrivate MediaCollectionRegistryPrivate;

#define TYPE_APPLICATION (application_get_type ())
#define APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APPLICATION, Application))
#define APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APPLICATION, ApplicationClass))
#define IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APPLICATION))
#define IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APPLICATION))
#define APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APPLICATION, ApplicationClass))

typedef struct _Application Application;
typedef struct _ApplicationClass ApplicationClass;
#define _application_unref0(var) ((var == NULL) ? NULL : (var = (application_unref (var), NULL)))

#define TYPE_DIRECTORY_MONITOR (directory_monitor_get_type ())
#define DIRECTORY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DIRECTORY_MONITOR, DirectoryMonitor))
#define DIRECTORY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DIRECTORY_MONITOR, DirectoryMonitorClass))
#define IS_DIRECTORY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DIRECTORY_MONITOR))
#define IS_DIRECTORY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DIRECTORY_MONITOR))
#define DIRECTORY_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DIRECTORY_MONITOR, DirectoryMonitorClass))

typedef struct _DirectoryMonitor DirectoryMonitor;
typedef struct _DirectoryMonitorClass DirectoryMonitorClass;

#define TYPE_LIBRARY_MONITOR (library_monitor_get_type ())
#define LIBRARY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_MONITOR, LibraryMonitor))
#define LIBRARY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_MONITOR, LibraryMonitorClass))
#define IS_LIBRARY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_MONITOR))
#define IS_LIBRARY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_MONITOR))
#define LIBRARY_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_MONITOR, LibraryMonitorClass))

typedef struct _LibraryMonitor LibraryMonitor;
typedef struct _LibraryMonitorClass LibraryMonitorClass;

#define TYPE_LIBRARY_MONITOR_POOL (library_monitor_pool_get_type ())
#define LIBRARY_MONITOR_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_MONITOR_POOL, LibraryMonitorPool))
#define LIBRARY_MONITOR_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_MONITOR_POOL, LibraryMonitorPoolClass))
#define IS_LIBRARY_MONITOR_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_MONITOR_POOL))
#define IS_LIBRARY_MONITOR_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_MONITOR_POOL))
#define LIBRARY_MONITOR_POOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_MONITOR_POOL, LibraryMonitorPoolClass))

typedef struct _LibraryMonitorPool LibraryMonitorPool;
typedef struct _LibraryMonitorPoolClass LibraryMonitorPoolClass;
#define _library_monitor_pool_unref0(var) ((var == NULL) ? NULL : (var = (library_monitor_pool_unref (var), NULL)))
#define _media_collection_registry_unref0(var) ((var == NULL) ? NULL : (var = (media_collection_registry_unref (var), NULL)))

#define TYPE_CONFIGURATION_FACADE (configuration_facade_get_type ())
#define CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacade))
#define CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
#define IS_CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONFIGURATION_FACADE))
#define IS_CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONFIGURATION_FACADE))
#define CONFIGURATION_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))

typedef struct _ConfigurationFacade ConfigurationFacade;
typedef struct _ConfigurationFacadeClass ConfigurationFacadeClass;

#define CONFIG_TYPE_FACADE (config_facade_get_type ())
#define CONFIG_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONFIG_TYPE_FACADE, ConfigFacade))
#define CONFIG_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONFIG_TYPE_FACADE, ConfigFacadeClass))
#define CONFIG_IS_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONFIG_TYPE_FACADE))
#define CONFIG_IS_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONFIG_TYPE_FACADE))
#define CONFIG_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONFIG_TYPE_FACADE, ConfigFacadeClass))

typedef struct _ConfigFacade ConfigFacade;
typedef struct _ConfigFacadeClass ConfigFacadeClass;
typedef struct _ParamSpecMediaCollectionRegistry ParamSpecMediaCollectionRegistry;
#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 _BackingFileState {
	GTypeInstance parent_instance;
	volatile int ref_count;
	BackingFileStatePrivate * priv;
	gchar* filepath;
	gint64 filesize;
	time_t modification_time;
	gchar* md5;
};

struct _BackingFileStateClass {
	GTypeClass parent_class;
	void (*finalize) (BackingFileState *self);
};

struct _BackingPhotoID {
	gint64 id;
};

typedef enum  {
	PHOTO_FILE_FORMAT_JFIF,
	PHOTO_FILE_FORMAT_RAW,
	PHOTO_FILE_FORMAT_PNG,
	PHOTO_FILE_FORMAT_TIFF,
	PHOTO_FILE_FORMAT_BMP,
	PHOTO_FILE_FORMAT_UNKNOWN
} PhotoFileFormat;

struct _Dimensions {
	gint width;
	gint height;
};

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

struct _BackingPhotoRow {
	GTypeInstance parent_instance;
	volatile int ref_count;
	BackingPhotoRowPrivate * priv;
	BackingPhotoID id;
	time_t time_created;
	gchar* filepath;
	gint64 filesize;
	time_t timestamp;
	PhotoFileFormat file_format;
	Dimensions dim;
	Orientation original_orientation;
};

struct _BackingPhotoRowClass {
	GTypeClass parent_class;
	void (*finalize) (BackingPhotoRow *self);
};

struct _ParamSpecBackingFileState {
	GParamSpec parent_instance;
};

struct _DataObject {
	GObject parent_instance;
	DataObjectPrivate * priv;
};

struct _DataObjectClass {
	GObjectClass parent_class;
	void (*notify_altered) (DataObject* self, Alteration* alteration);
	void (*notify_membership_changed) (DataObject* self, DataCollection* collection);
	void (*notify_collection_property_set) (DataObject* self, const gchar* name, GValue* old, GValue* val);
	void (*notify_collection_property_cleared) (DataObject* self, const gchar* name);
	gchar* (*get_name) (DataObject* self);
	gchar* (*to_string) (DataObject* self);
};

struct _DataSource {
	DataObject parent_instance;
	DataSourcePrivate * priv;
};

struct _DataSourceClass {
	DataObjectClass parent_class;
	void (*notify_held_in_tank) (DataSource* self, SourceHoldingTank* holding_tank);
	void (*notify_unlinking) (DataSource* self, SourceCollection* collection);
	void (*notify_unlinked) (DataSource* self);
	void (*notify_relinking) (DataSource* self, SourceCollection* collection);
	void (*notify_relinked) (DataSource* self);
	gchar* (*get_typename) (DataSource* self);
	gint64 (*get_instance_id) (DataSource* self);
	gchar* (*get_source_id) (DataSource* self);
	void (*commit_backlinks) (DataSource* self, SourceCollection* sources, const gchar* dehydrated);
	SourceSnapshot* (*save_snapshot) (DataSource* self);
	gboolean (*internal_delete_backing) (DataSource* self, GError** error);
	gboolean (*equals) (DataSource* self, DataSource* source);
	void (*destroy) (DataSource* self);
	void (*unlinked) (DataSource* self, SourceCollection* sources);
	void (*relinked) (DataSource* self, SourceCollection* sources);
	void (*destroyed) (DataSource* self);
};

struct _ThumbnailSource {
	DataSource parent_instance;
	ThumbnailSourcePrivate * priv;
};

struct _ThumbnailSourceClass {
	DataSourceClass parent_class;
	void (*notify_thumbnail_altered) (ThumbnailSource* self);
	GdkPixbuf* (*get_thumbnail) (ThumbnailSource* self, gint scale, GError** error);
	GdkPixbuf* (*create_thumbnail) (ThumbnailSource* self, gint scale, GError** error);
	gchar* (*get_representative_id) (ThumbnailSource* self);
	PhotoFileFormat (*get_preferred_thumbnail_format) (ThumbnailSource* self);
	void (*thumbnail_altered) (ThumbnailSource* self);
};

struct _IndexableIface {
	GTypeInterface parent_iface;
	const gchar* (*get_indexable_keywords) (Indexable* self);
};

struct _EventID {
	gint64 id;
};

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

typedef enum  {
	PHOTO_EXCEPTION_NONE = 0,
	PHOTO_EXCEPTION_ORIENTATION = 1 << 0,
	PHOTO_EXCEPTION_CROP = 1 << 1,
	PHOTO_EXCEPTION_REDEYE = 1 << 2,
	PHOTO_EXCEPTION_ADJUST = 1 << 3,
	PHOTO_EXCEPTION_STRAIGHTEN = 1 << 4,
	PHOTO_EXCEPTION_ALL = 0xFFFFFFFFLL
} PhotoException;

typedef enum  {
	SCALE_CONSTRAINT_ORIGINAL,
	SCALE_CONSTRAINT_DIMENSIONS,
	SCALE_CONSTRAINT_WIDTH,
	SCALE_CONSTRAINT_HEIGHT,
	SCALE_CONSTRAINT_FILL_VIEWPORT
} ScaleConstraint;

struct _Scaling {
	ScaleConstraint constraint;
	gint scale;
	Dimensions viewport;
	gboolean scale_up;
};

struct _ImportID {
	gint64 id;
};

struct _MediaSource {
	ThumbnailSource parent_instance;
	MediaSourcePrivate * priv;
};

struct _MediaSourceClass {
	ThumbnailSourceClass parent_class;
	void (*notify_master_replaced) (MediaSource* self, GFile* old_file, GFile* new_file);
	gboolean (*set_event_id) (MediaSource* self, EventID* id);
	gchar* (*get_basename) (MediaSource* self);
	GFile* (*get_file) (MediaSource* self);
	GFile* (*get_master_file) (MediaSource* self);
	guint64 (*get_master_filesize) (MediaSource* self);
	guint64 (*get_filesize) (MediaSource* self);
	time_t (*get_timestamp) (MediaSource* self);
	BackingFileState** (*get_backing_files_state) (MediaSource* self, int* result_length1);
	gchar* (*get_title) (MediaSource* self);
	gchar* (*get_comment) (MediaSource* self);
	void (*set_title) (MediaSource* self, const gchar* title);
	gboolean (*set_comment) (MediaSource* self, const gchar* comment);
	Rating (*get_rating) (MediaSource* self);
	void (*set_rating) (MediaSource* self, Rating rating);
	void (*increase_rating) (MediaSource* self);
	void (*decrease_rating) (MediaSource* self);
	void (*get_dimensions) (MediaSource* self, PhotoException disallowed_steps, Dimensions* result);
	GdkPixbuf* (*get_preview_pixbuf) (MediaSource* self, Scaling* scaling, GError** error);
	gboolean (*is_trashed) (MediaSource* self);
	void (*trash) (MediaSource* self);
	void (*untrash) (MediaSource* self);
	gboolean (*is_offline) (MediaSource* self);
	void (*mark_offline) (MediaSource* self);
	void (*mark_online) (MediaSource* self);
	gchar* (*get_master_md5) (MediaSource* self);
	void (*get_event_id) (MediaSource* self, EventID* result);
	time_t (*get_exposure_time) (MediaSource* self);
	void (*get_import_id) (MediaSource* self, ImportID* result);
	void (*master_replaced) (MediaSource* self, GFile* old_file, GFile* new_file);
};

struct _MediaSourcePrivate {
	Event* event;
	gchar* indexable_keywords;
};

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

struct _SourceHoldingTank {
	GTypeInstance parent_instance;
	volatile int ref_count;
	SourceHoldingTankPrivate * priv;
};

struct _SourceHoldingTankClass {
	GTypeClass parent_class;
	void (*finalize) (SourceHoldingTank *self);
	void (*notify_contents_altered) (SourceHoldingTank* self, GeeCollection* added, GeeCollection* removed);
	void (*contents_altered) (SourceHoldingTank* self, GeeCollection* added, GeeCollection* removed);
};

struct _DatabaseSourceHoldingTank {
	SourceHoldingTank parent_instance;
	DatabaseSourceHoldingTankPrivate * priv;
};

struct _DatabaseSourceHoldingTankClass {
	SourceHoldingTankClass parent_class;
};

struct _MediaSourceHoldingTank {
	DatabaseSourceHoldingTank parent_instance;
	MediaSourceHoldingTankPrivate * priv;
};

struct _MediaSourceHoldingTankClass {
	DatabaseSourceHoldingTankClass parent_class;
};

struct _MediaSourceHoldingTankPrivate {
	GeeHashMap* master_file_map;
};

typedef gboolean (*SourceHoldingTankCheckToKeep) (DataSource* source, Alteration* alteration, void* user_data);
typedef gint64 (*GetSourceDatabaseKey) (DataSource* source, void* user_data);
struct _TransactionController {
	GTypeInstance parent_instance;
	volatile int ref_count;
	TransactionControllerPrivate * priv;
};

struct _TransactionControllerClass {
	GTypeClass parent_class;
	void (*finalize) (TransactionController *self);
	void (*begin_impl) (TransactionController* self, GError** error);
	void (*commit_impl) (TransactionController* self, GError** error);
};

struct _MediaSourceTransactionController {
	TransactionController parent_instance;
	MediaSourceTransactionControllerPrivate * priv;
};

struct _MediaSourceTransactionControllerClass {
	TransactionControllerClass parent_class;
};

struct _MediaSourceTransactionControllerPrivate {
	MediaSourceCollection* sources;
};

typedef enum  {
	DATABASE_ERROR_ERROR,
	DATABASE_ERROR_BACKING,
	DATABASE_ERROR_MEMORY,
	DATABASE_ERROR_ABORT,
	DATABASE_ERROR_LIMITS,
	DATABASE_ERROR_TYPESPEC
} DatabaseError;
#define DATABASE_ERROR database_error_quark ()
typedef gint64 (*Comparator) (void* a, void* b, void* user_data);
typedef gboolean (*ComparatorPredicate) (DataObject* object, Alteration* alteration, void* user_data);
typedef gboolean (*ProgressMonitor) (guint64 current, guint64 total, gboolean do_event_loop, void* user_data);
struct _MarkerIface {
	GTypeInterface parent_iface;
	void (*mark) (Marker* self, DataObject* object);
	void (*unmark) (Marker* self, DataObject* object);
	gboolean (*toggle) (Marker* self, DataObject* object);
	void (*mark_many) (Marker* self, GeeCollection* list);
	void (*unmark_many) (Marker* self, GeeCollection* list);
	void (*mark_all) (Marker* self);
	gint (*get_count) (Marker* self);
	GeeCollection* (*get_all) (Marker* self);
};

struct _DataCollection {
	GTypeInstance parent_instance;
	volatile int ref_count;
	DataCollectionPrivate * priv;
};

struct _DataCollectionClass {
	GTypeClass parent_class;
	void (*finalize) (DataCollection *self);
	gchar* (*to_string) (DataCollection* self);
	void (*notify_items_added) (DataCollection* self, GeeIterable* added);
	void (*notify_items_removed) (DataCollection* self, GeeIterable* removed);
	void (*notify_contents_altered) (DataCollection* self, GeeIterable* added, GeeIterable* removed);
	void (*notify_items_altered) (DataCollection* self, GeeMap* items);
	void (*notify_ordering_changed) (DataCollection* self);
	void (*notify_property_set) (DataCollection* self, const gchar* name, GValue* old, GValue* val);
	void (*notify_property_cleared) (DataCollection* self, const gchar* name);
	gboolean (*valid_type) (DataCollection* self, DataObject* object);
	void (*set_comparator) (DataCollection* self, Comparator comparator, void* comparator_target, ComparatorPredicate predicate, void* predicate_target);
	void (*reset_comparator) (DataCollection* self);
	GeeCollection* (*get_all) (DataCollection* self);
	gint (*get_count) (DataCollection* self);
	DataObject* (*get_at) (DataCollection* self, gint index);
	gint (*index_of) (DataCollection* self, DataObject* object);
	gboolean (*contains) (DataCollection* self, DataObject* object);
	gboolean (*add) (DataCollection* self, DataObject* object);
	GeeCollection* (*add_many) (DataCollection* self, GeeCollection* objects, ProgressMonitor monitor, void* monitor_target);
	void (*remove_marked) (DataCollection* self, Marker* m);
	void (*clear) (DataCollection* self);
	void (*close) (DataCollection* self);
	void (*notify_frozen) (DataCollection* self);
	void (*notify_thawed) (DataCollection* self);
	void (*items_added) (DataCollection* self, GeeIterable* added);
	void (*items_removed) (DataCollection* self, GeeIterable* removed);
	void (*contents_altered) (DataCollection* self, GeeIterable* added, GeeIterable* removed);
	void (*items_altered) (DataCollection* self, GeeMap* items);
	void (*ordering_changed) (DataCollection* self);
	void (*property_set) (DataCollection* self, const gchar* name, GValue* old, GValue* val);
	void (*property_cleared) (DataCollection* self, const gchar* name);
	void (*frozen) (DataCollection* self);
	void (*thawed) (DataCollection* self);
};

struct _SourceCollection {
	DataCollection parent_instance;
	SourceCollectionPrivate * priv;
};

struct _SourceCollectionClass {
	DataCollectionClass parent_class;
	gboolean (*holds_type_of_source) (SourceCollection* self, DataSource* source);
	void (*notify_items_unlinking) (SourceCollection* self, GeeCollection* unlinking);
	void (*notify_items_relinked) (SourceCollection* self, GeeCollection* relinked);
	void (*notify_item_destroyed) (SourceCollection* self, DataSource* source);
	void (*notify_items_destroyed) (SourceCollection* self, GeeCollection* destroyed);
	void (*notify_unlinked_destroyed) (SourceCollection* self, DataSource* unlinked);
	void (*notify_backlink_removed) (SourceCollection* self, SourceBacklink* backlink, GeeCollection* sources);
	gboolean (*has_backlink) (SourceCollection* self, SourceBacklink* backlink);
	void (*remove_backlink) (SourceCollection* self, SourceBacklink* backlink);
	void (*items_unlinking) (SourceCollection* self, GeeCollection* unlinking);
	void (*items_relinked) (SourceCollection* self, GeeCollection* relinked);
	void (*item_destroyed) (SourceCollection* self, DataSource* source);
	void (*items_destroyed) (SourceCollection* self, GeeCollection* destroyed);
	void (*unlinked_destroyed) (SourceCollection* self, DataSource* source);
	void (*backlink_removed) (SourceCollection* self, SourceBacklink* backlink, GeeCollection* sources);
};

struct _DatabaseSourceCollection {
	SourceCollection parent_instance;
	DatabaseSourceCollectionPrivate * priv;
};

struct _DatabaseSourceCollectionClass {
	SourceCollectionClass parent_class;
};

struct _MediaSourceCollection {
	DatabaseSourceCollection parent_instance;
	MediaSourceCollectionPrivate * priv;
};

struct _MediaSourceCollectionClass {
	DatabaseSourceCollectionClass parent_class;
	MediaSourceHoldingTank* (*create_trashcan) (MediaSourceCollection* self);
	MediaSourceHoldingTank* (*create_offline_bin) (MediaSourceCollection* self);
	MediaMonitor* (*create_media_monitor) (MediaSourceCollection* self, Workers* workers, GCancellable* cancellable);
	gchar* (*get_typename) (MediaSourceCollection* self);
	gboolean (*is_file_recognized) (MediaSourceCollection* self, GFile* file);
	MediaSource* (*fetch_by_numeric_id) (MediaSourceCollection* self, gint64 numeric_id);
	void (*notify_import_roll_altered) (MediaSourceCollection* self);
	void (*notify_flagged_contents_altered) (MediaSourceCollection* self);
	void (*notify_media_import_starting) (MediaSourceCollection* self, GeeCollection* media);
	void (*notify_media_import_completed) (MediaSourceCollection* self, GeeCollection* media);
	MediaSource* (*fetch_by_source_id) (MediaSourceCollection* self, const gchar* source_id);
	GeeCollection* (*get_event_source_ids) (MediaSourceCollection* self, EventID* event_id);
	void (*import_many) (MediaSourceCollection* self, GeeCollection* media);
	void (*postprocess_imported_media) (MediaSourceCollection* self, GeeCollection* media);
	void (*media_import_starting) (MediaSourceCollection* self, GeeCollection* media);
	void (*media_import_completed) (MediaSourceCollection* self, GeeCollection* media);
	void (*master_file_replaced) (MediaSourceCollection* self, MediaSource* media, GFile* old_file, GFile* new_file);
	void (*trashcan_contents_altered) (MediaSourceCollection* self, GeeCollection* added, GeeCollection* removed);
	void (*import_roll_altered) (MediaSourceCollection* self);
	void (*offline_contents_altered) (MediaSourceCollection* self, GeeCollection* added, GeeCollection* removed);
	void (*flagged_contents_altered) (MediaSourceCollection* self);
	TransactionController* (*get_transaction_controller) (MediaSourceCollection* self);
};

struct _MediaSourceCollectionPrivate {
	MediaSourceHoldingTank* trashcan;
	MediaSourceHoldingTank* offline_bin;
	GeeHashMap* by_master_file;
	GeeMultiMap* import_rolls;
	GeeTreeSet* sorted_import_ids;
	GeeSet* flagged;
};

struct _FlaggableIface {
	GTypeInterface parent_iface;
	gboolean (*is_flagged) (Flaggable* self);
	void (*mark_flagged) (Flaggable* self);
	void (*mark_unflagged) (Flaggable* self);
};

typedef enum  {
	TOMBSTONE_REASON_REMOVED_BY_USER = 0,
	TOMBSTONE_REASON_AUTO_DETECTED_DUPLICATE = 1
} TombstoneReason;

struct _MediaCollectionRegistry {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MediaCollectionRegistryPrivate * priv;
};

struct _MediaCollectionRegistryClass {
	GTypeClass parent_class;
	void (*finalize) (MediaCollectionRegistry *self);
};

struct _MediaCollectionRegistryPrivate {
	GeeArrayList* all;
	GeeHashMap* by_typename;
};

struct _ParamSpecMediaCollectionRegistry {
	GParamSpec parent_instance;
};


static gpointer backing_file_state_parent_class = NULL;
static gpointer media_source_parent_class = NULL;
extern EventSourceCollection* event_global;
static IndexableIface * media_source_indexable_parent_iface = NULL;
static gpointer media_source_holding_tank_parent_class = NULL;
static gpointer media_source_transaction_controller_parent_class = NULL;
static gpointer media_source_collection_parent_class = NULL;
static gpointer media_collection_registry_parent_class = NULL;
static MediaCollectionRegistry* media_collection_registry_instance;
static MediaCollectionRegistry* media_collection_registry_instance = NULL;
extern gboolean commandline_options_no_runtime_monitoring;

gpointer backing_file_state_ref (gpointer instance);
void backing_file_state_unref (gpointer instance);
GParamSpec* param_spec_backing_file_state (const gchar* name,
                                           const gchar* nick,
                                           const gchar* blurb,
                                           GType object_type,
                                           GParamFlags flags);
void value_set_backing_file_state (GValue* value,
                                   gpointer v_object);
void value_take_backing_file_state (GValue* value,
                                    gpointer v_object);
gpointer value_get_backing_file_state (const GValue* value);
GType backing_file_state_get_type (void) G_GNUC_CONST;
BackingFileState* backing_file_state_new (const gchar* filepath,
                                          gint64 filesize,
                                          time_t modification_time,
                                          const gchar* md5);
BackingFileState* backing_file_state_construct (GType object_type,
                                                const gchar* filepath,
                                                gint64 filesize,
                                                time_t modification_time,
                                                const gchar* md5);
gpointer backing_photo_row_ref (gpointer instance);
void backing_photo_row_unref (gpointer instance);
GParamSpec* param_spec_backing_photo_row (const gchar* name,
                                          const gchar* nick,
                                          const gchar* blurb,
                                          GType object_type,
                                          GParamFlags flags);
void value_set_backing_photo_row (GValue* value,
                                  gpointer v_object);
void value_take_backing_photo_row (GValue* value,
                                   gpointer v_object);
gpointer value_get_backing_photo_row (const GValue* value);
GType backing_photo_row_get_type (void) G_GNUC_CONST;
BackingFileState* backing_file_state_new_from_photo_row (BackingPhotoRow* photo_row,
                                                         const gchar* md5);
BackingFileState* backing_file_state_construct_from_photo_row (GType object_type,
                                                               BackingPhotoRow* photo_row,
                                                               const gchar* md5);
GType backing_photo_id_get_type (void) G_GNUC_CONST;
BackingPhotoID* backing_photo_id_dup (const BackingPhotoID* self);
void backing_photo_id_free (BackingPhotoID* self);
GType photo_file_format_get_type (void) G_GNUC_CONST;
GType dimensions_get_type (void) G_GNUC_CONST;
Dimensions* dimensions_dup (const Dimensions* self);
void dimensions_free (Dimensions* self);
GType orientation_get_type (void) G_GNUC_CONST;
GFile* backing_file_state_get_file (BackingFileState* self);
static void backing_file_state_finalize (BackingFileState * obj);
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;
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;
GType data_source_get_type (void) G_GNUC_CONST;
gpointer source_holding_tank_ref (gpointer instance);
void source_holding_tank_unref (gpointer instance);
GParamSpec* param_spec_source_holding_tank (const gchar* name,
                                            const gchar* nick,
                                            const gchar* blurb,
                                            GType object_type,
                                            GParamFlags flags);
void value_set_source_holding_tank (GValue* value,
                                    gpointer v_object);
void value_take_source_holding_tank (GValue* value,
                                     gpointer v_object);
gpointer value_get_source_holding_tank (const GValue* value);
GType source_holding_tank_get_type (void) G_GNUC_CONST;
GType source_collection_get_type (void) G_GNUC_CONST;
gpointer source_snapshot_ref (gpointer instance);
void source_snapshot_unref (gpointer instance);
GParamSpec* param_spec_source_snapshot (const gchar* name,
                                        const gchar* nick,
                                        const gchar* blurb,
                                        GType object_type,
                                        GParamFlags flags);
void value_set_source_snapshot (GValue* value,
                                gpointer v_object);
void value_take_source_snapshot (GValue* value,
                                 gpointer v_object);
gpointer value_get_source_snapshot (const GValue* value);
GType source_snapshot_get_type (void) G_GNUC_CONST;
GType thumbnail_source_get_type (void) G_GNUC_CONST;
GType indexable_get_type (void) G_GNUC_CONST;
GType media_source_get_type (void) G_GNUC_CONST;
GType event_id_get_type (void) G_GNUC_CONST;
EventID* event_id_dup (const EventID* self);
void event_id_free (EventID* self);
GType rating_get_type (void) G_GNUC_CONST;
GType photo_exception_get_type (void) G_GNUC_CONST;
GType scaling_get_type (void) G_GNUC_CONST;
GType scale_constraint_get_type (void) G_GNUC_CONST;
Scaling* scaling_dup (const Scaling* self);
void scaling_free (Scaling* self);
GType import_id_get_type (void) G_GNUC_CONST;
ImportID* import_id_dup (const ImportID* self);
void import_id_free (ImportID* self);
GType event_source_get_type (void) G_GNUC_CONST;
GType event_get_type (void) G_GNUC_CONST;
#define MEDIA_SOURCE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MEDIA_SOURCE, MediaSourcePrivate))
MediaSource* media_source_construct (GType object_type,
                                     gint64 object_id);
ThumbnailSource* thumbnail_source_construct (GType object_type,
                                             gint64 object_id);
guint64 media_source_internal_add_flags (guint64 flags,
                                         guint64 selector);
guint64 media_source_internal_remove_flags (guint64 flags,
                                            guint64 selector);
gboolean media_source_internal_is_flag_set (guint64 flags,
                                            guint64 selector);
void media_source_notify_master_replaced (MediaSource* self,
                                          GFile* old_file,
                                          GFile* new_file);
static void media_source_real_notify_master_replaced (MediaSource* self,
                                               GFile* old_file,
                                               GFile* new_file);
static void media_source_real_notify_altered (DataObject* base,
                                       Alteration* alteration);
gboolean alteration_has_detail (Alteration* self,
                                const gchar* subject,
                                const gchar* detail);
static void media_source_update_indexable_keywords (MediaSource* self);
Alteration* alteration_compress (Alteration* self,
                                 Alteration* other);
Alteration* alteration_new (const gchar* subject,
                            const gchar* detail);
Alteration* alteration_construct (GType object_type,
                                  const gchar* subject,
                                  const gchar* detail);
void data_object_notify_altered (DataObject* self,
                                 Alteration* alteration);
static void media_source_real_notify_membership_changed (DataObject* base,
                                                  DataCollection* collection);
void data_object_notify_membership_changed (DataObject* self,
                                            DataCollection* collection);
gchar* media_source_get_title (MediaSource* self);
gchar* media_source_get_basename (MediaSource* self);
gchar* media_source_get_comment (MediaSource* self);
gchar* indexable_prepare_indexable_strings (gchar** strs,
                                            int strs_length1);
static const gchar* media_source_real_get_indexable_keywords (Indexable* base);
gboolean media_source_set_event_id (MediaSource* self,
                                    EventID* id);
static gboolean media_source_real_set_event_id (MediaSource* self,
                                         EventID* id);
gboolean media_source_delete_original_file (MediaSource* self);
GFile* media_source_get_master_file (MediaSource* self);
GFile* app_dirs_get_import_dir (void);
gboolean query_is_directory_empty (GFile* dir,
                                   GError** error);
static gchar* media_source_real_get_name (DataObject* base);
gboolean is_string_empty (const gchar* s);
static gchar* media_source_real_get_basename (MediaSource* self);
GFile* media_source_get_file (MediaSource* self);
static GFile* media_source_real_get_file (MediaSource* self);
static GFile* media_source_real_get_master_file (MediaSource* self);
guint64 media_source_get_master_filesize (MediaSource* self);
static guint64 media_source_real_get_master_filesize (MediaSource* self);
guint64 media_source_get_filesize (MediaSource* self);
static guint64 media_source_real_get_filesize (MediaSource* self);
time_t media_source_get_timestamp (MediaSource* self);
static time_t media_source_real_get_timestamp (MediaSource* self);
BackingFileState** media_source_get_backing_files_state (MediaSource* self,
                                                         int* result_length1);
static BackingFileState** media_source_real_get_backing_files_state (MediaSource* self,
                                                              int* result_length1);
static gchar* media_source_real_get_title (MediaSource* self);
static gchar* media_source_real_get_comment (MediaSource* self);
void media_source_set_title (MediaSource* self,
                             const gchar* title);
static void media_source_real_set_title (MediaSource* self,
                                  const gchar* title);
gboolean media_source_set_comment (MediaSource* self,
                                   const gchar* comment);
static gboolean media_source_real_set_comment (MediaSource* self,
                                        const gchar* comment);
gchar* media_source_prep_title (const gchar* title);
GType prepare_input_text_options_get_type (void) G_GNUC_CONST;
gchar* prepare_input_text (const gchar* text,
                           PrepareInputTextOptions options,
                           gint dest_length);
#define DEFAULT_USER_TEXT_INPUT_LENGTH 1024
gchar* media_source_prep_comment (const gchar* comment);
Rating media_source_get_rating (MediaSource* self);
static Rating media_source_real_get_rating (MediaSource* self);
void media_source_set_rating (MediaSource* self,
                              Rating rating);
static void media_source_real_set_rating (MediaSource* self,
                                   Rating rating);
void media_source_increase_rating (MediaSource* self);
static void media_source_real_increase_rating (MediaSource* self);
void media_source_decrease_rating (MediaSource* self);
static void media_source_real_decrease_rating (MediaSource* self);
void media_source_get_dimensions (MediaSource* self,
                                  PhotoException disallowed_steps,
                                  Dimensions* result);
static void media_source_real_get_dimensions (MediaSource* self,
                                       PhotoException disallowed_steps,
                                       Dimensions* result);
GdkPixbuf* media_source_get_preview_pixbuf (MediaSource* self,
                                            Scaling* scaling,
                                            GError** error);
static GdkPixbuf* media_source_real_get_preview_pixbuf (MediaSource* self,
                                                 Scaling* scaling,
                                                 GError** error);
gboolean media_source_is_trashed (MediaSource* self);
static gboolean media_source_real_is_trashed (MediaSource* self);
void media_source_trash (MediaSource* self);
static void media_source_real_trash (MediaSource* self);
void media_source_untrash (MediaSource* self);
static void media_source_real_untrash (MediaSource* self);
gboolean media_source_is_offline (MediaSource* self);
static gboolean media_source_real_is_offline (MediaSource* self);
void media_source_mark_offline (MediaSource* self);
static void media_source_real_mark_offline (MediaSource* self);
void media_source_mark_online (MediaSource* self);
static void media_source_real_mark_online (MediaSource* self);
gchar* media_source_get_master_md5 (MediaSource* self);
static gchar* media_source_real_get_master_md5 (MediaSource* self);
void media_source_get_event_id (MediaSource* self,
                                EventID* result);
static void media_source_real_get_event_id (MediaSource* self,
                                     EventID* result);
Event* media_source_get_event (MediaSource* self);
gboolean event_id_is_valid (EventID *self);
GType database_source_collection_get_type (void) G_GNUC_CONST;
GType container_source_collection_get_type (void) G_GNUC_CONST;
GType event_source_collection_get_type (void) G_GNUC_CONST;
Event* event_source_collection_fetch (EventSourceCollection* self,
                                      EventID* event_id);
gboolean media_source_set_event (MediaSource* self,
                                 Event* new_event);
void event_get_event_id (Event* self,
                         EventID* result);
#define EVENT_ID_INVALID ((gint64) -1)
void event_id_init (EventID *self,
                    gint64 id);
void event_detach (Event* self,
                   MediaSource* source);
void event_attach (Event* self,
                   MediaSource* source);
gpointer transaction_controller_ref (gpointer instance);
void transaction_controller_unref (gpointer instance);
GParamSpec* param_spec_transaction_controller (const gchar* name,
                                               const gchar* nick,
                                               const gchar* blurb,
                                               GType object_type,
                                               GParamFlags flags);
void value_set_transaction_controller (GValue* value,
                                       gpointer v_object);
void value_take_transaction_controller (GValue* value,
                                        gpointer v_object);
gpointer value_get_transaction_controller (const GValue* value);
GType transaction_controller_get_type (void) G_GNUC_CONST;
void media_source_set_many_to_event (GeeCollection* media_sources,
                                     Event* event,
                                     TransactionController* controller,
                                     GError** error);
void transaction_controller_begin (TransactionController* self);
void event_attach_many (Event* self,
                        GeeCollection* media);
void transaction_controller_commit (TransactionController* self);
time_t media_source_get_exposure_time (MediaSource* self);
static time_t media_source_real_get_exposure_time (MediaSource* self);
void media_source_get_import_id (MediaSource* self,
                                 ImportID* result);
static void media_source_real_get_import_id (MediaSource* self,
                                      ImportID* result);
static void media_source_real_master_replaced (MediaSource* self,
                                        GFile* old_file,
                                        GFile* new_file);
static void g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure,
                                                  GValue * return_value,
                                                  guint n_param_values,
                                                  const GValue * param_values,
                                                  gpointer invocation_hint,
                                                  gpointer marshal_data);
static void media_source_finalize (GObject * obj);
GType database_source_holding_tank_get_type (void) G_GNUC_CONST;
GType media_source_holding_tank_get_type (void) G_GNUC_CONST;
#define MEDIA_SOURCE_HOLDING_TANK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTankPrivate))
guint file_hash (GFile* file);
static guint _file_hash_gee_hash_data_func (gconstpointer v,
                                     gpointer self);
gboolean file_equal (GFile* a,
                     GFile* b);
static gboolean _file_equal_gee_equal_data_func (gconstpointer a,
                                          gconstpointer b,
                                          gpointer self);
GType media_source_collection_get_type (void) G_GNUC_CONST;
MediaSourceHoldingTank* media_source_holding_tank_new (MediaSourceCollection* sources,
                                                       SourceHoldingTankCheckToKeep check_to_keep,
                                                       void* check_to_keep_target,
                                                       GetSourceDatabaseKey get_key,
                                                       void* get_key_target);
MediaSourceHoldingTank* media_source_holding_tank_construct (GType object_type,
                                                             MediaSourceCollection* sources,
                                                             SourceHoldingTankCheckToKeep check_to_keep,
                                                             void* check_to_keep_target,
                                                             GetSourceDatabaseKey get_key,
                                                             void* get_key_target);
DatabaseSourceHoldingTank* database_source_holding_tank_new (SourceCollection* sources,
                                                             SourceHoldingTankCheckToKeep check_to_keep,
                                                             void* check_to_keep_target,
                                                             GetSourceDatabaseKey get_key,
                                                             void* get_key_target);
DatabaseSourceHoldingTank* database_source_holding_tank_construct (GType object_type,
                                                                   SourceCollection* sources,
                                                                   SourceHoldingTankCheckToKeep check_to_keep,
                                                                   void* check_to_keep_target,
                                                                   GetSourceDatabaseKey get_key,
                                                                   void* get_key_target);
MediaSource* media_source_holding_tank_fetch_by_master_file (MediaSourceHoldingTank* self,
                                                             GFile* file);
MediaSource* media_source_holding_tank_fetch_by_md5 (MediaSourceHoldingTank* self,
                                                     const gchar* md5);
static void media_source_holding_tank_real_notify_contents_altered (SourceHoldingTank* base,
                                                             GeeCollection* added,
                                                             GeeCollection* removed);
static void media_source_holding_tank_on_master_source_replaced (MediaSourceHoldingTank* self,
                                                          MediaSource* media_source,
                                                          GFile* old_file,
                                                          GFile* new_file);
static void _media_source_holding_tank_on_master_source_replaced_media_source_master_replaced (MediaSource* _sender,
                                                                                        GFile* old_file,
                                                                                        GFile* new_file,
                                                                                        gpointer self);
void source_holding_tank_notify_contents_altered (SourceHoldingTank* self,
                                                  GeeCollection* added,
                                                  GeeCollection* removed);
static void media_source_holding_tank_finalize (SourceHoldingTank * obj);
GType media_source_transaction_controller_get_type (void) G_GNUC_CONST;
#define MEDIA_SOURCE_TRANSACTION_CONTROLLER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionControllerPrivate))
MediaSourceTransactionController* media_source_transaction_controller_new (MediaSourceCollection* sources);
MediaSourceTransactionController* media_source_transaction_controller_construct (GType object_type,
                                                                                 MediaSourceCollection* sources);
TransactionController* transaction_controller_construct (GType object_type);
static void media_source_transaction_controller_real_begin_impl (TransactionController* base,
                                                          GError** error);
void database_table_begin_transaction (void);
void data_collection_freeze_notifications (DataCollection* self);
static void media_source_transaction_controller_real_commit_impl (TransactionController* base,
                                                           GError** error);
void data_collection_thaw_notifications (DataCollection* self);
GQuark database_error_quark (void);
void database_table_commit_transaction (GError** error);
static void media_source_transaction_controller_finalize (TransactionController * obj);
GType marker_get_type (void) G_GNUC_CONST;
gpointer source_backlink_ref (gpointer instance);
void source_backlink_unref (gpointer instance);
GParamSpec* param_spec_source_backlink (const gchar* name,
                                        const gchar* nick,
                                        const gchar* blurb,
                                        GType object_type,
                                        GParamFlags flags);
void value_set_source_backlink (GValue* value,
                                gpointer v_object);
void value_take_source_backlink (GValue* value,
                                 gpointer v_object);
gpointer value_get_source_backlink (const GValue* value);
GType source_backlink_get_type (void) G_GNUC_CONST;
gpointer workers_ref (gpointer instance);
void workers_unref (gpointer instance);
GParamSpec* param_spec_workers (const gchar* name,
                                const gchar* nick,
                                const gchar* blurb,
                                GType object_type,
                                GParamFlags flags);
void value_set_workers (GValue* value,
                        gpointer v_object);
void value_take_workers (GValue* value,
                         gpointer v_object);
gpointer value_get_workers (const GValue* value);
GType workers_get_type (void) G_GNUC_CONST;
GType media_monitor_get_type (void) G_GNUC_CONST;
#define MEDIA_SOURCE_COLLECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionPrivate))
gint import_id_compare_func (ImportID* a,
                             ImportID* b);
static gint _import_id_compare_func_gcompare_data_func (gconstpointer a,
                                                 gconstpointer b,
                                                 gpointer self);
MediaSourceCollection* media_source_collection_construct (GType object_type,
                                                          const gchar* name,
                                                          GetSourceDatabaseKey source_key_func,
                                                          void* source_key_func_target);
DatabaseSourceCollection* database_source_collection_construct (GType object_type,
                                                                const gchar* name,
                                                                GetSourceDatabaseKey source_key_func,
                                                                void* source_key_func_target);
MediaSourceHoldingTank* media_source_collection_create_trashcan (MediaSourceCollection* self);
MediaSourceHoldingTank* media_source_collection_create_offline_bin (MediaSourceCollection* self);
GType photo_source_get_type (void) G_GNUC_CONST;
GType photo_get_type (void) G_GNUC_CONST;
GType library_photo_get_type (void) G_GNUC_CONST;
GType video_source_get_type (void) G_GNUC_CONST;
GType video_get_type (void) G_GNUC_CONST;
void media_source_collection_filter_media (GeeCollection* media,
                                           GeeCollection* photos,
                                           GeeCollection* videos);
gchar* data_object_to_string (DataObject* self);
void media_source_collection_count_media (GeeCollection* media,
                                          gint* photo_count,
                                          gint* video_count);
gboolean media_source_collection_has_photo (GeeCollection* media);
gboolean media_source_collection_has_video (GeeCollection* media);
static MediaSourceHoldingTank* media_source_collection_real_create_trashcan (MediaSourceCollection* self);
static MediaSourceHoldingTank* media_source_collection_real_create_offline_bin (MediaSourceCollection* self);
MediaMonitor* media_source_collection_create_media_monitor (MediaSourceCollection* self,
                                                            Workers* workers,
                                                            GCancellable* cancellable);
static MediaMonitor* media_source_collection_real_create_media_monitor (MediaSourceCollection* self,
                                                                 Workers* workers,
                                                                 GCancellable* cancellable);
gchar* media_source_collection_get_typename (MediaSourceCollection* self);
static gchar* media_source_collection_real_get_typename (MediaSourceCollection* self);
gboolean media_source_collection_is_file_recognized (MediaSourceCollection* self,
                                                     GFile* file);
static gboolean media_source_collection_real_is_file_recognized (MediaSourceCollection* self,
                                                          GFile* file);
MediaSourceHoldingTank* media_source_collection_get_trashcan (MediaSourceCollection* self);
MediaSourceHoldingTank* media_source_collection_get_offline_bin (MediaSourceCollection* self);
MediaSource* media_source_collection_fetch_by_numeric_id (MediaSourceCollection* self,
                                                          gint64 numeric_id);
static MediaSource* media_source_collection_real_fetch_by_numeric_id (MediaSourceCollection* self,
                                                               gint64 numeric_id);
void media_source_collection_notify_import_roll_altered (MediaSourceCollection* self);
static void media_source_collection_real_notify_import_roll_altered (MediaSourceCollection* self);
void media_source_collection_notify_flagged_contents_altered (MediaSourceCollection* self);
static void media_source_collection_real_notify_flagged_contents_altered (MediaSourceCollection* self);
void media_source_collection_notify_media_import_starting (MediaSourceCollection* self,
                                                           GeeCollection* media);
static void media_source_collection_real_notify_media_import_starting (MediaSourceCollection* self,
                                                                GeeCollection* media);
void media_source_collection_notify_media_import_completed (MediaSourceCollection* self,
                                                            GeeCollection* media);
static void media_source_collection_real_notify_media_import_completed (MediaSourceCollection* self,
                                                                 GeeCollection* media);
static void media_source_collection_real_items_altered (DataCollection* base,
                                                 GeeMap* items);
gboolean alteration_has_subject (Alteration* self,
                                 const gchar* subject);
gboolean source_holding_tank_contains (SourceHoldingTank* self,
                                       DataSource* source);
GType flaggable_get_type (void) G_GNUC_CONST;
gboolean flaggable_is_flagged (Flaggable* self);
void source_holding_tank_unlink_and_hold (SourceHoldingTank* self,
                                          GeeCollection* unlink);
static void media_source_collection_real_notify_contents_altered (DataCollection* base,
                                                           GeeIterable* added,
                                                           GeeIterable* removed);
static void media_source_collection_on_master_replaced (MediaSourceCollection* self,
                                                 MediaSource* media,
                                                 GFile* old_file,
                                                 GFile* new_file);
static void _media_source_collection_on_master_replaced_media_source_master_replaced (MediaSource* _sender,
                                                                               GFile* old_file,
                                                                               GFile* new_file,
                                                                               gpointer self);
gboolean import_id_is_valid (ImportID *self);
void data_collection_notify_contents_altered (DataCollection* self,
                                              GeeIterable* added,
                                              GeeIterable* removed);
MediaSource* media_source_collection_fetch_by_master_file (MediaSourceCollection* self,
                                                           GFile* file);
MediaSource* media_source_collection_fetch_by_source_id (MediaSourceCollection* self,
                                                         const gchar* source_id);
static MediaSource* media_source_collection_real_fetch_by_source_id (MediaSourceCollection* self,
                                                              const gchar* source_id);
gint64 parse_int64 (const gchar* str,
                    gint num_base);
GeeCollection* media_source_collection_get_event_source_ids (MediaSourceCollection* self,
                                                             EventID* event_id);
static GeeCollection* media_source_collection_real_get_event_source_ids (MediaSourceCollection* self,
                                                                  EventID* event_id);
GeeCollection* media_source_collection_get_trashcan_contents (MediaSourceCollection* self);
GeeCollection* source_holding_tank_get_all (SourceHoldingTank* self);
GeeCollection* media_source_collection_get_offline_bin_contents (MediaSourceCollection* self);
GeeCollection* media_source_collection_get_flagged (MediaSourceCollection* self);
GeeSortedSet* media_source_collection_get_import_roll_ids (MediaSourceCollection* self);
ImportID* media_source_collection_get_last_import_id (MediaSourceCollection* self);
GeeCollection* media_source_collection_get_import_roll (MediaSourceCollection* self,
                                                        ImportID* import_id);
void media_source_collection_add_many_to_trash (MediaSourceCollection* self,
                                                GeeCollection* sources);
void source_holding_tank_add_many (SourceHoldingTank* self,
                                   GeeCollection* many);
void media_source_collection_add_many_to_offline (MediaSourceCollection* self,
                                                  GeeCollection* sources);
gint media_source_collection_get_trashcan_count (MediaSourceCollection* self);
gint source_holding_tank_get_count (SourceHoldingTank* self);
void media_source_collection_import_many (MediaSourceCollection* self,
                                          GeeCollection* media);
static void media_source_collection_real_import_many (MediaSourceCollection* self,
                                               GeeCollection* media);
GeeCollection* data_collection_add_many (DataCollection* self,
                                         GeeCollection* objects,
                                         ProgressMonitor monitor,
                                         void* monitor_target);
void media_source_collection_postprocess_imported_media (MediaSourceCollection* self,
                                                         GeeCollection* media);
static void media_source_collection_real_postprocess_imported_media (MediaSourceCollection* self,
                                                              GeeCollection* media);
void media_source_collection_remove_from_app (MediaSourceCollection* self,
                                              GeeCollection* sources,
                                              gboolean delete_backing,
                                              ProgressMonitor monitor,
                                              void* monitor_target,
                                              GeeList* not_removed);
gpointer aggregate_progress_monitor_ref (gpointer instance);
void aggregate_progress_monitor_unref (gpointer instance);
GParamSpec* param_spec_aggregate_progress_monitor (const gchar* name,
                                                   const gchar* nick,
                                                   const gchar* blurb,
                                                   GType object_type,
                                                   GParamFlags flags);
void value_set_aggregate_progress_monitor (GValue* value,
                                           gpointer v_object);
void value_take_aggregate_progress_monitor (GValue* value,
                                            gpointer v_object);
gpointer value_get_aggregate_progress_monitor (const GValue* value);
GType aggregate_progress_monitor_get_type (void) G_GNUC_CONST;
AggregateProgressMonitor* aggregate_progress_monitor_new (guint64 grand_total,
                                                          ProgressMonitor wrapped_monitor,
                                                          void* wrapped_monitor_target);
AggregateProgressMonitor* aggregate_progress_monitor_construct (GType object_type,
                                                                guint64 grand_total,
                                                                ProgressMonitor wrapped_monitor,
                                                                void* wrapped_monitor_target);
gboolean aggregate_progress_monitor_monitor (AggregateProgressMonitor* self,
                                             guint64 count,
                                             guint64 total);
static gboolean _aggregate_progress_monitor_monitor_progress_monitor (guint64 current,
                                                               guint64 total,
                                                               gboolean do_event_loop,
                                                               gpointer self);
void source_holding_tank_destroy_orphans (SourceHoldingTank* self,
                                          GeeList* destroy,
                                          gboolean delete_backing,
                                          ProgressMonitor monitor,
                                          void* monitor_target,
                                          GeeList* not_removed);
gint source_collection_destroy_marked (SourceCollection* self,
                                       Marker* marker,
                                       gboolean delete_backing,
                                       ProgressMonitor monitor,
                                       void* monitor_target,
                                       GeeList* not_removed);
Marker* data_collection_mark_many (DataCollection* self,
                                   GeeCollection* objects);
GType tombstone_reason_get_type (void) G_GNUC_CONST;
void tombstone_entomb_many_sources (GeeCollection* sources,
                                    TombstoneReason reason,
                                    GError** error);
void app_window_database_error (GError* err);
void media_source_collection_delete_backing_files (MediaSourceCollection* self,
                                                   GeeCollection* sources,
                                                   ProgressMonitor monitor,
                                                   void* monitor_target,
                                                   GeeList* not_deleted);
TransactionController* media_source_collection_get_transaction_controller (MediaSourceCollection* self);
static void media_source_collection_real_media_import_starting (MediaSourceCollection* self,
                                                         GeeCollection* media);
static void media_source_collection_real_media_import_completed (MediaSourceCollection* self,
                                                          GeeCollection* media);
static void media_source_collection_real_master_file_replaced (MediaSourceCollection* self,
                                                        MediaSource* media,
                                                        GFile* old_file,
                                                        GFile* new_file);
static void g_cclosure_user_marshal_VOID__OBJECT_OBJECT_OBJECT (GClosure * closure,
                                                         GValue * return_value,
                                                         guint n_param_values,
                                                         const GValue * param_values,
                                                         gpointer invocation_hint,
                                                         gpointer marshal_data);
static void media_source_collection_real_trashcan_contents_altered (MediaSourceCollection* self,
                                                             GeeCollection* added,
                                                             GeeCollection* removed);
static void media_source_collection_real_import_roll_altered (MediaSourceCollection* self);
static void media_source_collection_real_offline_contents_altered (MediaSourceCollection* self,
                                                            GeeCollection* added,
                                                            GeeCollection* removed);
static void media_source_collection_real_flagged_contents_altered (MediaSourceCollection* self);
static void media_source_collection_finalize (DataCollection * obj);
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;
#define MEDIA_COLLECTION_REGISTRY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistryPrivate))
gpointer application_ref (gpointer instance);
void application_unref (gpointer instance);
GParamSpec* param_spec_application (const gchar* name,
                                    const gchar* nick,
                                    const gchar* blurb,
                                    GType object_type,
                                    GParamFlags flags);
void value_set_application (GValue* value,
                            gpointer v_object);
void value_take_application (GValue* value,
                             gpointer v_object);
gpointer value_get_application (const GValue* value);
GType application_get_type (void) G_GNUC_CONST;
Application* application_get_instance (void);
static void media_collection_registry_on_init_done (MediaCollectionRegistry* self);
static void _media_collection_registry_on_init_done_application_init_done (Application* _sender,
                                                                    gpointer self);
#define MEDIA_COLLECTION_REGISTRY_LIBRARY_MONITOR_START_DELAY_MSEC 1000
static MediaCollectionRegistry* media_collection_registry_new (void);
static MediaCollectionRegistry* media_collection_registry_construct (GType object_type);
GType directory_monitor_get_type (void) G_GNUC_CONST;
GType library_monitor_get_type (void) G_GNUC_CONST;
LibraryMonitor* library_monitor_new (GFile* root,
                                     gboolean recurse,
                                     gboolean monitoring);
LibraryMonitor* library_monitor_construct (GType object_type,
                                           GFile* root,
                                           gboolean recurse,
                                           gboolean monitoring);
gpointer library_monitor_pool_ref (gpointer instance);
void library_monitor_pool_unref (gpointer instance);
GParamSpec* param_spec_library_monitor_pool (const gchar* name,
                                             const gchar* nick,
                                             const gchar* blurb,
                                             GType object_type,
                                             GParamFlags flags);
void value_set_library_monitor_pool (GValue* value,
                                     gpointer v_object);
void value_take_library_monitor_pool (GValue* value,
                                      gpointer v_object);
gpointer value_get_library_monitor_pool (const GValue* value);
GType library_monitor_pool_get_type (void) G_GNUC_CONST;
LibraryMonitorPool* library_monitor_pool_get_instance (void);
void library_monitor_pool_replace (LibraryMonitorPool* self,
                                   LibraryMonitor* replacement,
                                   gint start_msec_delay);
void media_collection_registry_init (void);
GType configuration_facade_get_type (void) G_GNUC_CONST;
GType config_facade_get_type (void) G_GNUC_CONST;
ConfigFacade* config_facade_get_instance (void);
static void media_collection_registry_on_import_directory_changed (void);
static void _media_collection_registry_on_import_directory_changed_configuration_facade_import_directory_changed (ConfigurationFacade* _sender,
                                                                                                           gpointer self);
void media_collection_registry_terminate (void);
LibraryMonitor* library_monitor_pool_get_monitor (LibraryMonitorPool* self);
GFile* directory_monitor_get_root (DirectoryMonitor* self);
void library_files_select_copy_function (void);
MediaCollectionRegistry* media_collection_registry_get_instance (void);
gchar* media_collection_registry_get_typename_from_source_id (const gchar* source_id);
#define PHOTO_TYPENAME "thumb"
void media_collection_registry_register_collection (MediaCollectionRegistry* self,
                                                    MediaSourceCollection* collection);
MediaSourceCollection* media_collection_registry_get_collection (MediaCollectionRegistry* self,
                                                                 const gchar* typename);
GeeCollection* media_collection_registry_get_all (MediaCollectionRegistry* self);
void media_collection_registry_freeze_all (MediaCollectionRegistry* self);
void media_collection_registry_thaw_all (MediaCollectionRegistry* self);
void media_collection_registry_begin_transaction_on_all (MediaCollectionRegistry* self);
void media_collection_registry_commit_transaction_on_all (MediaCollectionRegistry* self);
MediaSource* media_collection_registry_fetch_media (MediaCollectionRegistry* self,
                                                    const gchar* source_id);
ImportID* media_collection_registry_get_last_import_id (MediaCollectionRegistry* self);
#define IMPORT_ID_INVALID ((gint64) 0)
void import_id_init (ImportID *self,
                     gint64 id);
GeeCollection* media_collection_registry_get_source_ids_for_event_id (MediaCollectionRegistry* self,
                                                                      EventID* event_id);
MediaSourceCollection* media_collection_registry_get_collection_for_file (MediaCollectionRegistry* self,
                                                                          GFile* file);
gboolean media_collection_registry_is_valid_source_id (MediaCollectionRegistry* self,
                                                       const gchar* source_id);
#define VIDEO_TYPENAME "video"
static void media_collection_registry_finalize (MediaCollectionRegistry * obj);
static void _vala_array_destroy (gpointer array,
                          gint array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gint array_length,
                       GDestroyNotify destroy_func);
static gint _vala_array_length (gpointer array);


BackingFileState*
backing_file_state_construct (GType object_type,
                              const gchar* filepath,
                              gint64 filesize,
                              time_t modification_time,
                              const gchar* md5)
{
	BackingFileState* self = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
#line 13 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (filepath != NULL, NULL);
#line 13 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (BackingFileState*) g_type_create_instance (object_type);
#line 14 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = g_strdup (filepath);
#line 14 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->filepath);
#line 14 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->filepath = _tmp0_;
#line 15 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->filesize = filesize;
#line 16 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->modification_time = modification_time;
#line 17 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = g_strdup (md5);
#line 17 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->md5);
#line 17 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->md5 = _tmp1_;
#line 13 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 1718 "MediaDataRepresentation.c"
}


BackingFileState*
backing_file_state_new (const gchar* filepath,
                        gint64 filesize,
                        time_t modification_time,
                        const gchar* md5)
{
#line 13 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return backing_file_state_construct (TYPE_BACKING_FILE_STATE, filepath, filesize, modification_time, md5);
#line 1730 "MediaDataRepresentation.c"
}


BackingFileState*
backing_file_state_construct_from_photo_row (GType object_type,
                                             BackingPhotoRow* photo_row,
                                             const gchar* md5)
{
	BackingFileState* self = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	gint64 _tmp2_;
	time_t _tmp3_;
	gchar* _tmp4_;
#line 20 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_BACKING_PHOTO_ROW (photo_row), NULL);
#line 20 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (BackingFileState*) g_type_create_instance (object_type);
#line 21 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = photo_row->filepath;
#line 21 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 21 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->filepath);
#line 21 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->filepath = _tmp1_;
#line 22 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = photo_row->filesize;
#line 22 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->filesize = _tmp2_;
#line 23 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = photo_row->timestamp;
#line 23 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->modification_time = _tmp3_;
#line 24 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = g_strdup (md5);
#line 24 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->md5);
#line 24 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->md5 = _tmp4_;
#line 20 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 1773 "MediaDataRepresentation.c"
}


BackingFileState*
backing_file_state_new_from_photo_row (BackingPhotoRow* photo_row,
                                       const gchar* md5)
{
#line 20 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return backing_file_state_construct_from_photo_row (TYPE_BACKING_FILE_STATE, photo_row, md5);
#line 1783 "MediaDataRepresentation.c"
}


GFile*
backing_file_state_get_file (BackingFileState* self)
{
	GFile* result = NULL;
	const gchar* _tmp0_;
	GFile* _tmp1_;
#line 27 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_BACKING_FILE_STATE (self), NULL);
#line 28 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->filepath;
#line 28 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = g_file_new_for_path (_tmp0_);
#line 28 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 28 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 1803 "MediaDataRepresentation.c"
}


static void
value_backing_file_state_init (GValue* value)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	value->data[0].v_pointer = NULL;
#line 1812 "MediaDataRepresentation.c"
}


static void
value_backing_file_state_free_value (GValue* value)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (value->data[0].v_pointer) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		backing_file_state_unref (value->data[0].v_pointer);
#line 1823 "MediaDataRepresentation.c"
	}
}


static void
value_backing_file_state_copy_value (const GValue* src_value,
                                     GValue* dest_value)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (src_value->data[0].v_pointer) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		dest_value->data[0].v_pointer = backing_file_state_ref (src_value->data[0].v_pointer);
#line 1836 "MediaDataRepresentation.c"
	} else {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		dest_value->data[0].v_pointer = NULL;
#line 1840 "MediaDataRepresentation.c"
	}
}


static gpointer
value_backing_file_state_peek_pointer (const GValue* value)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return value->data[0].v_pointer;
#line 1850 "MediaDataRepresentation.c"
}


static gchar*
value_backing_file_state_collect_value (GValue* value,
                                        guint n_collect_values,
                                        GTypeCValue* collect_values,
                                        guint collect_flags)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (collect_values[0].v_pointer) {
#line 1862 "MediaDataRepresentation.c"
		BackingFileState * object;
		object = collect_values[0].v_pointer;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (object->parent_instance.g_class == NULL) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 1869 "MediaDataRepresentation.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.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 1873 "MediaDataRepresentation.c"
		}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = backing_file_state_ref (object);
#line 1877 "MediaDataRepresentation.c"
	} else {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 1881 "MediaDataRepresentation.c"
	}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 1885 "MediaDataRepresentation.c"
}


static gchar*
value_backing_file_state_lcopy_value (const GValue* value,
                                      guint n_collect_values,
                                      GTypeCValue* collect_values,
                                      guint collect_flags)
{
	BackingFileState ** object_p;
	object_p = collect_values[0].v_pointer;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!object_p) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 1901 "MediaDataRepresentation.c"
	}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!value->data[0].v_pointer) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = NULL;
#line 1907 "MediaDataRepresentation.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = value->data[0].v_pointer;
#line 1911 "MediaDataRepresentation.c"
	} else {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = backing_file_state_ref (value->data[0].v_pointer);
#line 1915 "MediaDataRepresentation.c"
	}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 1919 "MediaDataRepresentation.c"
}


GParamSpec*
param_spec_backing_file_state (const gchar* name,
                               const gchar* nick,
                               const gchar* blurb,
                               GType object_type,
                               GParamFlags flags)
{
	ParamSpecBackingFileState* spec;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_BACKING_FILE_STATE), NULL);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return G_PARAM_SPEC (spec);
#line 1939 "MediaDataRepresentation.c"
}


gpointer
value_get_backing_file_state (const GValue* value)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BACKING_FILE_STATE), NULL);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return value->data[0].v_pointer;
#line 1950 "MediaDataRepresentation.c"
}


void
value_set_backing_file_state (GValue* value,
                              gpointer v_object)
{
	BackingFileState * old;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BACKING_FILE_STATE));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	old = value->data[0].v_pointer;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (v_object) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_BACKING_FILE_STATE));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = v_object;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		backing_file_state_ref (value->data[0].v_pointer);
#line 1973 "MediaDataRepresentation.c"
	} else {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 1977 "MediaDataRepresentation.c"
	}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (old) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		backing_file_state_unref (old);
#line 1983 "MediaDataRepresentation.c"
	}
}


void
value_take_backing_file_state (GValue* value,
                               gpointer v_object)
{
	BackingFileState * old;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BACKING_FILE_STATE));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	old = value->data[0].v_pointer;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (v_object) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_BACKING_FILE_STATE));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = v_object;
#line 2005 "MediaDataRepresentation.c"
	} else {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 2009 "MediaDataRepresentation.c"
	}
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (old) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		backing_file_state_unref (old);
#line 2015 "MediaDataRepresentation.c"
	}
}


static void
backing_file_state_class_init (BackingFileStateClass * klass)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	backing_file_state_parent_class = g_type_class_peek_parent (klass);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((BackingFileStateClass *) klass)->finalize = backing_file_state_finalize;
#line 2027 "MediaDataRepresentation.c"
}


static void
backing_file_state_instance_init (BackingFileState * self)
{
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->ref_count = 1;
#line 2036 "MediaDataRepresentation.c"
}


static void
backing_file_state_finalize (BackingFileState * obj)
{
	BackingFileState * self;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_BACKING_FILE_STATE, BackingFileState);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_handlers_destroy (self);
#line 8 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->filepath);
#line 11 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->md5);
#line 2052 "MediaDataRepresentation.c"
}


GType
backing_file_state_get_type (void)
{
	static volatile gsize backing_file_state_type_id__volatile = 0;
	if (g_once_init_enter (&backing_file_state_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_backing_file_state_init, value_backing_file_state_free_value, value_backing_file_state_copy_value, value_backing_file_state_peek_pointer, "p", value_backing_file_state_collect_value, "p", value_backing_file_state_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (BackingFileStateClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) backing_file_state_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BackingFileState), 0, (GInstanceInitFunc) backing_file_state_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 backing_file_state_type_id;
		backing_file_state_type_id = g_type_register_fundamental (g_type_fundamental_next (), "BackingFileState", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&backing_file_state_type_id__volatile, backing_file_state_type_id);
	}
	return backing_file_state_type_id__volatile;
}


gpointer
backing_file_state_ref (gpointer instance)
{
	BackingFileState * self;
	self = instance;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_atomic_int_inc (&self->ref_count);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return instance;
#line 2081 "MediaDataRepresentation.c"
}


void
backing_file_state_unref (gpointer instance)
{
	BackingFileState * self;
	self = instance;
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		BACKING_FILE_STATE_GET_CLASS (self)->finalize (self);
#line 7 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 2096 "MediaDataRepresentation.c"
	}
}


MediaSource*
media_source_construct (GType object_type,
                        gint64 object_id)
{
	MediaSource * self = NULL;
#line 40 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (MediaSource*) thumbnail_source_construct (object_type, object_id);
#line 39 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 2110 "MediaDataRepresentation.c"
}


inline guint64
media_source_internal_add_flags (guint64 flags,
                                 guint64 selector)
{
	guint64 result = 0ULL;
#line 44 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = flags | selector;
#line 44 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2123 "MediaDataRepresentation.c"
}


inline guint64
media_source_internal_remove_flags (guint64 flags,
                                    guint64 selector)
{
	guint64 result = 0ULL;
#line 48 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = flags & (~selector);
#line 48 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2136 "MediaDataRepresentation.c"
}


inline gboolean
media_source_internal_is_flag_set (guint64 flags,
                                   guint64 selector)
{
	gboolean result = FALSE;
#line 52 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = (flags & selector) != ((guint64) 0);
#line 52 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2149 "MediaDataRepresentation.c"
}


static void
media_source_real_notify_master_replaced (MediaSource* self,
                                          GFile* old_file,
                                          GFile* new_file)
{
#line 55 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (old_file));
#line 55 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (new_file));
#line 56 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_signals[MEDIA_SOURCE_MASTER_REPLACED_SIGNAL], 0, old_file, new_file);
#line 2164 "MediaDataRepresentation.c"
}


void
media_source_notify_master_replaced (MediaSource* self,
                                     GFile* old_file,
                                     GFile* new_file)
{
#line 55 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 55 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->notify_master_replaced (self, old_file, new_file);
#line 2177 "MediaDataRepresentation.c"
}


static gpointer
_alteration_ref0 (gpointer self)
{
#line 60 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? alteration_ref (self) : NULL;
#line 2186 "MediaDataRepresentation.c"
}


static void
media_source_real_notify_altered (DataObject* base,
                                  Alteration* alteration)
{
	MediaSource * self;
	Alteration* local = NULL;
	Alteration* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	Alteration* _tmp3_;
	Alteration* _tmp10_;
#line 59 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE, MediaSource);
#line 59 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_ALTERATION (alteration));
#line 60 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = _alteration_ref0 (alteration);
#line 60 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	local = _tmp0_;
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = local;
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (alteration_has_detail (_tmp3_, "metadata", "name")) {
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = TRUE;
#line 2215 "MediaDataRepresentation.c"
	} else {
		Alteration* _tmp4_;
#line 63 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = local;
#line 63 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = alteration_has_detail (_tmp4_, "metadata", "comment");
#line 2222 "MediaDataRepresentation.c"
	}
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp2_) {
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = TRUE;
#line 2228 "MediaDataRepresentation.c"
	} else {
		Alteration* _tmp5_;
#line 64 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = local;
#line 64 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = alteration_has_detail (_tmp5_, "backing", "master");
#line 2235 "MediaDataRepresentation.c"
	}
#line 62 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp1_) {
#line 2239 "MediaDataRepresentation.c"
		Alteration* _tmp6_;
		Alteration* _tmp7_;
		Alteration* _tmp8_;
		Alteration* _tmp9_;
#line 65 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_source_update_indexable_keywords (self);
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp6_ = local;
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp7_ = alteration_new ("indexable", "keywords");
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp8_ = _tmp7_;
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp9_ = alteration_compress (_tmp6_, _tmp8_);
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_alteration_unref0 (local);
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		local = _tmp9_;
#line 66 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_alteration_unref0 (_tmp8_);
#line 2260 "MediaDataRepresentation.c"
	}
#line 69 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp10_ = local;
#line 69 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	DATA_OBJECT_CLASS (media_source_parent_class)->notify_altered (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_THUMBNAIL_SOURCE, ThumbnailSource), TYPE_DATA_OBJECT, DataObject), _tmp10_);
#line 59 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_alteration_unref0 (local);
#line 2268 "MediaDataRepresentation.c"
}


static void
media_source_real_notify_membership_changed (DataObject* base,
                                             DataCollection* collection)
{
	MediaSource * self;
	gboolean _tmp0_ = FALSE;
#line 74 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE, MediaSource);
#line 74 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((collection == NULL) || IS_DATA_COLLECTION (collection));
#line 75 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (collection != NULL) {
#line 2284 "MediaDataRepresentation.c"
		const gchar* _tmp1_;
#line 75 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = self->priv->indexable_keywords;
#line 75 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = _tmp1_ == NULL;
#line 2290 "MediaDataRepresentation.c"
	} else {
#line 75 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = FALSE;
#line 2294 "MediaDataRepresentation.c"
	}
#line 75 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp0_) {
#line 78 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_source_update_indexable_keywords (self);
#line 2300 "MediaDataRepresentation.c"
	}
#line 81 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	DATA_OBJECT_CLASS (media_source_parent_class)->notify_membership_changed (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_THUMBNAIL_SOURCE, ThumbnailSource), TYPE_DATA_OBJECT, DataObject), collection);
#line 2304 "MediaDataRepresentation.c"
}


static void
media_source_update_indexable_keywords (MediaSource* self)
{
	gchar** indexables = NULL;
	gchar** _tmp0_;
	gint indexables_length1;
	gint _indexables_size_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
#line 84 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 85 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = g_new0 (gchar*, 3 + 1);
#line 85 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables = _tmp0_;
#line 85 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables_length1 = 3;
#line 85 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_indexables_size_ = indexables_length1;
#line 86 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = media_source_get_title (self);
#line 86 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (indexables[0]);
#line 86 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables[0] = _tmp1_;
#line 86 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = indexables[0];
#line 87 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = media_source_get_basename (self);
#line 87 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (indexables[1]);
#line 87 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables[1] = _tmp3_;
#line 87 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = indexables[1];
#line 88 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = media_source_get_comment (self);
#line 88 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (indexables[2]);
#line 88 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables[2] = _tmp5_;
#line 88 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = indexables[2];
#line 90 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp7_ = indexable_prepare_indexable_strings (indexables, indexables_length1);
#line 90 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->priv->indexable_keywords);
#line 90 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->indexable_keywords = _tmp7_;
#line 84 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	indexables = (_vala_array_free (indexables, indexables_length1, (GDestroyNotify) g_free), NULL);
#line 2364 "MediaDataRepresentation.c"
}


static const gchar*
media_source_real_get_indexable_keywords (Indexable* base)
{
	MediaSource * self;
	const gchar* result = NULL;
	const gchar* _tmp0_;
#line 93 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE, MediaSource);
#line 94 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->indexable_keywords;
#line 94 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp0_;
#line 94 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2382 "MediaDataRepresentation.c"
}


static gboolean
media_source_real_set_event_id (MediaSource* self,
                                EventID* id)
{
	gboolean _tmp0_ = FALSE;
#line 97 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_set_event_id'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 97 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 2395 "MediaDataRepresentation.c"
}


gboolean
media_source_set_event_id (MediaSource* self,
                           EventID* id)
{
#line 97 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 97 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->set_event_id (self, id);
#line 2407 "MediaDataRepresentation.c"
}


static gpointer
_g_object_ref0 (gpointer self)
{
#line 114 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? g_object_ref (self) : NULL;
#line 2416 "MediaDataRepresentation.c"
}


gboolean
media_source_delete_original_file (MediaSource* self)
{
	gboolean result = FALSE;
	gboolean ret = FALSE;
	GFile* file = NULL;
	GFile* _tmp0_;
	GFile* _tmp9_;
	GFile* _tmp10_;
	GFile* _tmp11_;
	gboolean _tmp12_;
	GError * _inner_error_ = NULL;
#line 99 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 100 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	ret = FALSE;
#line 101 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_get_master_file (self);
#line 101 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	file = _tmp0_;
#line 2440 "MediaDataRepresentation.c"
	{
		gboolean _tmp1_ = FALSE;
		GFile* _tmp2_;
#line 104 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = file;
#line 104 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = g_file_trash (_tmp2_, NULL, &_inner_error_);
#line 104 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2450 "MediaDataRepresentation.c"
			goto __catch571_g_error;
		}
#line 104 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		ret = _tmp1_;
#line 2455 "MediaDataRepresentation.c"
	}
	goto __finally571;
	__catch571_g_error:
	{
		GError* err = NULL;
		GFile* _tmp3_;
		gchar* _tmp4_;
		gchar* _tmp5_;
		GError* _tmp6_;
		const gchar* _tmp7_;
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		err = _inner_error_;
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_inner_error_ = NULL;
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = file;
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = g_file_get_path (_tmp3_);
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = _tmp4_;
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp6_ = err;
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp7_ = _tmp6_->message;
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_message ("MediaDataRepresentation.vala:108: Unable to move original photo %s to " \
"trash: %s", _tmp5_, _tmp7_);
#line 108 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_free0 (_tmp5_);
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_error_free0 (err);
#line 2486 "MediaDataRepresentation.c"
	}
	__finally571:
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2491 "MediaDataRepresentation.c"
		gboolean _tmp8_ = FALSE;
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (file);
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_clear_error (&_inner_error_);
#line 103 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return _tmp8_;
#line 2501 "MediaDataRepresentation.c"
	}
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp9_ = file;
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp10_ = app_dirs_get_import_dir ();
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp11_ = _tmp10_;
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp12_ = g_file_has_prefix (_tmp9_, _tmp11_);
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp11_);
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp12_) {
#line 2515 "MediaDataRepresentation.c"
		GFile* parent = NULL;
		GFile* _tmp13_;
		GFile* _tmp14_;
#line 114 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp13_ = file;
#line 114 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp14_ = _g_object_ref0 (_tmp13_);
#line 114 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		parent = _tmp14_;
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 2527 "MediaDataRepresentation.c"
			GFile* _tmp15_;
			GFile* _tmp16_;
			GFile* _tmp17_;
			gboolean _tmp18_;
			GFile* _tmp19_;
			GFile* _tmp20_;
			gboolean _tmp21_ = FALSE;
			GFile* _tmp22_;
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp15_ = parent;
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp16_ = app_dirs_get_import_dir ();
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp17_ = _tmp16_;
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp18_ = !(!g_file_equal (_tmp15_, _tmp17_));
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_tmp17_);
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp18_) {
#line 115 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 2550 "MediaDataRepresentation.c"
			}
#line 116 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp19_ = parent;
#line 116 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp20_ = g_file_get_parent (_tmp19_);
#line 116 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (parent);
#line 116 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			parent = _tmp20_;
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp22_ = parent;
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp22_ == NULL) {
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp21_ = TRUE;
#line 2566 "MediaDataRepresentation.c"
			} else {
				GFile* _tmp23_;
				GFile* _tmp24_;
				GFile* _tmp25_;
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp23_ = parent;
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp24_ = app_dirs_get_import_dir ();
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp25_ = _tmp24_;
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp21_ = g_file_equal (_tmp23_, _tmp25_);
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp25_);
#line 2581 "MediaDataRepresentation.c"
			}
#line 117 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp21_) {
#line 118 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 2587 "MediaDataRepresentation.c"
			}
			{
				gboolean _tmp26_ = FALSE;
				GFile* _tmp27_;
#line 121 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp27_ = parent;
#line 121 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp26_ = query_is_directory_empty (_tmp27_, &_inner_error_);
#line 121 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2598 "MediaDataRepresentation.c"
					goto __catch572_g_error;
				}
#line 121 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (!_tmp26_) {
#line 122 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					break;
#line 2605 "MediaDataRepresentation.c"
				}
			}
			goto __finally572;
			__catch572_g_error:
			{
				GError* err = NULL;
				GFile* _tmp28_;
				gchar* _tmp29_;
				gchar* _tmp30_;
				GError* _tmp31_;
				const gchar* _tmp32_;
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				err = _inner_error_;
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_inner_error_ = NULL;
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp28_ = parent;
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp29_ = g_file_get_path (_tmp28_);
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp30_ = _tmp29_;
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp31_ = err;
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp32_ = _tmp31_->message;
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_warning ("MediaDataRepresentation.vala:124: Unable to query file info for %s: %s", _tmp30_, _tmp32_);
#line 124 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_free0 (_tmp30_);
#line 126 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_error_free0 (err);
#line 126 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 2639 "MediaDataRepresentation.c"
			}
			__finally572:
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2644 "MediaDataRepresentation.c"
				gboolean _tmp33_ = FALSE;
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (parent);
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (file);
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_clear_error (&_inner_error_);
#line 120 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return _tmp33_;
#line 2656 "MediaDataRepresentation.c"
			}
			{
				GFile* _tmp34_;
				GFile* _tmp35_;
				gchar* _tmp36_;
				gchar* _tmp37_;
#line 130 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp34_ = parent;
#line 130 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_file_delete (_tmp34_, NULL, &_inner_error_);
#line 130 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2669 "MediaDataRepresentation.c"
					goto __catch573_g_error;
				}
#line 131 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp35_ = parent;
#line 131 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp36_ = g_file_get_path (_tmp35_);
#line 131 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp37_ = _tmp36_;
#line 131 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_debug ("MediaDataRepresentation.vala:131: Deleted empty directory %s", _tmp37_);
#line 131 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_free0 (_tmp37_);
#line 2682 "MediaDataRepresentation.c"
			}
			goto __finally573;
			__catch573_g_error:
			{
				GError* err = NULL;
				GFile* _tmp38_;
				gchar* _tmp39_;
				gchar* _tmp40_;
				GError* _tmp41_;
				const gchar* _tmp42_;
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				err = _inner_error_;
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_inner_error_ = NULL;
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp38_ = parent;
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp39_ = g_file_get_path (_tmp38_);
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp40_ = _tmp39_;
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp41_ = err;
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp42_ = _tmp41_->message;
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_message ("MediaDataRepresentation.vala:134: Unable to delete empty directory %s:" \
" %s", _tmp40_, _tmp42_);
#line 134 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_free0 (_tmp40_);
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_error_free0 (err);
#line 2713 "MediaDataRepresentation.c"
			}
			__finally573:
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2718 "MediaDataRepresentation.c"
				gboolean _tmp43_ = FALSE;
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (parent);
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (file);
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_clear_error (&_inner_error_);
#line 129 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return _tmp43_;
#line 2730 "MediaDataRepresentation.c"
			}
		}
#line 113 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (parent);
#line 2735 "MediaDataRepresentation.c"
	}
#line 140 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = ret;
#line 140 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (file);
#line 140 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2743 "MediaDataRepresentation.c"
}


static gchar*
media_source_real_get_name (DataObject* base)
{
	MediaSource * self;
	gchar* result = NULL;
	gchar* title = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_;
#line 143 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE, MediaSource);
#line 144 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_get_title (self);
#line 144 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	title = _tmp0_;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = title;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (is_string_empty (_tmp2_)) {
#line 2766 "MediaDataRepresentation.c"
		gchar* _tmp3_;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = media_source_get_basename (self);
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_free0 (_tmp1_);
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp3_;
#line 2774 "MediaDataRepresentation.c"
	} else {
		const gchar* _tmp4_;
		gchar* _tmp5_;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = title;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = g_strdup (_tmp4_);
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_free0 (_tmp1_);
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp5_;
#line 2786 "MediaDataRepresentation.c"
	}
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (title);
#line 146 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2794 "MediaDataRepresentation.c"
}


static gchar*
media_source_real_get_basename (MediaSource* self)
{
	gchar* result = NULL;
	GFile* _tmp0_;
	GFile* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_get_file (self);
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = g_file_get_basename (_tmp1_);
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = _tmp2_;
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp1_);
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp3_;
#line 150 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 2820 "MediaDataRepresentation.c"
}


gchar*
media_source_get_basename (MediaSource* self)
{
#line 149 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 149 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_basename (self);
#line 2831 "MediaDataRepresentation.c"
}


static GFile*
media_source_real_get_file (MediaSource* self)
{
#line 153 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_file'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 153 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 2842 "MediaDataRepresentation.c"
}


GFile*
media_source_get_file (MediaSource* self)
{
#line 153 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 153 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_file (self);
#line 2853 "MediaDataRepresentation.c"
}


static GFile*
media_source_real_get_master_file (MediaSource* self)
{
#line 154 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_master_file'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 154 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 2864 "MediaDataRepresentation.c"
}


GFile*
media_source_get_master_file (MediaSource* self)
{
#line 154 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 154 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_master_file (self);
#line 2875 "MediaDataRepresentation.c"
}


static guint64
media_source_real_get_master_filesize (MediaSource* self)
{
	guint64 _tmp0_ = 0ULL;
#line 155 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_master_filesize'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 155 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 2887 "MediaDataRepresentation.c"
}


guint64
media_source_get_master_filesize (MediaSource* self)
{
#line 155 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), 0ULL);
#line 155 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_master_filesize (self);
#line 2898 "MediaDataRepresentation.c"
}


static guint64
media_source_real_get_filesize (MediaSource* self)
{
	guint64 _tmp0_ = 0ULL;
#line 156 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_filesize'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 156 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 2910 "MediaDataRepresentation.c"
}


guint64
media_source_get_filesize (MediaSource* self)
{
#line 156 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), 0ULL);
#line 156 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_filesize (self);
#line 2921 "MediaDataRepresentation.c"
}


static time_t
media_source_real_get_timestamp (MediaSource* self)
{
	time_t _tmp0_ = 0;
#line 157 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_timestamp'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 157 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 2933 "MediaDataRepresentation.c"
}


time_t
media_source_get_timestamp (MediaSource* self)
{
#line 157 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), 0);
#line 157 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_timestamp (self);
#line 2944 "MediaDataRepresentation.c"
}


static BackingFileState**
media_source_real_get_backing_files_state (MediaSource* self,
                                           int* result_length1)
{
#line 160 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_backing_files_state'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 160 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 2956 "MediaDataRepresentation.c"
}


BackingFileState**
media_source_get_backing_files_state (MediaSource* self,
                                      int* result_length1)
{
#line 160 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 160 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_backing_files_state (self, result_length1);
#line 2968 "MediaDataRepresentation.c"
}


static gchar*
media_source_real_get_title (MediaSource* self)
{
#line 162 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_title'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 162 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 2979 "MediaDataRepresentation.c"
}


gchar*
media_source_get_title (MediaSource* self)
{
#line 162 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 162 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_title (self);
#line 2990 "MediaDataRepresentation.c"
}


static gchar*
media_source_real_get_comment (MediaSource* self)
{
#line 163 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_comment'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 163 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 3001 "MediaDataRepresentation.c"
}


gchar*
media_source_get_comment (MediaSource* self)
{
#line 163 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 163 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_comment (self);
#line 3012 "MediaDataRepresentation.c"
}


static void
media_source_real_set_title (MediaSource* self,
                             const gchar* title)
{
#line 164 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_set_title'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 164 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3024 "MediaDataRepresentation.c"
}


void
media_source_set_title (MediaSource* self,
                        const gchar* title)
{
#line 164 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 164 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->set_title (self, title);
#line 3036 "MediaDataRepresentation.c"
}


static gboolean
media_source_real_set_comment (MediaSource* self,
                               const gchar* comment)
{
	gboolean _tmp0_ = FALSE;
#line 165 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_set_comment'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 165 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 3049 "MediaDataRepresentation.c"
}


gboolean
media_source_set_comment (MediaSource* self,
                          const gchar* comment)
{
#line 165 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 165 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->set_comment (self, comment);
#line 3061 "MediaDataRepresentation.c"
}


gchar*
media_source_prep_title (const gchar* title)
{
	gchar* result = NULL;
	gchar* _tmp0_;
#line 168 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = prepare_input_text (title, PREPARE_INPUT_TEXT_OPTIONS_DEFAULT & (~PREPARE_INPUT_TEXT_OPTIONS_EMPTY_IS_NULL), DEFAULT_USER_TEXT_INPUT_LENGTH);
#line 168 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp0_;
#line 168 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 3076 "MediaDataRepresentation.c"
}


gchar*
media_source_prep_comment (const gchar* comment)
{
	gchar* result = NULL;
	gchar* _tmp0_;
#line 173 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = prepare_input_text (comment, (PREPARE_INPUT_TEXT_OPTIONS_DEFAULT & (~PREPARE_INPUT_TEXT_OPTIONS_STRIP_CRLF)) & (~PREPARE_INPUT_TEXT_OPTIONS_EMPTY_IS_NULL), -1);
#line 173 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp0_;
#line 173 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 3091 "MediaDataRepresentation.c"
}


static Rating
media_source_real_get_rating (MediaSource* self)
{
#line 177 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_rating'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 177 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return 0;
#line 3102 "MediaDataRepresentation.c"
}


Rating
media_source_get_rating (MediaSource* self)
{
#line 177 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), 0);
#line 177 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_rating (self);
#line 3113 "MediaDataRepresentation.c"
}


static void
media_source_real_set_rating (MediaSource* self,
                              Rating rating)
{
#line 178 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_set_rating'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 178 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3125 "MediaDataRepresentation.c"
}


void
media_source_set_rating (MediaSource* self,
                         Rating rating)
{
#line 178 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 178 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->set_rating (self, rating);
#line 3137 "MediaDataRepresentation.c"
}


static void
media_source_real_increase_rating (MediaSource* self)
{
#line 179 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_increase_rating'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 179 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3148 "MediaDataRepresentation.c"
}


void
media_source_increase_rating (MediaSource* self)
{
#line 179 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 179 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->increase_rating (self);
#line 3159 "MediaDataRepresentation.c"
}


static void
media_source_real_decrease_rating (MediaSource* self)
{
#line 180 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_decrease_rating'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 180 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3170 "MediaDataRepresentation.c"
}


void
media_source_decrease_rating (MediaSource* self)
{
#line 180 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 180 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->decrease_rating (self);
#line 3181 "MediaDataRepresentation.c"
}


static void
media_source_real_get_dimensions (MediaSource* self,
                                  PhotoException disallowed_steps,
                                  Dimensions* result)
{
#line 182 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_dimensions'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 182 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3194 "MediaDataRepresentation.c"
}


void
media_source_get_dimensions (MediaSource* self,
                             PhotoException disallowed_steps,
                             Dimensions* result)
{
#line 182 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 182 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->get_dimensions (self, disallowed_steps, result);
#line 3207 "MediaDataRepresentation.c"
}


static GdkPixbuf*
media_source_real_get_preview_pixbuf (MediaSource* self,
                                      Scaling* scaling,
                                      GError** error)
{
#line 190 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_preview_pixbuf'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 190 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 3220 "MediaDataRepresentation.c"
}


GdkPixbuf*
media_source_get_preview_pixbuf (MediaSource* self,
                                 Scaling* scaling,
                                 GError** error)
{
#line 190 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 190 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_preview_pixbuf (self, scaling, error);
#line 3233 "MediaDataRepresentation.c"
}


static gboolean
media_source_real_is_trashed (MediaSource* self)
{
	gboolean _tmp0_ = FALSE;
#line 192 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_is_trashed'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 192 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 3245 "MediaDataRepresentation.c"
}


gboolean
media_source_is_trashed (MediaSource* self)
{
#line 192 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 192 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->is_trashed (self);
#line 3256 "MediaDataRepresentation.c"
}


static void
media_source_real_trash (MediaSource* self)
{
#line 193 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_trash'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 193 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3267 "MediaDataRepresentation.c"
}


void
media_source_trash (MediaSource* self)
{
#line 193 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 193 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->trash (self);
#line 3278 "MediaDataRepresentation.c"
}


static void
media_source_real_untrash (MediaSource* self)
{
#line 194 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_untrash'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 194 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3289 "MediaDataRepresentation.c"
}


void
media_source_untrash (MediaSource* self)
{
#line 194 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 194 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->untrash (self);
#line 3300 "MediaDataRepresentation.c"
}


static gboolean
media_source_real_is_offline (MediaSource* self)
{
	gboolean _tmp0_ = FALSE;
#line 196 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_is_offline'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 196 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 3312 "MediaDataRepresentation.c"
}


gboolean
media_source_is_offline (MediaSource* self)
{
#line 196 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 196 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->is_offline (self);
#line 3323 "MediaDataRepresentation.c"
}


static void
media_source_real_mark_offline (MediaSource* self)
{
#line 197 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_mark_offline'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 197 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3334 "MediaDataRepresentation.c"
}


void
media_source_mark_offline (MediaSource* self)
{
#line 197 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 197 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->mark_offline (self);
#line 3345 "MediaDataRepresentation.c"
}


static void
media_source_real_mark_online (MediaSource* self)
{
#line 198 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_mark_online'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 198 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3356 "MediaDataRepresentation.c"
}


void
media_source_mark_online (MediaSource* self)
{
#line 198 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 198 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->mark_online (self);
#line 3367 "MediaDataRepresentation.c"
}


static gchar*
media_source_real_get_master_md5 (MediaSource* self)
{
#line 200 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_master_md5'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 200 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 3378 "MediaDataRepresentation.c"
}


gchar*
media_source_get_master_md5 (MediaSource* self)
{
#line 200 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 200 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_master_md5 (self);
#line 3389 "MediaDataRepresentation.c"
}


static void
media_source_real_get_event_id (MediaSource* self,
                                EventID* result)
{
#line 204 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_event_id'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 204 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3401 "MediaDataRepresentation.c"
}


void
media_source_get_event_id (MediaSource* self,
                           EventID* result)
{
#line 204 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 204 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->get_event_id (self, result);
#line 3413 "MediaDataRepresentation.c"
}


Event*
media_source_get_event (MediaSource* self)
{
	Event* result = NULL;
	Event* _tmp0_;
	EventID event_id = {0};
	EventID _tmp3_ = {0};
	EventSourceCollection* _tmp4_;
	EventID _tmp5_;
	Event* _tmp6_;
	Event* _tmp7_;
	Event* _tmp8_;
#line 206 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), NULL);
#line 207 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->event;
#line 207 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp0_ != NULL) {
#line 3435 "MediaDataRepresentation.c"
		Event* _tmp1_;
		Event* _tmp2_;
#line 208 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = self->priv->event;
#line 208 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = _g_object_ref0 (_tmp1_);
#line 208 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = _tmp2_;
#line 208 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 3446 "MediaDataRepresentation.c"
	}
#line 210 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_get_event_id (self, &_tmp3_);
#line 210 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	event_id = _tmp3_;
#line 211 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!event_id_is_valid (&event_id)) {
#line 212 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = NULL;
#line 212 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 3458 "MediaDataRepresentation.c"
	}
#line 214 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = event_global;
#line 214 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = event_id;
#line 214 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = event_source_collection_fetch (_tmp4_, &_tmp5_);
#line 214 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->event);
#line 214 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->event = _tmp6_;
#line 216 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp7_ = self->priv->event;
#line 216 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp8_ = _g_object_ref0 (_tmp7_);
#line 216 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp8_;
#line 216 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 3478 "MediaDataRepresentation.c"
}


gboolean
media_source_set_event (MediaSource* self,
                        Event* new_event)
{
	gboolean result = FALSE;
	EventID _tmp0_ = {0};
	EventID event_id = {0};
	EventID _tmp2_ = {0};
	gint64 _tmp3_;
	EventID _tmp4_;
	gint64 _tmp5_;
	gboolean committed = FALSE;
	EventID _tmp6_;
	gboolean _tmp7_;
#line 219 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), FALSE);
#line 219 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail ((new_event == NULL) || IS_EVENT (new_event), FALSE);
#line 220 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (new_event != NULL) {
#line 3502 "MediaDataRepresentation.c"
		EventID _tmp1_ = {0};
#line 220 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		event_get_event_id (new_event, &_tmp1_);
#line 220 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = _tmp1_;
#line 3508 "MediaDataRepresentation.c"
	} else {
#line 220 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		event_id_init (&_tmp0_, EVENT_ID_INVALID);
#line 3512 "MediaDataRepresentation.c"
	}
#line 220 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	event_id = _tmp0_;
#line 221 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_get_event_id (self, &_tmp2_);
#line 221 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = _tmp2_.id;
#line 221 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = event_id;
#line 221 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = _tmp4_.id;
#line 221 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp3_ == _tmp5_) {
#line 222 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = TRUE;
#line 222 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 3530 "MediaDataRepresentation.c"
	}
#line 224 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = event_id;
#line 224 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	committed = media_source_set_event_id (self, &_tmp6_);
#line 225 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp7_ = committed;
#line 225 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp7_) {
#line 3540 "MediaDataRepresentation.c"
		Event* _tmp8_;
		Event* _tmp10_;
		Alteration* _tmp11_;
		Alteration* _tmp12_;
#line 226 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp8_ = self->priv->event;
#line 226 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (_tmp8_ != NULL) {
#line 3549 "MediaDataRepresentation.c"
			Event* _tmp9_;
#line 227 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = self->priv->event;
#line 227 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			event_detach (_tmp9_, self);
#line 3555 "MediaDataRepresentation.c"
		}
#line 229 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (new_event != NULL) {
#line 230 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			event_attach (new_event, self);
#line 3561 "MediaDataRepresentation.c"
		}
#line 232 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp10_ = _g_object_ref0 (new_event);
#line 232 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (self->priv->event);
#line 232 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		self->priv->event = _tmp10_;
#line 234 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp11_ = alteration_new ("metadata", "event");
#line 234 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp12_ = _tmp11_;
#line 234 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data_object_notify_altered (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATA_OBJECT, DataObject), _tmp12_);
#line 234 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_alteration_unref0 (_tmp12_);
#line 3577 "MediaDataRepresentation.c"
	}
#line 237 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = committed;
#line 237 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 3583 "MediaDataRepresentation.c"
}


void
media_source_set_many_to_event (GeeCollection* media_sources,
                                Event* event,
                                TransactionController* controller,
                                GError** error)
{
	EventID _tmp0_ = {0};
	EventID event_id = {0};
	Alteration* alteration = NULL;
	Alteration* _tmp15_;
#line 240 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media_sources));
#line 240 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((event == NULL) || IS_EVENT (event));
#line 240 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_TRANSACTION_CONTROLLER (controller));
#line 242 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (event != NULL) {
#line 3605 "MediaDataRepresentation.c"
		EventID _tmp1_ = {0};
#line 242 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		event_get_event_id (event, &_tmp1_);
#line 242 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = _tmp1_;
#line 3611 "MediaDataRepresentation.c"
	} else {
#line 242 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		event_id_init (&_tmp0_, EVENT_ID_INVALID);
#line 3615 "MediaDataRepresentation.c"
	}
#line 242 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	event_id = _tmp0_;
#line 244 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	transaction_controller_begin (controller);
#line 3621 "MediaDataRepresentation.c"
	{
		GeeIterator* _media_it = NULL;
		GeeIterator* _tmp2_;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (media_sources, GEE_TYPE_ITERABLE, GeeIterable));
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_media_it = _tmp2_;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 3631 "MediaDataRepresentation.c"
			GeeIterator* _tmp3_;
			MediaSource* media = NULL;
			GeeIterator* _tmp4_;
			gpointer _tmp5_;
			Event* old_event = NULL;
			MediaSource* _tmp6_;
			Event* _tmp7_;
			Event* _tmp8_;
			MediaSource* _tmp11_;
			EventID _tmp12_;
			MediaSource* _tmp13_;
			Event* _tmp14_;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp3_ = _media_it;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp3_)) {
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 3650 "MediaDataRepresentation.c"
			}
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _media_it;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = gee_iterator_get (_tmp4_);
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			media = (MediaSource*) _tmp5_;
#line 247 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = media;
#line 247 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = media_source_get_event (_tmp6_);
#line 247 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			old_event = _tmp7_;
#line 248 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = old_event;
#line 248 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp8_ != NULL) {
#line 3668 "MediaDataRepresentation.c"
				Event* _tmp9_;
				MediaSource* _tmp10_;
#line 249 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp9_ = old_event;
#line 249 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp10_ = media;
#line 249 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				event_detach (_tmp9_, _tmp10_);
#line 3677 "MediaDataRepresentation.c"
			}
#line 251 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp11_ = media;
#line 251 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = event_id;
#line 251 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			media_source_set_event_id (_tmp11_, &_tmp12_);
#line 252 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp13_ = media;
#line 252 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp14_ = _g_object_ref0 (event);
#line 252 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_tmp13_->priv->event);
#line 252 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp13_->priv->event = _tmp14_;
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (old_event);
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (media);
#line 3697 "MediaDataRepresentation.c"
		}
#line 246 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_media_it);
#line 3701 "MediaDataRepresentation.c"
	}
#line 255 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (event != NULL) {
#line 256 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		event_attach_many (event, media_sources);
#line 3707 "MediaDataRepresentation.c"
	}
#line 258 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp15_ = alteration_new ("metadata", "event");
#line 258 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	alteration = _tmp15_;
#line 3713 "MediaDataRepresentation.c"
	{
		GeeIterator* _media_it = NULL;
		GeeIterator* _tmp16_;
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp16_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (media_sources, GEE_TYPE_ITERABLE, GeeIterable));
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_media_it = _tmp16_;
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 3723 "MediaDataRepresentation.c"
			GeeIterator* _tmp17_;
			MediaSource* media = NULL;
			GeeIterator* _tmp18_;
			gpointer _tmp19_;
			MediaSource* _tmp20_;
			Alteration* _tmp21_;
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp17_ = _media_it;
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp17_)) {
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 3736 "MediaDataRepresentation.c"
			}
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp18_ = _media_it;
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp19_ = gee_iterator_get (_tmp18_);
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			media = (MediaSource*) _tmp19_;
#line 260 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp20_ = media;
#line 260 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp21_ = alteration;
#line 260 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			data_object_notify_altered (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, TYPE_DATA_OBJECT, DataObject), _tmp21_);
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (media);
#line 3752 "MediaDataRepresentation.c"
		}
#line 259 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_media_it);
#line 3756 "MediaDataRepresentation.c"
	}
#line 262 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	transaction_controller_commit (controller);
#line 240 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_alteration_unref0 (alteration);
#line 3762 "MediaDataRepresentation.c"
}


static time_t
media_source_real_get_exposure_time (MediaSource* self)
{
	time_t _tmp0_ = 0;
#line 265 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_exposure_time'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 265 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 3774 "MediaDataRepresentation.c"
}


time_t
media_source_get_exposure_time (MediaSource* self)
{
#line 265 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE (self), 0);
#line 265 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_GET_CLASS (self)->get_exposure_time (self);
#line 3785 "MediaDataRepresentation.c"
}


static void
media_source_real_get_import_id (MediaSource* self,
                                 ImportID* result)
{
#line 267 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_get_import_id'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 267 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return;
#line 3797 "MediaDataRepresentation.c"
}


void
media_source_get_import_id (MediaSource* self,
                            ImportID* result)
{
#line 267 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (self));
#line 267 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_GET_CLASS (self)->get_import_id (self, result);
#line 3809 "MediaDataRepresentation.c"
}


static void
media_source_real_master_replaced (MediaSource* self,
                                   GFile* old_file,
                                   GFile* new_file)
{
#line 33 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (old_file));
#line 33 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (new_file));
#line 3822 "MediaDataRepresentation.c"
}


static void
g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure,
                                             GValue * return_value,
                                             guint n_param_values,
                                             const GValue * param_values,
                                             gpointer invocation_hint,
                                             gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2);
	register GMarshalFunc_VOID__OBJECT_OBJECT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (n_param_values == 3);
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data1 = closure->data;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data2 = param_values->data[0].v_pointer;
#line 3848 "MediaDataRepresentation.c"
	} else {
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data1 = param_values->data[0].v_pointer;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data2 = closure->data;
#line 3854 "MediaDataRepresentation.c"
	}
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	callback (data1, g_value_get_object (param_values + 1), g_value_get_object (param_values + 2), data2);
#line 3860 "MediaDataRepresentation.c"
}


static void
media_source_class_init (MediaSourceClass * klass)
{
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_parent_class = g_type_class_peek_parent (klass);
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_type_class_add_private (klass, sizeof (MediaSourcePrivate));
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->notify_master_replaced = (void (*) (MediaSource *, GFile*, GFile*)) media_source_real_notify_master_replaced;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataObjectClass *) klass)->notify_altered = (void (*) (DataObject *, Alteration*)) media_source_real_notify_altered;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataObjectClass *) klass)->notify_membership_changed = (void (*) (DataObject *, DataCollection*)) media_source_real_notify_membership_changed;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->set_event_id = (gboolean (*) (MediaSource *, EventID*)) media_source_real_set_event_id;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataObjectClass *) klass)->get_name = (gchar* (*) (DataObject *)) media_source_real_get_name;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_basename = (gchar* (*) (MediaSource *)) media_source_real_get_basename;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_file = (GFile* (*) (MediaSource *)) media_source_real_get_file;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_master_file = (GFile* (*) (MediaSource *)) media_source_real_get_master_file;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_master_filesize = (guint64 (*) (MediaSource *)) media_source_real_get_master_filesize;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_filesize = (guint64 (*) (MediaSource *)) media_source_real_get_filesize;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_timestamp = (time_t (*) (MediaSource *)) media_source_real_get_timestamp;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_backing_files_state = (BackingFileState** (*) (MediaSource *, int*)) media_source_real_get_backing_files_state;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_title = (gchar* (*) (MediaSource *)) media_source_real_get_title;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_comment = (gchar* (*) (MediaSource *)) media_source_real_get_comment;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->set_title = (void (*) (MediaSource *, const gchar*)) media_source_real_set_title;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->set_comment = (gboolean (*) (MediaSource *, const gchar*)) media_source_real_set_comment;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_rating = (Rating (*) (MediaSource *)) media_source_real_get_rating;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->set_rating = (void (*) (MediaSource *, Rating)) media_source_real_set_rating;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->increase_rating = (void (*) (MediaSource *)) media_source_real_increase_rating;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->decrease_rating = (void (*) (MediaSource *)) media_source_real_decrease_rating;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_dimensions = (void (*) (MediaSource *, PhotoException, Dimensions*)) media_source_real_get_dimensions;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_preview_pixbuf = (GdkPixbuf* (*) (MediaSource *, Scaling*, GError**)) media_source_real_get_preview_pixbuf;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->is_trashed = (gboolean (*) (MediaSource *)) media_source_real_is_trashed;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->trash = (void (*) (MediaSource *)) media_source_real_trash;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->untrash = (void (*) (MediaSource *)) media_source_real_untrash;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->is_offline = (gboolean (*) (MediaSource *)) media_source_real_is_offline;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->mark_offline = (void (*) (MediaSource *)) media_source_real_mark_offline;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->mark_online = (void (*) (MediaSource *)) media_source_real_mark_online;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_master_md5 = (gchar* (*) (MediaSource *)) media_source_real_get_master_md5;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_event_id = (void (*) (MediaSource *, EventID*)) media_source_real_get_event_id;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_exposure_time = (time_t (*) (MediaSource *)) media_source_real_get_exposure_time;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->get_import_id = (void (*) (MediaSource *, ImportID*)) media_source_real_get_import_id;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceClass *) klass)->master_replaced = media_source_real_master_replaced;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	G_OBJECT_CLASS (klass)->finalize = media_source_finalize;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_signals[MEDIA_SOURCE_MASTER_REPLACED_SIGNAL] = g_signal_new ("master-replaced", TYPE_MEDIA_SOURCE, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceClass, master_replaced), NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, g_file_get_type (), g_file_get_type ());
#line 3941 "MediaDataRepresentation.c"
}


static void
media_source_indexable_interface_init (IndexableIface * iface)
{
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_indexable_parent_iface = g_type_interface_peek_parent (iface);
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	iface->get_indexable_keywords = (const gchar* (*) (Indexable *)) media_source_real_get_indexable_keywords;
#line 3952 "MediaDataRepresentation.c"
}


static void
media_source_instance_init (MediaSource * self)
{
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv = MEDIA_SOURCE_GET_PRIVATE (self);
#line 36 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->event = NULL;
#line 37 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->indexable_keywords = NULL;
#line 3965 "MediaDataRepresentation.c"
}


static void
media_source_finalize (GObject * obj)
{
	MediaSource * self;
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MEDIA_SOURCE, MediaSource);
#line 36 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->event);
#line 37 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (self->priv->indexable_keywords);
#line 32 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	G_OBJECT_CLASS (media_source_parent_class)->finalize (obj);
#line 3981 "MediaDataRepresentation.c"
}


GType
media_source_get_type (void)
{
	static volatile gsize media_source_type_id__volatile = 0;
	if (g_once_init_enter (&media_source_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (MediaSourceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) media_source_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MediaSource), 0, (GInstanceInitFunc) media_source_instance_init, NULL };
		static const GInterfaceInfo indexable_info = { (GInterfaceInitFunc) media_source_indexable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType media_source_type_id;
		media_source_type_id = g_type_register_static (TYPE_THUMBNAIL_SOURCE, "MediaSource", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_type_add_interface_static (media_source_type_id, TYPE_INDEXABLE, &indexable_info);
		g_once_init_leave (&media_source_type_id__volatile, media_source_type_id);
	}
	return media_source_type_id__volatile;
}


static guint
_file_hash_gee_hash_data_func (gconstpointer v,
                               gpointer self)
{
	guint result;
	result = file_hash ((GFile*) v);
#line 271 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4009 "MediaDataRepresentation.c"
}


static gboolean
_file_equal_gee_equal_data_func (gconstpointer a,
                                 gconstpointer b,
                                 gpointer self)
{
	gboolean result;
	result = file_equal ((GFile*) a, (GFile*) b);
#line 271 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4022 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_holding_tank_construct (GType object_type,
                                     MediaSourceCollection* sources,
                                     SourceHoldingTankCheckToKeep check_to_keep,
                                     void* check_to_keep_target,
                                     GetSourceDatabaseKey get_key,
                                     void* get_key_target)
{
	MediaSourceHoldingTank* self = NULL;
#line 274 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (sources), NULL);
#line 276 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (MediaSourceHoldingTank*) database_source_holding_tank_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (sources, TYPE_SOURCE_COLLECTION, SourceCollection), check_to_keep, check_to_keep_target, get_key, get_key_target);
#line 274 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 4041 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_holding_tank_new (MediaSourceCollection* sources,
                               SourceHoldingTankCheckToKeep check_to_keep,
                               void* check_to_keep_target,
                               GetSourceDatabaseKey get_key,
                               void* get_key_target)
{
#line 274 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return media_source_holding_tank_construct (TYPE_MEDIA_SOURCE_HOLDING_TANK, sources, check_to_keep, check_to_keep_target, get_key, get_key_target);
#line 4054 "MediaDataRepresentation.c"
}


MediaSource*
media_source_holding_tank_fetch_by_master_file (MediaSourceHoldingTank* self,
                                                GFile* file)
{
	MediaSource* result = NULL;
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
#line 279 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_HOLDING_TANK (self), NULL);
#line 279 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 280 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->master_file_map;
#line 280 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), file);
#line 280 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = (MediaSource*) _tmp1_;
#line 280 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4077 "MediaDataRepresentation.c"
}


MediaSource*
media_source_holding_tank_fetch_by_md5 (MediaSourceHoldingTank* self,
                                        const gchar* md5)
{
	MediaSource* result = NULL;
#line 283 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_HOLDING_TANK (self), NULL);
#line 283 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (md5 != NULL, NULL);
#line 4090 "MediaDataRepresentation.c"
	{
		GeeIterator* _source_it = NULL;
		GeeHashMap* _tmp0_;
		GeeCollection* _tmp1_;
		GeeCollection* _tmp2_;
		GeeCollection* _tmp3_;
		GeeIterator* _tmp4_;
		GeeIterator* _tmp5_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = self->priv->master_file_map;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = _tmp1_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = _tmp4_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp3_);
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_it = _tmp5_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 4117 "MediaDataRepresentation.c"
			GeeIterator* _tmp6_;
			MediaSource* source = NULL;
			GeeIterator* _tmp7_;
			gpointer _tmp8_;
			MediaSource* _tmp9_;
			gchar* _tmp10_;
			gchar* _tmp11_;
			gboolean _tmp12_;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = _source_it;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp6_)) {
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 4132 "MediaDataRepresentation.c"
			}
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = _source_it;
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = gee_iterator_get (_tmp7_);
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			source = (MediaSource*) _tmp8_;
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = source;
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp10_ = media_source_get_master_md5 (_tmp9_);
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp11_ = _tmp10_;
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = g_strcmp0 (_tmp11_, md5) == 0;
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_free0 (_tmp11_);
#line 285 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp12_) {
#line 286 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				result = source;
#line 286 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_source_it);
#line 286 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return result;
#line 4158 "MediaDataRepresentation.c"
			}
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (source);
#line 4162 "MediaDataRepresentation.c"
		}
#line 284 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_source_it);
#line 4166 "MediaDataRepresentation.c"
	}
#line 290 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = NULL;
#line 290 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4172 "MediaDataRepresentation.c"
}


static void
_media_source_holding_tank_on_master_source_replaced_media_source_master_replaced (MediaSource* _sender,
                                                                                   GFile* old_file,
                                                                                   GFile* new_file,
                                                                                   gpointer self)
{
#line 299 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_holding_tank_on_master_source_replaced ((MediaSourceHoldingTank*) self, _sender, old_file, new_file);
#line 4184 "MediaDataRepresentation.c"
}


static void
media_source_holding_tank_real_notify_contents_altered (SourceHoldingTank* base,
                                                        GeeCollection* added,
                                                        GeeCollection* removed)
{
	MediaSourceHoldingTank * self;
#line 293 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTank);
#line 293 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((added == NULL) || GEE_IS_COLLECTION (added));
#line 293 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((removed == NULL) || GEE_IS_COLLECTION (removed));
#line 295 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (added != NULL) {
#line 4202 "MediaDataRepresentation.c"
		{
			GeeIterator* _source_it = NULL;
			GeeIterator* _tmp0_;
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp0_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (added, GEE_TYPE_ITERABLE, GeeIterable));
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_source_it = _tmp0_;
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			while (TRUE) {
#line 4212 "MediaDataRepresentation.c"
				GeeIterator* _tmp1_;
				DataSource* source = NULL;
				GeeIterator* _tmp2_;
				gpointer _tmp3_;
				MediaSource* media_source = NULL;
				DataSource* _tmp4_;
				MediaSource* _tmp5_;
				GeeHashMap* _tmp6_;
				MediaSource* _tmp7_;
				GFile* _tmp8_;
				GFile* _tmp9_;
				MediaSource* _tmp10_;
				MediaSource* _tmp11_;
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp1_ = _source_it;
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (!gee_iterator_next (_tmp1_)) {
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					break;
#line 4232 "MediaDataRepresentation.c"
				}
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp2_ = _source_it;
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp3_ = gee_iterator_get (_tmp2_);
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				source = (DataSource*) _tmp3_;
#line 297 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp4_ = source;
#line 297 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
#line 297 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media_source = _tmp5_;
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp6_ = self->priv->master_file_map;
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp7_ = media_source;
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp8_ = media_source_get_master_file (_tmp7_);
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp9_ = _tmp8_;
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp10_ = media_source;
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp9_, _tmp10_);
#line 298 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp9_);
#line 299 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp11_ = media_source;
#line 299 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_connect (_tmp11_, "master-replaced", (GCallback) _media_source_holding_tank_on_master_source_replaced_media_source_master_replaced, self);
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (media_source);
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (source);
#line 4268 "MediaDataRepresentation.c"
			}
#line 296 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_source_it);
#line 4272 "MediaDataRepresentation.c"
		}
	}
#line 303 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (removed != NULL) {
#line 4277 "MediaDataRepresentation.c"
		{
			GeeIterator* _source_it = NULL;
			GeeIterator* _tmp12_;
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (removed, GEE_TYPE_ITERABLE, GeeIterable));
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_source_it = _tmp12_;
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			while (TRUE) {
#line 4287 "MediaDataRepresentation.c"
				GeeIterator* _tmp13_;
				DataSource* source = NULL;
				GeeIterator* _tmp14_;
				gpointer _tmp15_;
				MediaSource* media_source = NULL;
				DataSource* _tmp16_;
				MediaSource* _tmp17_;
				gboolean is_removed = FALSE;
				GeeHashMap* _tmp18_;
				MediaSource* _tmp19_;
				GFile* _tmp20_;
				GFile* _tmp21_;
				gboolean _tmp22_;
				gboolean _tmp23_;
				gboolean _tmp24_;
				MediaSource* _tmp25_;
				guint _tmp26_;
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp13_ = _source_it;
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (!gee_iterator_next (_tmp13_)) {
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					break;
#line 4311 "MediaDataRepresentation.c"
				}
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp14_ = _source_it;
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp15_ = gee_iterator_get (_tmp14_);
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				source = (DataSource*) _tmp15_;
#line 305 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp16_ = source;
#line 305 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, TYPE_MEDIA_SOURCE, MediaSource));
#line 305 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media_source = _tmp17_;
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp18_ = self->priv->master_file_map;
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp19_ = media_source;
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp20_ = media_source_get_master_file (_tmp19_);
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp21_ = _tmp20_;
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp22_ = gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp21_, NULL);
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp23_ = _tmp22_;
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp21_);
#line 306 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				is_removed = _tmp23_;
#line 307 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp24_ = is_removed;
#line 307 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_vala_assert (_tmp24_, "is_removed");
#line 308 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp25_ = media_source;
#line 308 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_parse_name ("master-replaced", TYPE_MEDIA_SOURCE, &_tmp26_, NULL, FALSE);
#line 308 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_handlers_disconnect_matched (_tmp25_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp26_, 0, NULL, (GCallback) _media_source_holding_tank_on_master_source_replaced_media_source_master_replaced, self);
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (media_source);
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (source);
#line 4355 "MediaDataRepresentation.c"
			}
#line 304 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_source_it);
#line 4359 "MediaDataRepresentation.c"
		}
	}
#line 312 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	SOURCE_HOLDING_TANK_CLASS (media_source_holding_tank_parent_class)->notify_contents_altered (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATABASE_SOURCE_HOLDING_TANK, DatabaseSourceHoldingTank), TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), added, removed);
#line 4364 "MediaDataRepresentation.c"
}


static void
media_source_holding_tank_on_master_source_replaced (MediaSourceHoldingTank* self,
                                                     MediaSource* media_source,
                                                     GFile* old_file,
                                                     GFile* new_file)
{
	gboolean removed = FALSE;
	GeeHashMap* _tmp0_;
	gboolean _tmp1_;
	GeeHashMap* _tmp2_;
#line 315 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_HOLDING_TANK (self));
#line 315 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (media_source));
#line 315 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (old_file));
#line 315 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (new_file));
#line 316 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->master_file_map;
#line 316 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), old_file, NULL);
#line 316 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	removed = _tmp1_;
#line 317 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_assert (removed, "removed");
#line 319 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = self->priv->master_file_map;
#line 319 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), new_file, media_source);
#line 4398 "MediaDataRepresentation.c"
}


static void
media_source_holding_tank_class_init (MediaSourceHoldingTankClass * klass)
{
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_holding_tank_parent_class = g_type_class_peek_parent (klass);
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((SourceHoldingTankClass *) klass)->finalize = media_source_holding_tank_finalize;
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_type_class_add_private (klass, sizeof (MediaSourceHoldingTankPrivate));
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((SourceHoldingTankClass *) klass)->notify_contents_altered = (void (*) (SourceHoldingTank *, GeeCollection*, GeeCollection*)) media_source_holding_tank_real_notify_contents_altered;
#line 4413 "MediaDataRepresentation.c"
}


static void
media_source_holding_tank_instance_init (MediaSourceHoldingTank * self)
{
	GeeHashMap* _tmp0_;
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv = MEDIA_SOURCE_HOLDING_TANK_GET_PRIVATE (self);
#line 271 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_hash_map_new (g_file_get_type (), (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _file_hash_gee_hash_data_func, NULL, NULL, _file_equal_gee_equal_data_func, NULL, NULL, NULL, NULL, NULL);
#line 271 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->master_file_map = _tmp0_;
#line 4427 "MediaDataRepresentation.c"
}


static void
media_source_holding_tank_finalize (SourceHoldingTank * obj)
{
	MediaSourceHoldingTank * self;
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MEDIA_SOURCE_HOLDING_TANK, MediaSourceHoldingTank);
#line 271 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->master_file_map);
#line 270 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	SOURCE_HOLDING_TANK_CLASS (media_source_holding_tank_parent_class)->finalize (obj);
#line 4441 "MediaDataRepresentation.c"
}


GType
media_source_holding_tank_get_type (void)
{
	static volatile gsize media_source_holding_tank_type_id__volatile = 0;
	if (g_once_init_enter (&media_source_holding_tank_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (MediaSourceHoldingTankClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) media_source_holding_tank_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MediaSourceHoldingTank), 0, (GInstanceInitFunc) media_source_holding_tank_instance_init, NULL };
		GType media_source_holding_tank_type_id;
		media_source_holding_tank_type_id = g_type_register_static (TYPE_DATABASE_SOURCE_HOLDING_TANK, "MediaSourceHoldingTank", &g_define_type_info, 0);
		g_once_init_leave (&media_source_holding_tank_type_id__volatile, media_source_holding_tank_type_id);
	}
	return media_source_holding_tank_type_id__volatile;
}


static gpointer
_data_collection_ref0 (gpointer self)
{
#line 329 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? data_collection_ref (self) : NULL;
#line 4464 "MediaDataRepresentation.c"
}


MediaSourceTransactionController*
media_source_transaction_controller_construct (GType object_type,
                                               MediaSourceCollection* sources)
{
	MediaSourceTransactionController* self = NULL;
	MediaSourceCollection* _tmp0_;
#line 328 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (sources), NULL);
#line 328 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (MediaSourceTransactionController*) transaction_controller_construct (object_type);
#line 329 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = _data_collection_ref0 (sources);
#line 329 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_data_collection_unref0 (self->priv->sources);
#line 329 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->sources = _tmp0_;
#line 328 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 4486 "MediaDataRepresentation.c"
}


MediaSourceTransactionController*
media_source_transaction_controller_new (MediaSourceCollection* sources)
{
#line 328 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return media_source_transaction_controller_construct (TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, sources);
#line 4495 "MediaDataRepresentation.c"
}


static void
media_source_transaction_controller_real_begin_impl (TransactionController* base,
                                                     GError** error)
{
	MediaSourceTransactionController * self;
	MediaSourceCollection* _tmp0_;
#line 332 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionController);
#line 333 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	database_table_begin_transaction ();
#line 334 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->sources;
#line 334 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	data_collection_freeze_notifications (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_COLLECTION, DataCollection));
#line 4513 "MediaDataRepresentation.c"
}


static void
media_source_transaction_controller_real_commit_impl (TransactionController* base,
                                                      GError** error)
{
	MediaSourceTransactionController * self;
	MediaSourceCollection* _tmp0_;
	GError * _inner_error_ = NULL;
#line 337 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionController);
#line 338 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->sources;
#line 338 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	data_collection_thaw_notifications (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_COLLECTION, DataCollection));
#line 339 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	database_table_commit_transaction (&_inner_error_);
#line 339 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 339 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_propagate_error (error, _inner_error_);
#line 339 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return;
#line 4538 "MediaDataRepresentation.c"
	}
}


static void
media_source_transaction_controller_class_init (MediaSourceTransactionControllerClass * klass)
{
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_transaction_controller_parent_class = g_type_class_peek_parent (klass);
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((TransactionControllerClass *) klass)->finalize = media_source_transaction_controller_finalize;
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_type_class_add_private (klass, sizeof (MediaSourceTransactionControllerPrivate));
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((TransactionControllerClass *) klass)->begin_impl = (void (*) (TransactionController *, GError**)) media_source_transaction_controller_real_begin_impl;
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((TransactionControllerClass *) klass)->commit_impl = (void (*) (TransactionController *, GError**)) media_source_transaction_controller_real_commit_impl;
#line 4556 "MediaDataRepresentation.c"
}


static void
media_source_transaction_controller_instance_init (MediaSourceTransactionController * self)
{
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv = MEDIA_SOURCE_TRANSACTION_CONTROLLER_GET_PRIVATE (self);
#line 4565 "MediaDataRepresentation.c"
}


static void
media_source_transaction_controller_finalize (TransactionController * obj)
{
	MediaSourceTransactionController * self;
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MEDIA_SOURCE_TRANSACTION_CONTROLLER, MediaSourceTransactionController);
#line 326 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_data_collection_unref0 (self->priv->sources);
#line 325 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	TRANSACTION_CONTROLLER_CLASS (media_source_transaction_controller_parent_class)->finalize (obj);
#line 4579 "MediaDataRepresentation.c"
}


GType
media_source_transaction_controller_get_type (void)
{
	static volatile gsize media_source_transaction_controller_type_id__volatile = 0;
	if (g_once_init_enter (&media_source_transaction_controller_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (MediaSourceTransactionControllerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) media_source_transaction_controller_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MediaSourceTransactionController), 0, (GInstanceInitFunc) media_source_transaction_controller_instance_init, NULL };
		GType media_source_transaction_controller_type_id;
		media_source_transaction_controller_type_id = g_type_register_static (TYPE_TRANSACTION_CONTROLLER, "MediaSourceTransactionController", &g_define_type_info, 0);
		g_once_init_leave (&media_source_transaction_controller_type_id__volatile, media_source_transaction_controller_type_id);
	}
	return media_source_transaction_controller_type_id__volatile;
}


static gint
_import_id_compare_func_gcompare_data_func (gconstpointer a,
                                            gconstpointer b,
                                            gpointer self)
{
	gint result;
	result = import_id_compare_func ((ImportID*) a, (ImportID*) b);
#line 350 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4606 "MediaDataRepresentation.c"
}


MediaSourceCollection*
media_source_collection_construct (GType object_type,
                                   const gchar* name,
                                   GetSourceDatabaseKey source_key_func,
                                   void* source_key_func_target)
{
	MediaSourceCollection* self = NULL;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
#line 384 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 385 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (MediaSourceCollection*) database_source_collection_construct (object_type, name, source_key_func, source_key_func_target);
#line 387 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_create_trashcan (self);
#line 387 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (self->priv->trashcan);
#line 387 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->trashcan = _tmp0_;
#line 388 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = media_source_collection_create_offline_bin (self);
#line 388 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (self->priv->offline_bin);
#line 388 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->offline_bin = _tmp1_;
#line 384 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 4637 "MediaDataRepresentation.c"
}


void
media_source_collection_filter_media (GeeCollection* media,
                                      GeeCollection* photos,
                                      GeeCollection* videos)
{
#line 391 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 391 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((photos == NULL) || GEE_IS_COLLECTION (photos));
#line 391 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((videos == NULL) || GEE_IS_COLLECTION (videos));
#line 4652 "MediaDataRepresentation.c"
	{
		GeeIterator* _source_it = NULL;
		GeeIterator* _tmp0_;
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (media, GEE_TYPE_ITERABLE, GeeIterable));
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_it = _tmp0_;
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 4662 "MediaDataRepresentation.c"
			GeeIterator* _tmp1_;
			MediaSource* source = NULL;
			GeeIterator* _tmp2_;
			gpointer _tmp3_;
			gboolean _tmp4_ = FALSE;
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp1_ = _source_it;
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp1_)) {
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 4674 "MediaDataRepresentation.c"
			}
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp2_ = _source_it;
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp3_ = gee_iterator_get (_tmp2_);
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			source = (MediaSource*) _tmp3_;
#line 394 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (photos != NULL) {
#line 4684 "MediaDataRepresentation.c"
				MediaSource* _tmp5_;
#line 394 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp5_ = source;
#line 394 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, TYPE_LIBRARY_PHOTO);
#line 4690 "MediaDataRepresentation.c"
			} else {
#line 394 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp4_ = FALSE;
#line 4694 "MediaDataRepresentation.c"
			}
#line 394 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp4_) {
#line 4698 "MediaDataRepresentation.c"
				MediaSource* _tmp6_;
#line 395 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp6_ = source;
#line 395 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_collection_add (photos, G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_LIBRARY_PHOTO, LibraryPhoto));
#line 4704 "MediaDataRepresentation.c"
			} else {
				gboolean _tmp7_ = FALSE;
#line 396 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (videos != NULL) {
#line 4709 "MediaDataRepresentation.c"
					MediaSource* _tmp8_;
#line 396 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp8_ = source;
#line 396 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp7_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, TYPE_VIDEO);
#line 4715 "MediaDataRepresentation.c"
				} else {
#line 396 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp7_ = FALSE;
#line 4719 "MediaDataRepresentation.c"
				}
#line 396 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (_tmp7_) {
#line 4723 "MediaDataRepresentation.c"
					MediaSource* _tmp9_;
#line 397 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp9_ = source;
#line 397 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					gee_collection_add (videos, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, TYPE_VIDEO, Video));
#line 4729 "MediaDataRepresentation.c"
				} else {
					gboolean _tmp10_ = FALSE;
#line 398 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (photos != NULL) {
#line 398 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp10_ = TRUE;
#line 4736 "MediaDataRepresentation.c"
					} else {
#line 398 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp10_ = videos != NULL;
#line 4740 "MediaDataRepresentation.c"
					}
#line 398 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (_tmp10_) {
#line 4744 "MediaDataRepresentation.c"
						MediaSource* _tmp11_;
						gchar* _tmp12_;
						gchar* _tmp13_;
#line 399 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp11_ = source;
#line 399 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp12_ = data_object_to_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_DATA_OBJECT, DataObject));
#line 399 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp13_ = _tmp12_;
#line 399 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						g_warning ("MediaDataRepresentation.vala:399: Unrecognized media: %s", _tmp13_);
#line 399 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_g_free0 (_tmp13_);
#line 4758 "MediaDataRepresentation.c"
					}
				}
			}
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (source);
#line 4764 "MediaDataRepresentation.c"
		}
#line 393 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_source_it);
#line 4768 "MediaDataRepresentation.c"
	}
}


void
media_source_collection_count_media (GeeCollection* media,
                                     gint* photo_count,
                                     gint* video_count)
{
	gint _vala_photo_count = 0;
	gint _vala_video_count = 0;
	GeeArrayList* photos = NULL;
	GeeArrayList* _tmp0_;
	GeeArrayList* videos = NULL;
	GeeArrayList* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	gint _tmp5_;
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 405 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_array_list_new (TYPE_LIBRARY_PHOTO, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 405 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	photos = _tmp0_;
#line 406 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_array_list_new (TYPE_VIDEO, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 406 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	videos = _tmp1_;
#line 408 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_filter_media (media, G_TYPE_CHECK_INSTANCE_CAST (photos, GEE_TYPE_COLLECTION, GeeCollection), G_TYPE_CHECK_INSTANCE_CAST (videos, GEE_TYPE_COLLECTION, GeeCollection));
#line 410 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (photos, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 410 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = _tmp2_;
#line 410 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_photo_count = _tmp3_;
#line 411 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (videos, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 411 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = _tmp4_;
#line 411 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_video_count = _tmp5_;
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (videos);
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (photos);
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (photo_count) {
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*photo_count = _vala_photo_count;
#line 4820 "MediaDataRepresentation.c"
	}
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (video_count) {
#line 403 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*video_count = _vala_video_count;
#line 4826 "MediaDataRepresentation.c"
	}
}


gboolean
media_source_collection_has_photo (GeeCollection* media)
{
	gboolean result = FALSE;
#line 414 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (media), FALSE);
#line 4837 "MediaDataRepresentation.c"
	{
		GeeIterator* _current_media_it = NULL;
		GeeIterator* _tmp0_;
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (media, GEE_TYPE_ITERABLE, GeeIterable));
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_current_media_it = _tmp0_;
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 4847 "MediaDataRepresentation.c"
			GeeIterator* _tmp1_;
			MediaSource* current_media = NULL;
			GeeIterator* _tmp2_;
			gpointer _tmp3_;
			MediaSource* _tmp4_;
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp1_ = _current_media_it;
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp1_)) {
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 4859 "MediaDataRepresentation.c"
			}
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp2_ = _current_media_it;
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp3_ = gee_iterator_get (_tmp2_);
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			current_media = (MediaSource*) _tmp3_;
#line 416 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = current_media;
#line 416 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, TYPE_PHOTO)) {
#line 417 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				result = TRUE;
#line 417 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (current_media);
#line 417 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_current_media_it);
#line 417 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return result;
#line 4879 "MediaDataRepresentation.c"
			}
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (current_media);
#line 4883 "MediaDataRepresentation.c"
		}
#line 415 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_current_media_it);
#line 4887 "MediaDataRepresentation.c"
	}
#line 421 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = FALSE;
#line 421 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4893 "MediaDataRepresentation.c"
}


gboolean
media_source_collection_has_video (GeeCollection* media)
{
	gboolean result = FALSE;
#line 424 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (GEE_IS_COLLECTION (media), FALSE);
#line 4903 "MediaDataRepresentation.c"
	{
		GeeIterator* _current_media_it = NULL;
		GeeIterator* _tmp0_;
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (media, GEE_TYPE_ITERABLE, GeeIterable));
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_current_media_it = _tmp0_;
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 4913 "MediaDataRepresentation.c"
			GeeIterator* _tmp1_;
			MediaSource* current_media = NULL;
			GeeIterator* _tmp2_;
			gpointer _tmp3_;
			MediaSource* _tmp4_;
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp1_ = _current_media_it;
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp1_)) {
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 4925 "MediaDataRepresentation.c"
			}
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp2_ = _current_media_it;
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp3_ = gee_iterator_get (_tmp2_);
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			current_media = (MediaSource*) _tmp3_;
#line 426 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = current_media;
#line 426 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, TYPE_VIDEO)) {
#line 427 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				result = TRUE;
#line 427 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (current_media);
#line 427 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_current_media_it);
#line 427 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return result;
#line 4945 "MediaDataRepresentation.c"
			}
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (current_media);
#line 4949 "MediaDataRepresentation.c"
		}
#line 425 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_current_media_it);
#line 4953 "MediaDataRepresentation.c"
	}
#line 431 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = FALSE;
#line 431 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 4959 "MediaDataRepresentation.c"
}


static MediaSourceHoldingTank*
media_source_collection_real_create_trashcan (MediaSourceCollection* self)
{
#line 434 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_create_trashcan'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 434 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 4970 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_collection_create_trashcan (MediaSourceCollection* self)
{
#line 434 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 434 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->create_trashcan (self);
#line 4981 "MediaDataRepresentation.c"
}


static MediaSourceHoldingTank*
media_source_collection_real_create_offline_bin (MediaSourceCollection* self)
{
#line 436 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_create_offline_bin'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 436 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 4992 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_collection_create_offline_bin (MediaSourceCollection* self)
{
#line 436 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 436 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->create_offline_bin (self);
#line 5003 "MediaDataRepresentation.c"
}


static MediaMonitor*
media_source_collection_real_create_media_monitor (MediaSourceCollection* self,
                                                   Workers* workers,
                                                   GCancellable* cancellable)
{
#line 438 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_create_media_monitor'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 438 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 5016 "MediaDataRepresentation.c"
}


MediaMonitor*
media_source_collection_create_media_monitor (MediaSourceCollection* self,
                                              Workers* workers,
                                              GCancellable* cancellable)
{
#line 438 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 438 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->create_media_monitor (self, workers, cancellable);
#line 5029 "MediaDataRepresentation.c"
}


static gchar*
media_source_collection_real_get_typename (MediaSourceCollection* self)
{
#line 440 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_get_typename'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 440 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 5040 "MediaDataRepresentation.c"
}


gchar*
media_source_collection_get_typename (MediaSourceCollection* self)
{
#line 440 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 440 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->get_typename (self);
#line 5051 "MediaDataRepresentation.c"
}


static gboolean
media_source_collection_real_is_file_recognized (MediaSourceCollection* self,
                                                 GFile* file)
{
	gboolean _tmp0_ = FALSE;
#line 442 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_is_file_recognized'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 442 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return _tmp0_;
#line 5064 "MediaDataRepresentation.c"
}


gboolean
media_source_collection_is_file_recognized (MediaSourceCollection* self,
                                            GFile* file)
{
#line 442 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), FALSE);
#line 442 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->is_file_recognized (self, file);
#line 5076 "MediaDataRepresentation.c"
}


static gpointer
_source_holding_tank_ref0 (gpointer self)
{
#line 445 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? source_holding_tank_ref (self) : NULL;
#line 5085 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_collection_get_trashcan (MediaSourceCollection* self)
{
	MediaSourceHoldingTank* result = NULL;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
#line 444 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 445 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->trashcan;
#line 445 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _source_holding_tank_ref0 (_tmp0_);
#line 445 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 445 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 5105 "MediaDataRepresentation.c"
}


MediaSourceHoldingTank*
media_source_collection_get_offline_bin (MediaSourceCollection* self)
{
	MediaSourceHoldingTank* result = NULL;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
#line 448 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 449 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->offline_bin;
#line 449 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _source_holding_tank_ref0 (_tmp0_);
#line 449 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 449 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 5125 "MediaDataRepresentation.c"
}


static MediaSource*
media_source_collection_real_fetch_by_numeric_id (MediaSourceCollection* self,
                                                  gint64 numeric_id)
{
#line 455 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_fetch_by_numeric_id'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 455 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 5137 "MediaDataRepresentation.c"
}


MediaSource*
media_source_collection_fetch_by_numeric_id (MediaSourceCollection* self,
                                             gint64 numeric_id)
{
#line 455 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 455 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->fetch_by_numeric_id (self, numeric_id);
#line 5149 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_notify_import_roll_altered (MediaSourceCollection* self)
{
#line 458 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_collection_signals[MEDIA_SOURCE_COLLECTION_IMPORT_ROLL_ALTERED_SIGNAL], 0);
#line 5158 "MediaDataRepresentation.c"
}


void
media_source_collection_notify_import_roll_altered (MediaSourceCollection* self)
{
#line 457 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 457 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->notify_import_roll_altered (self);
#line 5169 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_notify_flagged_contents_altered (MediaSourceCollection* self)
{
#line 462 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_collection_signals[MEDIA_SOURCE_COLLECTION_FLAGGED_CONTENTS_ALTERED_SIGNAL], 0);
#line 5178 "MediaDataRepresentation.c"
}


void
media_source_collection_notify_flagged_contents_altered (MediaSourceCollection* self)
{
#line 461 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 461 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->notify_flagged_contents_altered (self);
#line 5189 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_notify_media_import_starting (MediaSourceCollection* self,
                                                           GeeCollection* media)
{
#line 465 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 466 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_STARTING_SIGNAL], 0, media);
#line 5201 "MediaDataRepresentation.c"
}


void
media_source_collection_notify_media_import_starting (MediaSourceCollection* self,
                                                      GeeCollection* media)
{
#line 465 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 465 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->notify_media_import_starting (self, media);
#line 5213 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_notify_media_import_completed (MediaSourceCollection* self,
                                                            GeeCollection* media)
{
#line 469 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 470 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_COMPLETED_SIGNAL], 0, media);
#line 5225 "MediaDataRepresentation.c"
}


void
media_source_collection_notify_media_import_completed (MediaSourceCollection* self,
                                                       GeeCollection* media)
{
#line 469 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 469 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->notify_media_import_completed (self, media);
#line 5237 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_items_altered (DataCollection* base,
                                            GeeMap* items)
{
	MediaSourceCollection * self;
	GeeArrayList* to_trashcan = NULL;
	GeeArrayList* to_offline = NULL;
	gboolean flagged_altered = FALSE;
	GeeArrayList* _tmp43_;
	GeeArrayList* _tmp47_;
	gboolean _tmp51_;
#line 473 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection);
#line 473 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_MAP (items));
#line 474 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	to_trashcan = NULL;
#line 475 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	to_offline = NULL;
#line 476 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	flagged_altered = FALSE;
#line 5262 "MediaDataRepresentation.c"
	{
		GeeIterator* _object_it = NULL;
		GeeSet* _tmp0_;
		GeeSet* _tmp1_;
		GeeSet* _tmp2_;
		GeeIterator* _tmp3_;
		GeeIterator* _tmp4_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = gee_map_get_keys (items);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = _tmp1_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ITERABLE, GeeIterable));
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = _tmp3_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp2_);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_object_it = _tmp4_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 5286 "MediaDataRepresentation.c"
			GeeIterator* _tmp5_;
			DataObject* object = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			Alteration* alteration = NULL;
			DataObject* _tmp8_;
			gpointer _tmp9_;
			MediaSource* source = NULL;
			DataObject* _tmp10_;
			MediaSource* _tmp11_;
			Alteration* _tmp12_;
			gboolean _tmp13_ = FALSE;
			MediaSource* _tmp14_;
			gboolean _tmp22_ = FALSE;
			MediaSource* _tmp23_;
			Flaggable* flaggable = NULL;
			MediaSource* _tmp31_;
			Flaggable* _tmp32_;
			Flaggable* _tmp33_;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _object_it;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp5_)) {
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 5312 "MediaDataRepresentation.c"
			}
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = _object_it;
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = gee_iterator_get (_tmp6_);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			object = (DataObject*) _tmp7_;
#line 478 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = object;
#line 478 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = gee_map_get (items, _tmp8_);
#line 478 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			alteration = (Alteration*) _tmp9_;
#line 479 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp10_ = object;
#line 479 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp11_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, TYPE_MEDIA_SOURCE, MediaSource));
#line 479 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			source = _tmp11_;
#line 481 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = alteration;
#line 481 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!alteration_has_subject (_tmp12_, "metadata")) {
#line 482 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (source);
#line 482 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_alteration_unref0 (alteration);
#line 482 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (object);
#line 482 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				continue;
#line 5344 "MediaDataRepresentation.c"
			}
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp14_ = source;
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (media_source_is_trashed (_tmp14_)) {
#line 5350 "MediaDataRepresentation.c"
				MediaSourceHoldingTank* _tmp15_;
				MediaSourceHoldingTank* _tmp16_;
				MediaSource* _tmp17_;
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp15_ = media_source_collection_get_trashcan (self);
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp16_ = _tmp15_;
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp17_ = source;
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp13_ = !source_holding_tank_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, TYPE_DATA_SOURCE, DataSource));
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_source_holding_tank_unref0 (_tmp16_);
#line 5364 "MediaDataRepresentation.c"
			} else {
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp13_ = FALSE;
#line 5368 "MediaDataRepresentation.c"
			}
#line 484 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp13_) {
#line 5372 "MediaDataRepresentation.c"
				GeeArrayList* _tmp18_;
				GeeArrayList* _tmp20_;
				MediaSource* _tmp21_;
#line 485 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp18_ = to_trashcan;
#line 485 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (_tmp18_ == NULL) {
#line 5380 "MediaDataRepresentation.c"
					GeeArrayList* _tmp19_;
#line 486 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp19_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 486 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (to_trashcan);
#line 486 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					to_trashcan = _tmp19_;
#line 5388 "MediaDataRepresentation.c"
				}
#line 488 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp20_ = to_trashcan;
#line 488 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp21_ = source;
#line 488 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp21_);
#line 491 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (source);
#line 491 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_alteration_unref0 (alteration);
#line 491 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (object);
#line 491 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				continue;
#line 5404 "MediaDataRepresentation.c"
			}
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp23_ = source;
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (media_source_is_offline (_tmp23_)) {
#line 5410 "MediaDataRepresentation.c"
				MediaSourceHoldingTank* _tmp24_;
				MediaSourceHoldingTank* _tmp25_;
				MediaSource* _tmp26_;
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp24_ = media_source_collection_get_offline_bin (self);
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp25_ = _tmp24_;
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp26_ = source;
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp22_ = !source_holding_tank_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, TYPE_DATA_SOURCE, DataSource));
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_source_holding_tank_unref0 (_tmp25_);
#line 5424 "MediaDataRepresentation.c"
			} else {
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp22_ = FALSE;
#line 5428 "MediaDataRepresentation.c"
			}
#line 494 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp22_) {
#line 5432 "MediaDataRepresentation.c"
				GeeArrayList* _tmp27_;
				GeeArrayList* _tmp29_;
				MediaSource* _tmp30_;
#line 495 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp27_ = to_offline;
#line 495 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (_tmp27_ == NULL) {
#line 5440 "MediaDataRepresentation.c"
					GeeArrayList* _tmp28_;
#line 496 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp28_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 496 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (to_offline);
#line 496 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					to_offline = _tmp28_;
#line 5448 "MediaDataRepresentation.c"
				}
#line 498 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp29_ = to_offline;
#line 498 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp30_ = source;
#line 498 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp30_);
#line 5456 "MediaDataRepresentation.c"
			}
#line 501 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp31_ = source;
#line 501 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp32_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, TYPE_FLAGGABLE) ? ((Flaggable*) _tmp31_) : NULL);
#line 501 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			flaggable = _tmp32_;
#line 502 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp33_ = flaggable;
#line 502 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp33_ != NULL) {
#line 5468 "MediaDataRepresentation.c"
				Flaggable* _tmp34_;
#line 503 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp34_ = flaggable;
#line 503 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (flaggable_is_flagged (_tmp34_)) {
#line 5474 "MediaDataRepresentation.c"
					gboolean _tmp35_ = FALSE;
					GeeSet* _tmp36_;
					MediaSource* _tmp37_;
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp36_ = self->priv->flagged;
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp37_ = source;
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_COLLECTION, GeeCollection), _tmp37_)) {
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp35_ = TRUE;
#line 5486 "MediaDataRepresentation.c"
					} else {
						gboolean _tmp38_;
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp38_ = flagged_altered;
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp35_ = _tmp38_;
#line 5493 "MediaDataRepresentation.c"
					}
#line 504 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					flagged_altered = _tmp35_;
#line 5497 "MediaDataRepresentation.c"
				} else {
					gboolean _tmp39_ = FALSE;
					GeeSet* _tmp40_;
					MediaSource* _tmp41_;
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp40_ = self->priv->flagged;
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp41_ = source;
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (gee_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, GEE_TYPE_COLLECTION, GeeCollection), _tmp41_)) {
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp39_ = TRUE;
#line 5510 "MediaDataRepresentation.c"
					} else {
						gboolean _tmp42_;
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp42_ = flagged_altered;
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp39_ = _tmp42_;
#line 5517 "MediaDataRepresentation.c"
					}
#line 506 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					flagged_altered = _tmp39_;
#line 5521 "MediaDataRepresentation.c"
				}
			}
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (flaggable);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (source);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_alteration_unref0 (alteration);
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (object);
#line 5532 "MediaDataRepresentation.c"
		}
#line 477 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_object_it);
#line 5536 "MediaDataRepresentation.c"
	}
#line 510 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp43_ = to_trashcan;
#line 510 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp43_ != NULL) {
#line 5542 "MediaDataRepresentation.c"
		MediaSourceHoldingTank* _tmp44_;
		MediaSourceHoldingTank* _tmp45_;
		GeeArrayList* _tmp46_;
#line 511 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp44_ = media_source_collection_get_trashcan (self);
#line 511 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp45_ = _tmp44_;
#line 511 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp46_ = to_trashcan;
#line 511 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		source_holding_tank_unlink_and_hold (G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, GEE_TYPE_COLLECTION, GeeCollection));
#line 511 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_holding_tank_unref0 (_tmp45_);
#line 5556 "MediaDataRepresentation.c"
	}
#line 513 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp47_ = to_offline;
#line 513 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp47_ != NULL) {
#line 5562 "MediaDataRepresentation.c"
		MediaSourceHoldingTank* _tmp48_;
		MediaSourceHoldingTank* _tmp49_;
		GeeArrayList* _tmp50_;
#line 514 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp48_ = media_source_collection_get_offline_bin (self);
#line 514 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp49_ = _tmp48_;
#line 514 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp50_ = to_offline;
#line 514 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		source_holding_tank_unlink_and_hold (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, GEE_TYPE_COLLECTION, GeeCollection));
#line 514 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_holding_tank_unref0 (_tmp49_);
#line 5576 "MediaDataRepresentation.c"
	}
#line 516 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp51_ = flagged_altered;
#line 516 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp51_) {
#line 517 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_source_collection_notify_flagged_contents_altered (self);
#line 5584 "MediaDataRepresentation.c"
	}
#line 519 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	DATA_COLLECTION_CLASS (media_source_collection_parent_class)->items_altered (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollection), TYPE_DATA_COLLECTION, DataCollection), items);
#line 473 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (to_offline);
#line 473 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (to_trashcan);
#line 5592 "MediaDataRepresentation.c"
}


static void
_media_source_collection_on_master_replaced_media_source_master_replaced (MediaSource* _sender,
                                                                          GFile* old_file,
                                                                          GFile* new_file,
                                                                          gpointer self)
{
#line 531 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_on_master_replaced ((MediaSourceCollection*) self, _sender, old_file, new_file);
#line 5604 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_notify_contents_altered (DataCollection* base,
                                                      GeeIterable* added,
                                                      GeeIterable* removed)
{
	MediaSourceCollection * self;
	gboolean import_roll_changed = FALSE;
	gboolean flagged_altered = FALSE;
	gboolean _tmp60_;
	gboolean _tmp61_;
#line 522 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection);
#line 522 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((added == NULL) || GEE_IS_ITERABLE (added));
#line 522 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((removed == NULL) || GEE_IS_ITERABLE (removed));
#line 524 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	import_roll_changed = FALSE;
#line 525 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	flagged_altered = FALSE;
#line 526 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (added != NULL) {
#line 5630 "MediaDataRepresentation.c"
		{
			GeeIterator* _object_it = NULL;
			GeeIterator* _tmp0_;
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp0_ = gee_iterable_iterator (added);
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_object_it = _tmp0_;
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			while (TRUE) {
#line 5640 "MediaDataRepresentation.c"
				GeeIterator* _tmp1_;
				DataObject* object = NULL;
				GeeIterator* _tmp2_;
				gpointer _tmp3_;
				MediaSource* media = NULL;
				DataObject* _tmp4_;
				MediaSource* _tmp5_;
				GeeHashMap* _tmp6_;
				MediaSource* _tmp7_;
				GFile* _tmp8_;
				GFile* _tmp9_;
				MediaSource* _tmp10_;
				MediaSource* _tmp11_;
				ImportID import_id = {0};
				MediaSource* _tmp12_;
				ImportID _tmp13_ = {0};
				Flaggable* flaggable = NULL;
				MediaSource* _tmp19_;
				Flaggable* _tmp20_;
				Flaggable* _tmp21_;
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp1_ = _object_it;
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (!gee_iterator_next (_tmp1_)) {
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					break;
#line 5667 "MediaDataRepresentation.c"
				}
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp2_ = _object_it;
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp3_ = gee_iterator_get (_tmp2_);
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				object = (DataObject*) _tmp3_;
#line 528 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp4_ = object;
#line 528 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
#line 528 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media = _tmp5_;
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp6_ = self->priv->by_master_file;
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp7_ = media;
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp8_ = media_source_get_master_file (_tmp7_);
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp9_ = _tmp8_;
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp10_ = media;
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp9_, _tmp10_);
#line 530 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp9_);
#line 531 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp11_ = media;
#line 531 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_connect (_tmp11_, "master-replaced", (GCallback) _media_source_collection_on_master_replaced_media_source_master_replaced, self);
#line 533 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp12_ = media;
#line 533 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media_source_get_import_id (_tmp12_, &_tmp13_);
#line 533 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				import_id = _tmp13_;
#line 534 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (import_id_is_valid (&import_id)) {
#line 5707 "MediaDataRepresentation.c"
					GeeTreeSet* _tmp14_;
					ImportID _tmp15_;
					GeeMultiMap* _tmp16_;
					ImportID _tmp17_;
					MediaSource* _tmp18_;
#line 535 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp14_ = self->priv->sorted_import_ids;
#line 535 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp15_ = import_id;
#line 535 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), &_tmp15_);
#line 536 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp16_ = self->priv->import_rolls;
#line 536 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp17_ = import_id;
#line 536 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp18_ = media;
#line 536 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					gee_multi_map_set (_tmp16_, &_tmp17_, _tmp18_);
#line 538 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					import_roll_changed = TRUE;
#line 5729 "MediaDataRepresentation.c"
				}
#line 541 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp19_ = media;
#line 541 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp20_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, TYPE_FLAGGABLE) ? ((Flaggable*) _tmp19_) : NULL);
#line 541 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				flaggable = _tmp20_;
#line 542 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp21_ = flaggable;
#line 542 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (_tmp21_ != NULL) {
#line 5741 "MediaDataRepresentation.c"
					Flaggable* _tmp22_;
#line 543 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp22_ = flaggable;
#line 543 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (flaggable_is_flagged (_tmp22_)) {
#line 5747 "MediaDataRepresentation.c"
						gboolean _tmp23_ = FALSE;
						GeeSet* _tmp24_;
						MediaSource* _tmp25_;
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp24_ = self->priv->flagged;
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp25_ = media;
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						if (gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_COLLECTION, GeeCollection), _tmp25_)) {
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp23_ = TRUE;
#line 5759 "MediaDataRepresentation.c"
						} else {
							gboolean _tmp26_;
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp26_ = flagged_altered;
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp23_ = _tmp26_;
#line 5766 "MediaDataRepresentation.c"
						}
#line 544 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						flagged_altered = _tmp23_;
#line 5770 "MediaDataRepresentation.c"
					} else {
						gboolean _tmp27_ = FALSE;
						GeeSet* _tmp28_;
						MediaSource* _tmp29_;
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp28_ = self->priv->flagged;
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp29_ = media;
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						if (gee_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, GEE_TYPE_COLLECTION, GeeCollection), _tmp29_)) {
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp27_ = TRUE;
#line 5783 "MediaDataRepresentation.c"
						} else {
							gboolean _tmp30_;
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp30_ = flagged_altered;
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
							_tmp27_ = _tmp30_;
#line 5790 "MediaDataRepresentation.c"
						}
#line 546 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						flagged_altered = _tmp27_;
#line 5794 "MediaDataRepresentation.c"
					}
				}
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (flaggable);
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (media);
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (object);
#line 5803 "MediaDataRepresentation.c"
			}
#line 527 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_object_it);
#line 5807 "MediaDataRepresentation.c"
		}
	}
#line 551 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (removed != NULL) {
#line 5812 "MediaDataRepresentation.c"
		{
			GeeIterator* _object_it = NULL;
			GeeIterator* _tmp31_;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp31_ = gee_iterable_iterator (removed);
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_object_it = _tmp31_;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			while (TRUE) {
#line 5822 "MediaDataRepresentation.c"
				GeeIterator* _tmp32_;
				DataObject* object = NULL;
				GeeIterator* _tmp33_;
				gpointer _tmp34_;
				MediaSource* media = NULL;
				DataObject* _tmp35_;
				MediaSource* _tmp36_;
				gboolean is_removed = FALSE;
				GeeHashMap* _tmp37_;
				MediaSource* _tmp38_;
				GFile* _tmp39_;
				GFile* _tmp40_;
				gboolean _tmp41_;
				gboolean _tmp42_;
				gboolean _tmp43_;
				MediaSource* _tmp44_;
				guint _tmp45_;
				ImportID import_id = {0};
				MediaSource* _tmp46_;
				ImportID _tmp47_ = {0};
				gboolean _tmp56_ = FALSE;
				GeeSet* _tmp57_;
				MediaSource* _tmp58_;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp32_ = _object_it;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (!gee_iterator_next (_tmp32_)) {
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					break;
#line 5852 "MediaDataRepresentation.c"
				}
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp33_ = _object_it;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp34_ = gee_iterator_get (_tmp33_);
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				object = (DataObject*) _tmp34_;
#line 553 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp35_ = object;
#line 553 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp36_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, TYPE_MEDIA_SOURCE, MediaSource));
#line 553 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media = _tmp36_;
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp37_ = self->priv->by_master_file;
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp38_ = media;
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp39_ = media_source_get_master_file (_tmp38_);
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp40_ = _tmp39_;
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp41_ = gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp40_, NULL);
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp42_ = _tmp41_;
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp40_);
#line 555 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				is_removed = _tmp42_;
#line 556 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp43_ = is_removed;
#line 556 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_vala_assert (_tmp43_, "is_removed");
#line 557 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp44_ = media;
#line 557 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_parse_name ("master-replaced", TYPE_MEDIA_SOURCE, &_tmp45_, NULL, FALSE);
#line 557 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_signal_handlers_disconnect_matched (_tmp44_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp45_, 0, NULL, (GCallback) _media_source_collection_on_master_replaced_media_source_master_replaced, self);
#line 559 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp46_ = media;
#line 559 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				media_source_get_import_id (_tmp46_, &_tmp47_);
#line 559 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				import_id = _tmp47_;
#line 560 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (import_id_is_valid (&import_id)) {
#line 5900 "MediaDataRepresentation.c"
					GeeMultiMap* _tmp48_;
					ImportID _tmp49_;
					MediaSource* _tmp50_;
					gboolean _tmp51_;
					GeeMultiMap* _tmp52_;
					ImportID _tmp53_;
#line 561 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp48_ = self->priv->import_rolls;
#line 561 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp49_ = import_id;
#line 561 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp50_ = media;
#line 561 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					is_removed = gee_multi_map_remove (_tmp48_, &_tmp49_, _tmp50_);
#line 562 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp51_ = is_removed;
#line 562 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_vala_assert (_tmp51_, "is_removed");
#line 563 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp52_ = self->priv->import_rolls;
#line 563 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp53_ = import_id;
#line 563 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (!gee_multi_map_contains (_tmp52_, &_tmp53_)) {
#line 5925 "MediaDataRepresentation.c"
						GeeTreeSet* _tmp54_;
						ImportID _tmp55_;
#line 564 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp54_ = self->priv->sorted_import_ids;
#line 564 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp55_ = import_id;
#line 564 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						gee_abstract_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), &_tmp55_);
#line 5934 "MediaDataRepresentation.c"
					}
#line 566 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					import_roll_changed = TRUE;
#line 5938 "MediaDataRepresentation.c"
				}
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp57_ = self->priv->flagged;
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp58_ = media;
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (gee_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_tmp57_, GEE_TYPE_COLLECTION, GeeCollection), _tmp58_)) {
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp56_ = TRUE;
#line 5948 "MediaDataRepresentation.c"
				} else {
					gboolean _tmp59_;
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp59_ = flagged_altered;
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp56_ = _tmp59_;
#line 5955 "MediaDataRepresentation.c"
				}
#line 569 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				flagged_altered = _tmp56_;
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (media);
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (object);
#line 5963 "MediaDataRepresentation.c"
			}
#line 552 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_object_it);
#line 5967 "MediaDataRepresentation.c"
		}
	}
#line 573 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp60_ = import_roll_changed;
#line 573 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp60_) {
#line 574 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_source_collection_notify_import_roll_altered (self);
#line 5976 "MediaDataRepresentation.c"
	}
#line 576 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp61_ = flagged_altered;
#line 576 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp61_) {
#line 577 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_source_collection_notify_flagged_contents_altered (self);
#line 5984 "MediaDataRepresentation.c"
	}
#line 579 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	DATA_COLLECTION_CLASS (media_source_collection_parent_class)->notify_contents_altered (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollection), TYPE_DATA_COLLECTION, DataCollection), added, removed);
#line 5988 "MediaDataRepresentation.c"
}


static void
media_source_collection_on_master_replaced (MediaSourceCollection* self,
                                            MediaSource* media,
                                            GFile* old_file,
                                            GFile* new_file)
{
	gboolean is_removed = FALSE;
	GeeHashMap* _tmp0_;
	gboolean _tmp1_;
	GeeHashMap* _tmp2_;
#line 582 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 582 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (media));
#line 582 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (old_file));
#line 582 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (new_file));
#line 583 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->by_master_file;
#line 583 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), old_file, NULL);
#line 583 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	is_removed = _tmp1_;
#line 584 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_assert (is_removed, "is_removed");
#line 586 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = self->priv->by_master_file;
#line 586 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), new_file, media);
#line 588 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_emit (self, media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MASTER_FILE_REPLACED_SIGNAL], 0, media, old_file, new_file);
#line 6024 "MediaDataRepresentation.c"
}


MediaSource*
media_source_collection_fetch_by_master_file (MediaSourceCollection* self,
                                              GFile* file)
{
	MediaSource* result = NULL;
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
#line 591 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 591 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 592 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->by_master_file;
#line 592 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), file);
#line 592 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = (MediaSource*) _tmp1_;
#line 592 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6047 "MediaDataRepresentation.c"
}


static MediaSource*
media_source_collection_real_fetch_by_source_id (MediaSourceCollection* self,
                                                 const gchar* source_id)
{
	MediaSource* result = NULL;
	gchar** components = NULL;
	gchar** _tmp0_;
	gchar** _tmp1_;
	gint components_length1;
	gint _components_size_;
	const gchar* _tmp2_;
	MediaSource* _tmp3_;
#line 595 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (source_id != NULL, NULL);
#line 596 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_ = g_strsplit (source_id, "-", 0);
#line 596 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	components = _tmp1_;
#line 596 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	components_length1 = _vala_array_length (_tmp0_);
#line 596 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_components_size_ = components_length1;
#line 597 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_assert (components_length1 == 2, "components.length == 2");
#line 599 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = components[1];
#line 599 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = media_source_collection_fetch_by_numeric_id (self, parse_int64 (_tmp2_, 16));
#line 599 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp3_;
#line 599 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	components = (_vala_array_free (components, components_length1, (GDestroyNotify) g_free), NULL);
#line 599 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6085 "MediaDataRepresentation.c"
}


MediaSource*
media_source_collection_fetch_by_source_id (MediaSourceCollection* self,
                                            const gchar* source_id)
{
#line 595 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 595 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->fetch_by_source_id (self, source_id);
#line 6097 "MediaDataRepresentation.c"
}


static GeeCollection*
media_source_collection_real_get_event_source_ids (MediaSourceCollection* self,
                                                   EventID* event_id)
{
#line 602 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_critical ("Type `%s' does not implement abstract method `media_source_collection_get_event_source_ids'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
#line 602 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 6109 "MediaDataRepresentation.c"
}


GeeCollection*
media_source_collection_get_event_source_ids (MediaSourceCollection* self,
                                              EventID* event_id)
{
#line 602 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 602 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->get_event_source_ids (self, event_id);
#line 6121 "MediaDataRepresentation.c"
}


GeeCollection*
media_source_collection_get_trashcan_contents (MediaSourceCollection* self)
{
	GeeCollection* result = NULL;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
	GeeCollection* _tmp2_;
	GeeCollection* _tmp3_;
#line 604 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_get_trashcan (self);
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = source_holding_tank_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank));
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection);
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (_tmp1_);
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp3_;
#line 605 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6149 "MediaDataRepresentation.c"
}


GeeCollection*
media_source_collection_get_offline_bin_contents (MediaSourceCollection* self)
{
	GeeCollection* result = NULL;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
	GeeCollection* _tmp2_;
	GeeCollection* _tmp3_;
#line 608 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_get_offline_bin (self);
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = source_holding_tank_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank));
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection);
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (_tmp1_);
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp3_;
#line 609 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6177 "MediaDataRepresentation.c"
}


GeeCollection*
media_source_collection_get_flagged (MediaSourceCollection* self)
{
	GeeCollection* result = NULL;
	GeeSet* _tmp0_;
	GeeSet* _tmp1_;
	GeeSet* _tmp2_;
#line 612 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 613 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->flagged;
#line 613 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_set_get_read_only_view (_tmp0_);
#line 613 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = _tmp1_;
#line 613 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection);
#line 613 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6200 "MediaDataRepresentation.c"
}


GeeSortedSet*
media_source_collection_get_import_roll_ids (MediaSourceCollection* self)
{
	GeeSortedSet* result = NULL;
	GeeTreeSet* _tmp0_;
	GeeSortedSet* _tmp1_;
#line 617 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 618 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->sorted_import_ids;
#line 618 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_SORTED_SET, GeeSortedSet));
#line 618 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 618 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6220 "MediaDataRepresentation.c"
}


ImportID*
media_source_collection_get_last_import_id (MediaSourceCollection* self)
{
	ImportID* result = NULL;
	ImportID* _tmp0_ = NULL;
	GeeTreeSet* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
#line 621 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = self->priv->sorted_import_ids;
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = _tmp2_;
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp3_ != 0) {
#line 6242 "MediaDataRepresentation.c"
		GeeTreeSet* _tmp4_;
		gpointer _tmp5_;
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = self->priv->sorted_import_ids;
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = gee_abstract_sorted_set_last (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSet));
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_import_id_free0 (_tmp0_);
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = (ImportID*) _tmp5_;
#line 6253 "MediaDataRepresentation.c"
	} else {
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_import_id_free0 (_tmp0_);
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = NULL;
#line 6259 "MediaDataRepresentation.c"
	}
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp0_;
#line 622 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6265 "MediaDataRepresentation.c"
}


GeeCollection*
media_source_collection_get_import_roll (MediaSourceCollection* self,
                                         ImportID* import_id)
{
	GeeCollection* result = NULL;
	GeeMultiMap* _tmp0_;
	ImportID _tmp1_;
	GeeCollection* _tmp2_;
#line 625 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 625 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (import_id != NULL, NULL);
#line 626 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->import_rolls;
#line 626 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = *import_id;
#line 626 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = gee_multi_map_get (_tmp0_, &_tmp1_);
#line 626 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp2_;
#line 626 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6291 "MediaDataRepresentation.c"
}


void
media_source_collection_add_many_to_trash (MediaSourceCollection* self,
                                           GeeCollection* sources)
{
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
#line 629 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 629 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (sources));
#line 630 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_get_trashcan (self);
#line 630 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 630 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	source_holding_tank_add_many (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), sources);
#line 630 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (_tmp1_);
#line 6313 "MediaDataRepresentation.c"
}


void
media_source_collection_add_many_to_offline (MediaSourceCollection* self,
                                             GeeCollection* sources)
{
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
#line 633 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 633 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (sources));
#line 634 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_get_offline_bin (self);
#line 634 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 634 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	source_holding_tank_add_many (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), sources);
#line 634 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (_tmp1_);
#line 6335 "MediaDataRepresentation.c"
}


gint
media_source_collection_get_trashcan_count (MediaSourceCollection* self)
{
	gint result = 0;
	MediaSourceHoldingTank* _tmp0_;
	MediaSourceHoldingTank* _tmp1_;
	gint _tmp2_;
#line 637 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), 0);
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_source_collection_get_trashcan (self);
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = source_holding_tank_get_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank));
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (_tmp1_);
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp2_;
#line 638 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6360 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_import_many (MediaSourceCollection* self,
                                          GeeCollection* media)
{
	GeeCollection* _tmp0_;
	GeeCollection* _tmp1_;
#line 644 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 645 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_notify_media_import_starting (self, media);
#line 647 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = data_collection_add_many (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATA_COLLECTION, DataCollection), media, NULL, NULL);
#line 647 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 647 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp1_);
#line 649 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_postprocess_imported_media (self, media);
#line 651 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_notify_media_import_completed (self, media);
#line 6384 "MediaDataRepresentation.c"
}


void
media_source_collection_import_many (MediaSourceCollection* self,
                                     GeeCollection* media)
{
#line 644 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 644 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->import_many (self, media);
#line 6396 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_postprocess_imported_media (MediaSourceCollection* self,
                                                         GeeCollection* media)
{
#line 656 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 6406 "MediaDataRepresentation.c"
}


void
media_source_collection_postprocess_imported_media (MediaSourceCollection* self,
                                                    GeeCollection* media)
{
#line 656 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 656 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->postprocess_imported_media (self, media);
#line 6418 "MediaDataRepresentation.c"
}


static gboolean
_aggregate_progress_monitor_monitor_progress_monitor (guint64 current,
                                                      guint64 total,
                                                      gboolean do_event_loop,
                                                      gpointer self)
{
	gboolean result;
	result = aggregate_progress_monitor_monitor ((AggregateProgressMonitor*) self, current, total);
#line 691 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 6432 "MediaDataRepresentation.c"
}


void
media_source_collection_remove_from_app (MediaSourceCollection* self,
                                         GeeCollection* sources,
                                         gboolean delete_backing,
                                         ProgressMonitor monitor,
                                         void* monitor_target,
                                         GeeList* not_removed)
{
	GeeHashSet* _tmp0_ = NULL;
	GeeHashSet* to_tombstone = NULL;
	GeeHashSet* _tmp2_;
	GeeArrayList* trashed = NULL;
	GeeArrayList* _tmp3_;
	GeeArrayList* offlined = NULL;
	GeeArrayList* _tmp4_;
	GeeArrayList* not_trashed = NULL;
	GeeArrayList* _tmp5_;
	gint total_count = 0;
	gint _tmp21_;
	gint _tmp22_;
	gint _tmp23_;
	GeeArrayList* _tmp24_;
	gint _tmp25_;
	gint _tmp26_;
	GeeArrayList* _tmp27_;
	gint _tmp28_;
	gint _tmp29_;
	GeeArrayList* _tmp30_;
	gint _tmp31_;
	gint _tmp32_;
	AggregateProgressMonitor* agg_monitor = NULL;
	GeeArrayList* _tmp36_;
	gint _tmp37_;
	gint _tmp38_;
	GeeArrayList* _tmp42_;
	gint _tmp43_;
	gint _tmp44_;
	GeeArrayList* _tmp48_;
	gint _tmp49_;
	gint _tmp50_;
	gboolean _tmp54_ = FALSE;
	GeeHashSet* _tmp55_;
	GError * _inner_error_ = NULL;
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((sources == NULL) || GEE_IS_COLLECTION (sources));
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((not_removed == NULL) || GEE_IS_LIST (not_removed));
#line 664 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_assert (sources != NULL, "sources != null");
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!delete_backing) {
#line 6489 "MediaDataRepresentation.c"
		GeeHashSet* _tmp1_;
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp0_);
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = _tmp1_;
#line 6497 "MediaDataRepresentation.c"
	} else {
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp0_);
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = NULL;
#line 6503 "MediaDataRepresentation.c"
	}
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = _g_object_ref0 (_tmp0_);
#line 666 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	to_tombstone = _tmp2_;
#line 669 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 669 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	trashed = _tmp3_;
#line 670 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 670 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	offlined = _tmp4_;
#line 671 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 671 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	not_trashed = _tmp5_;
#line 6521 "MediaDataRepresentation.c"
	{
		GeeIterator* _source_it = NULL;
		GeeIterator* _tmp6_;
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp6_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (sources, GEE_TYPE_ITERABLE, GeeIterable));
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_it = _tmp6_;
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 6531 "MediaDataRepresentation.c"
			GeeIterator* _tmp7_;
			MediaSource* source = NULL;
			GeeIterator* _tmp8_;
			gpointer _tmp9_;
			MediaSource* _tmp10_;
			GeeHashSet* _tmp18_;
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = _source_it;
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp7_)) {
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 6544 "MediaDataRepresentation.c"
			}
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = _source_it;
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = gee_iterator_get (_tmp8_);
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			source = (MediaSource*) _tmp9_;
#line 673 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp10_ = source;
#line 673 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (media_source_is_trashed (_tmp10_)) {
#line 6556 "MediaDataRepresentation.c"
				GeeArrayList* _tmp11_;
				MediaSource* _tmp12_;
#line 674 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp11_ = trashed;
#line 674 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp12_ = source;
#line 674 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp12_);
#line 6565 "MediaDataRepresentation.c"
			} else {
				MediaSource* _tmp13_;
#line 675 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp13_ = source;
#line 675 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (media_source_is_offline (_tmp13_)) {
#line 6572 "MediaDataRepresentation.c"
					GeeArrayList* _tmp14_;
					MediaSource* _tmp15_;
#line 676 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp14_ = offlined;
#line 676 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp15_ = source;
#line 676 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp15_);
#line 6581 "MediaDataRepresentation.c"
				} else {
					GeeArrayList* _tmp16_;
					MediaSource* _tmp17_;
#line 678 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp16_ = not_trashed;
#line 678 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp17_ = source;
#line 678 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp17_);
#line 6591 "MediaDataRepresentation.c"
				}
			}
#line 680 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp18_ = to_tombstone;
#line 680 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp18_ != NULL) {
#line 6598 "MediaDataRepresentation.c"
				GeeHashSet* _tmp19_;
				MediaSource* _tmp20_;
#line 681 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp19_ = to_tombstone;
#line 681 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp20_ = source;
#line 681 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp20_);
#line 6607 "MediaDataRepresentation.c"
			}
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (source);
#line 6611 "MediaDataRepresentation.c"
		}
#line 672 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_source_it);
#line 6615 "MediaDataRepresentation.c"
	}
#line 684 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp21_ = gee_collection_get_size (sources);
#line 684 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp22_ = _tmp21_;
#line 684 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	total_count = _tmp22_;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp23_ = total_count;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp24_ = trashed;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp25_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp26_ = _tmp25_;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp27_ = offlined;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp28_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp29_ = _tmp28_;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp30_ = not_trashed;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp31_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp32_ = _tmp31_;
#line 685 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_vala_assert (_tmp23_ == ((_tmp26_ + _tmp29_) + _tmp32_), "total_count == (trashed.size + offlined.size + not_trashed.size)");
#line 688 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	agg_monitor = NULL;
#line 689 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (monitor != NULL) {
#line 6649 "MediaDataRepresentation.c"
		gint _tmp33_;
		AggregateProgressMonitor* _tmp34_;
		AggregateProgressMonitor* _tmp35_;
#line 690 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp33_ = total_count;
#line 690 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp34_ = aggregate_progress_monitor_new ((guint64) _tmp33_, monitor, monitor_target);
#line 690 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_aggregate_progress_monitor_unref0 (agg_monitor);
#line 690 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		agg_monitor = _tmp34_;
#line 691 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp35_ = agg_monitor;
#line 691 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		monitor = _aggregate_progress_monitor_monitor_progress_monitor;
#line 691 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		monitor_target = _tmp35_;
#line 6667 "MediaDataRepresentation.c"
	}
#line 694 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp36_ = trashed;
#line 694 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp37_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 694 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp38_ = _tmp37_;
#line 694 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp38_ > 0) {
#line 6677 "MediaDataRepresentation.c"
		MediaSourceHoldingTank* _tmp39_;
		MediaSourceHoldingTank* _tmp40_;
		GeeArrayList* _tmp41_;
#line 695 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp39_ = media_source_collection_get_trashcan (self);
#line 695 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp40_ = _tmp39_;
#line 695 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp41_ = trashed;
#line 695 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		source_holding_tank_destroy_orphans (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, GEE_TYPE_LIST, GeeList), delete_backing, monitor, monitor_target, not_removed);
#line 695 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_holding_tank_unref0 (_tmp40_);
#line 6691 "MediaDataRepresentation.c"
	}
#line 697 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp42_ = offlined;
#line 697 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp43_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 697 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp44_ = _tmp43_;
#line 697 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp44_ > 0) {
#line 6701 "MediaDataRepresentation.c"
		MediaSourceHoldingTank* _tmp45_;
		MediaSourceHoldingTank* _tmp46_;
		GeeArrayList* _tmp47_;
#line 698 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp45_ = media_source_collection_get_offline_bin (self);
#line 698 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp46_ = _tmp45_;
#line 698 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp47_ = offlined;
#line 698 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		source_holding_tank_destroy_orphans (G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, TYPE_SOURCE_HOLDING_TANK, SourceHoldingTank), G_TYPE_CHECK_INSTANCE_CAST (_tmp47_, GEE_TYPE_LIST, GeeList), delete_backing, monitor, monitor_target, not_removed);
#line 698 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_holding_tank_unref0 (_tmp46_);
#line 6715 "MediaDataRepresentation.c"
	}
#line 701 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp48_ = not_trashed;
#line 701 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp49_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 701 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp50_ = _tmp49_;
#line 701 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp50_ > 0) {
#line 6725 "MediaDataRepresentation.c"
		GeeArrayList* _tmp51_;
		Marker* _tmp52_;
		Marker* _tmp53_;
#line 702 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp51_ = not_trashed;
#line 702 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp52_ = data_collection_mark_many (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, GEE_TYPE_COLLECTION, GeeCollection));
#line 702 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp53_ = _tmp52_;
#line 702 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp53_, delete_backing, monitor, monitor_target, not_removed);
#line 702 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp53_);
#line 6739 "MediaDataRepresentation.c"
	}
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp55_ = to_tombstone;
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp55_ != NULL) {
#line 6745 "MediaDataRepresentation.c"
		GeeHashSet* _tmp56_;
		gint _tmp57_;
		gint _tmp58_;
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp56_ = to_tombstone;
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp57_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp58_ = _tmp57_;
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp54_ = _tmp58_ > 0;
#line 6757 "MediaDataRepresentation.c"
	} else {
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp54_ = FALSE;
#line 6761 "MediaDataRepresentation.c"
	}
#line 704 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp54_) {
#line 6765 "MediaDataRepresentation.c"
		{
			GeeHashSet* _tmp59_;
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp59_ = to_tombstone;
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			tombstone_entomb_many_sources (G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, GEE_TYPE_COLLECTION, GeeCollection), TOMBSTONE_REASON_REMOVED_BY_USER, &_inner_error_);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (_inner_error_->domain == DATABASE_ERROR) {
#line 6776 "MediaDataRepresentation.c"
					goto __catch574_database_error;
				}
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_aggregate_progress_monitor_unref0 (agg_monitor);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (not_trashed);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (offlined);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (trashed);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (to_tombstone);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_tmp0_);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_clear_error (&_inner_error_);
#line 706 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return;
#line 6797 "MediaDataRepresentation.c"
			}
		}
		goto __finally574;
		__catch574_database_error:
		{
			GError* err = NULL;
			GError* _tmp60_;
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			err = _inner_error_;
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_inner_error_ = NULL;
#line 708 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp60_ = err;
#line 708 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			app_window_database_error (_tmp60_);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_error_free0 (err);
#line 6815 "MediaDataRepresentation.c"
		}
		__finally574:
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_aggregate_progress_monitor_unref0 (agg_monitor);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (not_trashed);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (offlined);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (trashed);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (to_tombstone);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_tmp0_);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			g_clear_error (&_inner_error_);
#line 705 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			return;
#line 6838 "MediaDataRepresentation.c"
		}
	}
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_aggregate_progress_monitor_unref0 (agg_monitor);
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (not_trashed);
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (offlined);
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (trashed);
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (to_tombstone);
#line 662 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp0_);
#line 6853 "MediaDataRepresentation.c"
}


void
media_source_collection_delete_backing_files (MediaSourceCollection* self,
                                              GeeCollection* sources,
                                              ProgressMonitor monitor,
                                              void* monitor_target,
                                              GeeList* not_deleted)
{
	gint total_count = 0;
	gint _tmp0_;
	gint _tmp1_;
	gint i = 0;
	GError * _inner_error_ = NULL;
#line 715 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (self));
#line 715 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (sources));
#line 715 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((not_deleted == NULL) || GEE_IS_LIST (not_deleted));
#line 717 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_collection_get_size (sources);
#line 717 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 717 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	total_count = _tmp1_;
#line 718 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	i = 1;
#line 6883 "MediaDataRepresentation.c"
	{
		GeeIterator* _source_it = NULL;
		GeeIterator* _tmp2_;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (sources, GEE_TYPE_ITERABLE, GeeIterable));
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_source_it = _tmp2_;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 6893 "MediaDataRepresentation.c"
			GeeIterator* _tmp3_;
			MediaSource* source = NULL;
			GeeIterator* _tmp4_;
			gpointer _tmp5_;
			GFile* file = NULL;
			MediaSource* _tmp6_;
			GFile* _tmp7_;
			GFile* masterfile = NULL;
			MediaSource* _tmp14_;
			GFile* _tmp15_;
			GFile* _tmp16_;
			gboolean deleted = FALSE;
			GFile* _tmp24_;
			gboolean _tmp25_ = FALSE;
			gboolean _tmp26_;
			gint _tmp30_;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp3_ = _source_it;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp3_)) {
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 6916 "MediaDataRepresentation.c"
			}
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _source_it;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = gee_iterator_get (_tmp4_);
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			source = (MediaSource*) _tmp5_;
#line 721 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = source;
#line 721 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = media_source_get_file (_tmp6_);
#line 721 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			file = _tmp7_;
#line 6930 "MediaDataRepresentation.c"
			{
				GFile* _tmp8_;
#line 723 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp8_ = file;
#line 723 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_file_delete (_tmp8_, NULL, &_inner_error_);
#line 723 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 6939 "MediaDataRepresentation.c"
					goto __catch575_g_error;
				}
			}
			goto __finally575;
			__catch575_g_error:
			{
				GError* err = NULL;
				GFile* _tmp9_;
				gchar* _tmp10_;
				gchar* _tmp11_;
				GError* _tmp12_;
				const gchar* _tmp13_;
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				err = _inner_error_;
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_inner_error_ = NULL;
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp9_ = file;
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp10_ = g_file_get_path (_tmp9_);
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp11_ = _tmp10_;
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp12_ = err;
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp13_ = _tmp12_->message;
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_debug ("MediaDataRepresentation.vala:726: Exception deleting file %s: %s", _tmp11_, _tmp13_);
#line 726 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_free0 (_tmp11_);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_error_free0 (err);
#line 6972 "MediaDataRepresentation.c"
			}
			__finally575:
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (file);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (source);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_source_it);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				g_clear_error (&_inner_error_);
#line 722 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return;
#line 6989 "MediaDataRepresentation.c"
			}
#line 729 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp14_ = source;
#line 729 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp15_ = media_source_get_master_file (_tmp14_);
#line 729 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			masterfile = _tmp15_;
#line 730 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp16_ = masterfile;
#line 730 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp16_ != NULL) {
#line 7001 "MediaDataRepresentation.c"
				{
					GFile* _tmp17_;
#line 732 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp17_ = masterfile;
#line 732 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					g_file_delete (_tmp17_, NULL, &_inner_error_);
#line 732 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 7010 "MediaDataRepresentation.c"
						goto __catch576_g_error;
					}
				}
				goto __finally576;
				__catch576_g_error:
				{
					GError* err = NULL;
					GError* _tmp18_;
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					err = _inner_error_;
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_inner_error_ = NULL;
#line 734 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_tmp18_ = err;
#line 734 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					if (!g_error_matches (_tmp18_, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) {
#line 7027 "MediaDataRepresentation.c"
						GFile* _tmp19_;
						gchar* _tmp20_;
						gchar* _tmp21_;
						GError* _tmp22_;
						const gchar* _tmp23_;
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp19_ = masterfile;
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp20_ = g_file_get_path (_tmp19_);
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp21_ = _tmp20_;
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp22_ = err;
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_tmp23_ = _tmp22_->message;
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						g_debug ("MediaDataRepresentation.vala:735: Exception deleting master file %s: %" \
"s", _tmp21_, _tmp23_);
#line 735 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
						_g_free0 (_tmp21_);
#line 7047 "MediaDataRepresentation.c"
					}
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_error_free0 (err);
#line 7051 "MediaDataRepresentation.c"
				}
				__finally576:
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (masterfile);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (file);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (source);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					_g_object_unref0 (_source_it);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					g_clear_error (&_inner_error_);
#line 731 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
					return;
#line 7070 "MediaDataRepresentation.c"
				}
			}
#line 740 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp24_ = file;
#line 740 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			deleted = !g_file_query_exists (_tmp24_, NULL);
#line 741 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp26_ = deleted;
#line 741 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!_tmp26_) {
#line 741 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp25_ = NULL != not_deleted;
#line 7083 "MediaDataRepresentation.c"
			} else {
#line 741 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp25_ = FALSE;
#line 7087 "MediaDataRepresentation.c"
			}
#line 741 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp25_) {
#line 7091 "MediaDataRepresentation.c"
				MediaSource* _tmp27_;
#line 742 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp27_ = source;
#line 742 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (not_deleted, GEE_TYPE_COLLECTION, GeeCollection), _tmp27_);
#line 7097 "MediaDataRepresentation.c"
			}
#line 745 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (monitor != NULL) {
#line 7101 "MediaDataRepresentation.c"
				gint _tmp28_;
				gint _tmp29_;
#line 746 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp28_ = i;
#line 746 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp29_ = total_count;
#line 746 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				monitor ((guint64) _tmp28_, (guint64) _tmp29_, TRUE, monitor_target);
#line 7110 "MediaDataRepresentation.c"
			}
#line 748 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp30_ = i;
#line 748 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			i = _tmp30_ + 1;
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (masterfile);
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (file);
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (source);
#line 7122 "MediaDataRepresentation.c"
		}
#line 720 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_source_it);
#line 7126 "MediaDataRepresentation.c"
	}
}


TransactionController*
media_source_collection_get_transaction_controller (MediaSourceCollection* self)
{
#line 344 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_SOURCE_COLLECTION (self), NULL);
#line 344 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return MEDIA_SOURCE_COLLECTION_GET_CLASS (self)->get_transaction_controller (self);
#line 7138 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_media_import_starting (MediaSourceCollection* self,
                                                    GeeCollection* media)
{
#line 357 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 7148 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_media_import_completed (MediaSourceCollection* self,
                                                     GeeCollection* media)
{
#line 364 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (GEE_IS_COLLECTION (media));
#line 7158 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_master_file_replaced (MediaSourceCollection* self,
                                                   MediaSource* media,
                                                   GFile* old_file,
                                                   GFile* new_file)
{
#line 367 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE (media));
#line 367 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (old_file));
#line 367 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_IS_FILE (new_file));
#line 7174 "MediaDataRepresentation.c"
}


static void
g_cclosure_user_marshal_VOID__OBJECT_OBJECT_OBJECT (GClosure * closure,
                                                    GValue * return_value,
                                                    guint n_param_values,
                                                    const GValue * param_values,
                                                    gpointer invocation_hint,
                                                    gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT_OBJECT) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer arg_3, gpointer data2);
	register GMarshalFunc_VOID__OBJECT_OBJECT_OBJECT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (n_param_values == 4);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data1 = closure->data;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data2 = param_values->data[0].v_pointer;
#line 7200 "MediaDataRepresentation.c"
	} else {
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data1 = param_values->data[0].v_pointer;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		data2 = closure->data;
#line 7206 "MediaDataRepresentation.c"
	}
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	callback = (GMarshalFunc_VOID__OBJECT_OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	callback (data1, g_value_get_object (param_values + 1), g_value_get_object (param_values + 2), g_value_get_object (param_values + 3), data2);
#line 7212 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_trashcan_contents_altered (MediaSourceCollection* self,
                                                        GeeCollection* added,
                                                        GeeCollection* removed)
{
#line 370 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((added == NULL) || GEE_IS_COLLECTION (added));
#line 370 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((removed == NULL) || GEE_IS_COLLECTION (removed));
#line 7225 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_import_roll_altered (MediaSourceCollection* self)
{
}


static void
media_source_collection_real_offline_contents_altered (MediaSourceCollection* self,
                                                       GeeCollection* added,
                                                       GeeCollection* removed)
{
#line 377 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((added == NULL) || GEE_IS_COLLECTION (added));
#line 377 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail ((removed == NULL) || GEE_IS_COLLECTION (removed));
#line 7244 "MediaDataRepresentation.c"
}


static void
media_source_collection_real_flagged_contents_altered (MediaSourceCollection* self)
{
}


static void
media_source_collection_class_init (MediaSourceCollectionClass * klass)
{
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_parent_class = g_type_class_peek_parent (klass);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataCollectionClass *) klass)->finalize = media_source_collection_finalize;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_type_class_add_private (klass, sizeof (MediaSourceCollectionPrivate));
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->create_trashcan = (MediaSourceHoldingTank* (*) (MediaSourceCollection *)) media_source_collection_real_create_trashcan;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->create_offline_bin = (MediaSourceHoldingTank* (*) (MediaSourceCollection *)) media_source_collection_real_create_offline_bin;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->create_media_monitor = (MediaMonitor* (*) (MediaSourceCollection *, Workers*, GCancellable*)) media_source_collection_real_create_media_monitor;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->get_typename = (gchar* (*) (MediaSourceCollection *)) media_source_collection_real_get_typename;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->is_file_recognized = (gboolean (*) (MediaSourceCollection *, GFile*)) media_source_collection_real_is_file_recognized;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->fetch_by_numeric_id = (MediaSource* (*) (MediaSourceCollection *, gint64)) media_source_collection_real_fetch_by_numeric_id;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->notify_import_roll_altered = (void (*) (MediaSourceCollection *)) media_source_collection_real_notify_import_roll_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->notify_flagged_contents_altered = (void (*) (MediaSourceCollection *)) media_source_collection_real_notify_flagged_contents_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->notify_media_import_starting = (void (*) (MediaSourceCollection *, GeeCollection*)) media_source_collection_real_notify_media_import_starting;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->notify_media_import_completed = (void (*) (MediaSourceCollection *, GeeCollection*)) media_source_collection_real_notify_media_import_completed;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataCollectionClass *) klass)->items_altered = (void (*) (DataCollection *, GeeMap*)) media_source_collection_real_items_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((DataCollectionClass *) klass)->notify_contents_altered = (void (*) (DataCollection *, GeeIterable*, GeeIterable*)) media_source_collection_real_notify_contents_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->fetch_by_source_id = (MediaSource* (*) (MediaSourceCollection *, const gchar*)) media_source_collection_real_fetch_by_source_id;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->get_event_source_ids = (GeeCollection* (*) (MediaSourceCollection *, EventID*)) media_source_collection_real_get_event_source_ids;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->import_many = (void (*) (MediaSourceCollection *, GeeCollection*)) media_source_collection_real_import_many;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->postprocess_imported_media = (void (*) (MediaSourceCollection *, GeeCollection*)) media_source_collection_real_postprocess_imported_media;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->media_import_starting = media_source_collection_real_media_import_starting;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->media_import_completed = media_source_collection_real_media_import_completed;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->master_file_replaced = media_source_collection_real_master_file_replaced;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->trashcan_contents_altered = media_source_collection_real_trashcan_contents_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->import_roll_altered = media_source_collection_real_import_roll_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->offline_contents_altered = media_source_collection_real_offline_contents_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaSourceCollectionClass *) klass)->flagged_contents_altered = media_source_collection_real_flagged_contents_altered;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_STARTING_SIGNAL] = g_signal_new ("media-import-starting", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, media_import_starting), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GEE_TYPE_COLLECTION);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MEDIA_IMPORT_COMPLETED_SIGNAL] = g_signal_new ("media-import-completed", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, media_import_completed), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GEE_TYPE_COLLECTION);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_MASTER_FILE_REPLACED_SIGNAL] = g_signal_new ("master-file-replaced", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, master_file_replaced), NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT_OBJECT, G_TYPE_NONE, 3, TYPE_MEDIA_SOURCE, g_file_get_type (), g_file_get_type ());
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_TRASHCAN_CONTENTS_ALTERED_SIGNAL] = g_signal_new ("trashcan-contents-altered", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, trashcan_contents_altered), NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, GEE_TYPE_COLLECTION, GEE_TYPE_COLLECTION);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_IMPORT_ROLL_ALTERED_SIGNAL] = g_signal_new ("import-roll-altered", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, import_roll_altered), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_OFFLINE_CONTENTS_ALTERED_SIGNAL] = g_signal_new ("offline-contents-altered", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, offline_contents_altered), NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, GEE_TYPE_COLLECTION, GEE_TYPE_COLLECTION);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_source_collection_signals[MEDIA_SOURCE_COLLECTION_FLAGGED_CONTENTS_ALTERED_SIGNAL] = g_signal_new ("flagged-contents-altered", TYPE_MEDIA_SOURCE_COLLECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (MediaSourceCollectionClass, flagged_contents_altered), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
#line 7323 "MediaDataRepresentation.c"
}


static void
media_source_collection_instance_init (MediaSourceCollection * self)
{
	GeeHashMap* _tmp0_;
	GeeTreeMultiMap* _tmp1_;
	GeeTreeSet* _tmp2_;
	GeeHashSet* _tmp3_;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv = MEDIA_SOURCE_COLLECTION_GET_PRIVATE (self);
#line 346 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->trashcan = NULL;
#line 347 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->offline_bin = NULL;
#line 348 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_hash_map_new (g_file_get_type (), (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _file_hash_gee_hash_data_func, NULL, NULL, _file_equal_gee_equal_data_func, NULL, NULL, NULL, NULL, NULL);
#line 348 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->by_master_file = _tmp0_;
#line 350 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_tree_multi_map_new (TYPE_IMPORT_ID, (GBoxedCopyFunc) import_id_dup, (GDestroyNotify) import_id_free, TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _import_id_compare_func_gcompare_data_func, NULL, NULL, NULL, NULL, NULL);
#line 350 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->import_rolls = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_MULTI_MAP, GeeMultiMap);
#line 352 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = gee_tree_set_new (TYPE_IMPORT_ID, (GBoxedCopyFunc) import_id_dup, (GDestroyNotify) import_id_free, _import_id_compare_func_gcompare_data_func, NULL, NULL);
#line 352 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->sorted_import_ids = _tmp2_;
#line 353 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
#line 353 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->flagged = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_SET, GeeSet);
#line 7356 "MediaDataRepresentation.c"
}


static void
media_source_collection_finalize (DataCollection * obj)
{
	MediaSourceCollection * self;
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection);
#line 346 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (self->priv->trashcan);
#line 347 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_source_holding_tank_unref0 (self->priv->offline_bin);
#line 348 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->by_master_file);
#line 350 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->import_rolls);
#line 352 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->sorted_import_ids);
#line 353 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->flagged);
#line 343 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	DATA_COLLECTION_CLASS (media_source_collection_parent_class)->finalize (obj);
#line 7380 "MediaDataRepresentation.c"
}


GType
media_source_collection_get_type (void)
{
	static volatile gsize media_source_collection_type_id__volatile = 0;
	if (g_once_init_enter (&media_source_collection_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (MediaSourceCollectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) media_source_collection_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MediaSourceCollection), 0, (GInstanceInitFunc) media_source_collection_instance_init, NULL };
		GType media_source_collection_type_id;
		media_source_collection_type_id = g_type_register_static (TYPE_DATABASE_SOURCE_COLLECTION, "MediaSourceCollection", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&media_source_collection_type_id__volatile, media_source_collection_type_id);
	}
	return media_source_collection_type_id__volatile;
}


static void
_media_collection_registry_on_init_done_application_init_done (Application* _sender,
                                                               gpointer self)
{
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_collection_registry_on_init_done ((MediaCollectionRegistry*) self);
#line 7404 "MediaDataRepresentation.c"
}


static MediaCollectionRegistry*
media_collection_registry_construct (GType object_type)
{
	MediaCollectionRegistry* self = NULL;
	Application* _tmp0_;
	Application* _tmp1_;
#line 762 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = (MediaCollectionRegistry*) g_type_create_instance (object_type);
#line 763 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = application_get_instance ();
#line 763 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 763 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_connect (_tmp1_, "init-done", (GCallback) _media_collection_registry_on_init_done_application_init_done, self);
#line 763 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_application_unref0 (_tmp1_);
#line 762 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self;
#line 7426 "MediaDataRepresentation.c"
}


static MediaCollectionRegistry*
media_collection_registry_new (void)
{
#line 762 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return media_collection_registry_construct (TYPE_MEDIA_COLLECTION_REGISTRY);
#line 7435 "MediaDataRepresentation.c"
}


static void
media_collection_registry_on_init_done (MediaCollectionRegistry* self)
{
	LibraryMonitor* library_monitor = NULL;
	GFile* _tmp0_;
	GFile* _tmp1_;
	gboolean _tmp2_;
	LibraryMonitor* _tmp3_;
	LibraryMonitor* _tmp4_;
	LibraryMonitorPool* _tmp5_;
	LibraryMonitorPool* _tmp6_;
#line 770 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = app_dirs_get_import_dir ();
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = commandline_options_no_runtime_monitoring;
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = library_monitor_new (_tmp1_, TRUE, !_tmp2_);
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = _tmp3_;
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp1_);
#line 772 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	library_monitor = _tmp4_;
#line 775 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = library_monitor_pool_get_instance ();
#line 775 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = _tmp5_;
#line 775 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	library_monitor_pool_replace (_tmp6_, library_monitor, MEDIA_COLLECTION_REGISTRY_LIBRARY_MONITOR_START_DELAY_MSEC);
#line 775 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_library_monitor_pool_unref0 (_tmp6_);
#line 770 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (library_monitor);
#line 7476 "MediaDataRepresentation.c"
}


static void
_media_collection_registry_on_import_directory_changed_configuration_facade_import_directory_changed (ConfigurationFacade* _sender,
                                                                                                      gpointer self)
{
#line 780 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_collection_registry_on_import_directory_changed ();
#line 7486 "MediaDataRepresentation.c"
}


void
media_collection_registry_init (void)
{
	MediaCollectionRegistry* _tmp0_;
	ConfigFacade* _tmp1_;
	ConfigFacade* _tmp2_;
#line 779 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_collection_registry_new ();
#line 779 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_media_collection_registry_unref0 (media_collection_registry_instance);
#line 779 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_collection_registry_instance = _tmp0_;
#line 780 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = config_facade_get_instance ();
#line 780 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = _tmp1_;
#line 780 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_connect (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), "import-directory-changed", (GCallback) _media_collection_registry_on_import_directory_changed_configuration_facade_import_directory_changed, NULL);
#line 780 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp2_);
#line 7510 "MediaDataRepresentation.c"
}


void
media_collection_registry_terminate (void)
{
	ConfigFacade* _tmp0_;
	ConfigFacade* _tmp1_;
	guint _tmp2_;
#line 784 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = config_facade_get_instance ();
#line 784 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 784 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_parse_name ("import-directory-changed", TYPE_CONFIGURATION_FACADE, &_tmp2_, NULL, FALSE);
#line 784 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _media_collection_registry_on_import_directory_changed_configuration_facade_import_directory_changed, NULL);
#line 784 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (_tmp1_);
#line 7530 "MediaDataRepresentation.c"
}


static void
media_collection_registry_on_import_directory_changed (void)
{
	GFile* import_dir = NULL;
	GFile* _tmp0_;
	LibraryMonitor* current = NULL;
	LibraryMonitorPool* _tmp1_;
	LibraryMonitorPool* _tmp2_;
	LibraryMonitor* _tmp3_;
	LibraryMonitor* _tmp4_;
	gboolean _tmp5_ = FALSE;
	LibraryMonitor* _tmp6_;
	LibraryMonitor* replacement = NULL;
	GFile* _tmp11_;
	gboolean _tmp12_;
	LibraryMonitor* _tmp13_;
	LibraryMonitorPool* _tmp14_;
	LibraryMonitorPool* _tmp15_;
	LibraryMonitor* _tmp16_;
#line 788 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = app_dirs_get_import_dir ();
#line 788 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	import_dir = _tmp0_;
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = library_monitor_pool_get_instance ();
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = _tmp1_;
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = library_monitor_pool_get_monitor (_tmp2_);
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp4_ = _tmp3_;
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_library_monitor_pool_unref0 (_tmp2_);
#line 790 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	current = _tmp4_;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = current;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp6_ != NULL) {
#line 7573 "MediaDataRepresentation.c"
		LibraryMonitor* _tmp7_;
		GFile* _tmp8_;
		GFile* _tmp9_;
		GFile* _tmp10_;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp7_ = current;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp8_ = directory_monitor_get_root (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DIRECTORY_MONITOR, DirectoryMonitor));
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp9_ = _tmp8_;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp10_ = import_dir;
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = g_file_equal (_tmp9_, _tmp10_);
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp9_);
#line 7590 "MediaDataRepresentation.c"
	} else {
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = FALSE;
#line 7594 "MediaDataRepresentation.c"
	}
#line 791 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp5_) {
#line 792 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (current);
#line 792 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (import_dir);
#line 792 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return;
#line 7604 "MediaDataRepresentation.c"
	}
#line 794 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp11_ = import_dir;
#line 794 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp12_ = commandline_options_no_runtime_monitoring;
#line 794 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp13_ = library_monitor_new (_tmp11_, TRUE, !_tmp12_);
#line 794 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	replacement = _tmp13_;
#line 796 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp14_ = library_monitor_pool_get_instance ();
#line 796 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp15_ = _tmp14_;
#line 796 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp16_ = replacement;
#line 796 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	library_monitor_pool_replace (_tmp15_, _tmp16_, MEDIA_COLLECTION_REGISTRY_LIBRARY_MONITOR_START_DELAY_MSEC);
#line 796 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_library_monitor_pool_unref0 (_tmp15_);
#line 797 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	library_files_select_copy_function ();
#line 787 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (replacement);
#line 787 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (current);
#line 787 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (import_dir);
#line 7632 "MediaDataRepresentation.c"
}


static gpointer
_media_collection_registry_ref0 (gpointer self)
{
#line 801 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? media_collection_registry_ref (self) : NULL;
#line 7641 "MediaDataRepresentation.c"
}


MediaCollectionRegistry*
media_collection_registry_get_instance (void)
{
	MediaCollectionRegistry* result = NULL;
	MediaCollectionRegistry* _tmp0_;
	MediaCollectionRegistry* _tmp1_;
#line 801 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_collection_registry_instance;
#line 801 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _media_collection_registry_ref0 (_tmp0_);
#line 801 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp1_;
#line 801 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 7659 "MediaDataRepresentation.c"
}


gchar*
media_collection_registry_get_typename_from_source_id (const gchar* source_id)
{
	gchar* result = NULL;
#line 804 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (source_id != NULL, NULL);
#line 807 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (g_str_has_prefix (source_id, PHOTO_TYPENAME)) {
#line 7671 "MediaDataRepresentation.c"
		gchar* _tmp0_;
#line 808 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = g_strdup (PHOTO_TYPENAME);
#line 808 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = _tmp0_;
#line 808 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 7679 "MediaDataRepresentation.c"
	} else {
		gchar** components = NULL;
		gchar** _tmp1_;
		gchar** _tmp2_;
		gint components_length1;
		gint _components_size_;
		gchar** _tmp3_;
		gint _tmp3__length1;
		gchar** _tmp4_;
		gint _tmp4__length1;
		const gchar* _tmp5_;
		gchar* _tmp6_;
#line 810 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = _tmp1_ = g_strsplit (source_id, "-", 0);
#line 810 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		components = _tmp2_;
#line 810 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		components_length1 = _vala_array_length (_tmp1_);
#line 810 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_components_size_ = components_length1;
#line 811 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = components;
#line 811 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3__length1 = components_length1;
#line 811 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_vala_assert (_tmp3__length1 == 2, "components.length == 2");
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = components;
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4__length1 = components_length1;
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp5_ = _tmp4_[0];
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp6_ = g_strdup (_tmp5_);
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = _tmp6_;
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		components = (_vala_array_free (components, components_length1, (GDestroyNotify) g_free), NULL);
#line 813 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 7720 "MediaDataRepresentation.c"
	}
}


void
media_collection_registry_register_collection (MediaCollectionRegistry* self,
                                               MediaSourceCollection* collection)
{
	GeeArrayList* _tmp0_;
	GeeHashMap* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 817 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 817 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_SOURCE_COLLECTION (collection));
#line 818 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->all;
#line 818 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), collection);
#line 819 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = self->priv->by_typename;
#line 819 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = media_source_collection_get_typename (collection);
#line 819 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = _tmp2_;
#line 819 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp3_, collection);
#line 819 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (_tmp3_);
#line 7751 "MediaDataRepresentation.c"
}


MediaSourceCollection*
media_collection_registry_get_collection (MediaCollectionRegistry* self,
                                          const gchar* typename)
{
	MediaSourceCollection* result = NULL;
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
#line 826 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 826 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (typename != NULL, NULL);
#line 827 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->by_typename;
#line 827 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), typename);
#line 827 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = (MediaSourceCollection*) _tmp1_;
#line 827 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 7774 "MediaDataRepresentation.c"
}


GeeCollection*
media_collection_registry_get_all (MediaCollectionRegistry* self)
{
	GeeCollection* result = NULL;
	GeeArrayList* _tmp0_;
	GeeBidirList* _tmp1_;
	GeeBidirList* _tmp2_;
#line 830 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 831 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = self->priv->all;
#line 831 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_abstract_bidir_list_get_read_only_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirList));
#line 831 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = _tmp1_;
#line 831 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection);
#line 831 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 7797 "MediaDataRepresentation.c"
}


void
media_collection_registry_freeze_all (MediaCollectionRegistry* self)
{
#line 834 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 7806 "MediaDataRepresentation.c"
	{
		GeeIterator* _sources_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_sources_it = _tmp3_;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 7827 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* sources = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			MediaSourceCollection* _tmp7_;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _sources_it;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 7839 "MediaDataRepresentation.c"
			}
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _sources_it;
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			sources = (MediaSourceCollection*) _tmp6_;
#line 836 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = sources;
#line 836 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			data_collection_freeze_notifications (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DATA_COLLECTION, DataCollection));
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (sources);
#line 7853 "MediaDataRepresentation.c"
		}
#line 835 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_sources_it);
#line 7857 "MediaDataRepresentation.c"
	}
}


void
media_collection_registry_thaw_all (MediaCollectionRegistry* self)
{
#line 839 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 7867 "MediaDataRepresentation.c"
	{
		GeeIterator* _sources_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_sources_it = _tmp3_;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 7888 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* sources = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			MediaSourceCollection* _tmp7_;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _sources_it;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 7900 "MediaDataRepresentation.c"
			}
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _sources_it;
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			sources = (MediaSourceCollection*) _tmp6_;
#line 841 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = sources;
#line 841 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			data_collection_thaw_notifications (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DATA_COLLECTION, DataCollection));
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (sources);
#line 7914 "MediaDataRepresentation.c"
		}
#line 840 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_sources_it);
#line 7918 "MediaDataRepresentation.c"
	}
}


void
media_collection_registry_begin_transaction_on_all (MediaCollectionRegistry* self)
{
#line 844 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 7928 "MediaDataRepresentation.c"
	{
		GeeIterator* _sources_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_sources_it = _tmp3_;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 7949 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* sources = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			MediaSourceCollection* _tmp7_;
			TransactionController* _tmp8_;
			TransactionController* _tmp9_;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _sources_it;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 7963 "MediaDataRepresentation.c"
			}
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _sources_it;
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			sources = (MediaSourceCollection*) _tmp6_;
#line 846 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = sources;
#line 846 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = media_source_collection_get_transaction_controller (_tmp7_);
#line 846 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = _tmp8_;
#line 846 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			transaction_controller_begin (_tmp9_);
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (sources);
#line 7981 "MediaDataRepresentation.c"
		}
#line 845 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_sources_it);
#line 7985 "MediaDataRepresentation.c"
	}
}


void
media_collection_registry_commit_transaction_on_all (MediaCollectionRegistry* self)
{
#line 849 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self));
#line 7995 "MediaDataRepresentation.c"
	{
		GeeIterator* _sources_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_sources_it = _tmp3_;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 8016 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* sources = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			MediaSourceCollection* _tmp7_;
			TransactionController* _tmp8_;
			TransactionController* _tmp9_;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _sources_it;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 8030 "MediaDataRepresentation.c"
			}
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _sources_it;
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			sources = (MediaSourceCollection*) _tmp6_;
#line 851 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = sources;
#line 851 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = media_source_collection_get_transaction_controller (_tmp7_);
#line 851 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = _tmp8_;
#line 851 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			transaction_controller_commit (_tmp9_);
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (sources);
#line 8048 "MediaDataRepresentation.c"
		}
#line 850 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_sources_it);
#line 8052 "MediaDataRepresentation.c"
	}
}


MediaSource*
media_collection_registry_fetch_media (MediaCollectionRegistry* self,
                                       const gchar* source_id)
{
	MediaSource* result = NULL;
	gchar* typename = NULL;
	gchar* _tmp0_;
	MediaSourceCollection* collection = NULL;
	const gchar* _tmp1_;
	MediaSourceCollection* _tmp2_;
	MediaSourceCollection* _tmp3_;
	MediaSourceCollection* _tmp5_;
	MediaSource* _tmp6_;
#line 854 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 854 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (source_id != NULL, NULL);
#line 855 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = media_collection_registry_get_typename_from_source_id (source_id);
#line 855 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	typename = _tmp0_;
#line 857 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = typename;
#line 857 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp2_ = media_collection_registry_get_collection (self, _tmp1_);
#line 857 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	collection = _tmp2_;
#line 858 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp3_ = collection;
#line 858 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp3_ == NULL) {
#line 8088 "MediaDataRepresentation.c"
		const gchar* _tmp4_;
#line 859 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = typename;
#line 859 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_critical ("MediaDataRepresentation.vala:859: source id '%s' has unrecognized medi" \
"a type '%s'", source_id, _tmp4_);
#line 860 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = NULL;
#line 860 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_data_collection_unref0 (collection);
#line 860 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_free0 (typename);
#line 860 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 8102 "MediaDataRepresentation.c"
	}
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp5_ = collection;
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp6_ = media_source_collection_fetch_by_source_id (_tmp5_, source_id);
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp6_;
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_data_collection_unref0 (collection);
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_free0 (typename);
#line 863 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 8116 "MediaDataRepresentation.c"
}


static gpointer
_import_id_dup0 (gpointer self)
{
#line 884 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return self ? import_id_dup (self) : NULL;
#line 8125 "MediaDataRepresentation.c"
}


ImportID*
media_collection_registry_get_last_import_id (MediaCollectionRegistry* self)
{
	ImportID* result = NULL;
	ImportID last_import_id = {0};
	ImportID _tmp15_;
	gint64 _tmp16_;
#line 866 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 867 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	import_id_init (&last_import_id, IMPORT_ID_INVALID);
#line 8140 "MediaDataRepresentation.c"
	{
		GeeIterator* _current_collection_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_current_collection_it = _tmp3_;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 8161 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* current_collection = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			ImportID* current_import_id = NULL;
			MediaSourceCollection* _tmp7_;
			ImportID* _tmp8_;
			ImportID* _tmp9_;
			ImportID* _tmp10_;
			gint64 _tmp11_;
			ImportID _tmp12_;
			gint64 _tmp13_;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _current_collection_it;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 8180 "MediaDataRepresentation.c"
			}
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _current_collection_it;
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			current_collection = (MediaSourceCollection*) _tmp6_;
#line 870 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = current_collection;
#line 870 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = media_source_collection_get_last_import_id (_tmp7_);
#line 870 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			current_import_id = _tmp8_;
#line 872 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = current_import_id;
#line 872 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp9_ == NULL) {
#line 873 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_import_id_free0 (current_import_id);
#line 873 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_data_collection_unref0 (current_collection);
#line 873 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				continue;
#line 8204 "MediaDataRepresentation.c"
			}
#line 875 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp10_ = current_import_id;
#line 875 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp11_ = (*_tmp10_).id;
#line 875 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = last_import_id;
#line 875 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp13_ = _tmp12_.id;
#line 875 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (_tmp11_ > _tmp13_) {
#line 8216 "MediaDataRepresentation.c"
				ImportID* _tmp14_;
#line 876 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_tmp14_ = current_import_id;
#line 876 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				last_import_id = *_tmp14_;
#line 8222 "MediaDataRepresentation.c"
			}
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_import_id_free0 (current_import_id);
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (current_collection);
#line 8228 "MediaDataRepresentation.c"
		}
#line 869 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_current_collection_it);
#line 8232 "MediaDataRepresentation.c"
	}
#line 881 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp15_ = last_import_id;
#line 881 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp16_ = _tmp15_.id;
#line 881 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (_tmp16_ == IMPORT_ID_INVALID) {
#line 882 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = NULL;
#line 882 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 8244 "MediaDataRepresentation.c"
	} else {
		ImportID* _tmp17_;
#line 884 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp17_ = _import_id_dup0 (&last_import_id);
#line 884 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = _tmp17_;
#line 884 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 8253 "MediaDataRepresentation.c"
	}
}


GeeCollection*
media_collection_registry_get_source_ids_for_event_id (MediaCollectionRegistry* self,
                                                       EventID* event_id)
{
	GeeCollection* result = NULL;
	GeeArrayList* _result_ = NULL;
	GeeArrayList* _tmp0_;
#line 887 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 887 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (event_id != NULL, NULL);
#line 888 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 888 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_result_ = _tmp0_;
#line 8273 "MediaDataRepresentation.c"
	{
		GeeIterator* _current_collection_it = NULL;
		GeeCollection* _tmp1_;
		GeeCollection* _tmp2_;
		GeeIterator* _tmp3_;
		GeeIterator* _tmp4_;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = media_collection_registry_get_all (self);
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = _tmp1_;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ITERABLE, GeeIterable));
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp4_ = _tmp3_;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp2_);
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_current_collection_it = _tmp4_;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 8294 "MediaDataRepresentation.c"
			GeeIterator* _tmp5_;
			MediaSourceCollection* current_collection = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			GeeArrayList* _tmp8_;
			MediaSourceCollection* _tmp9_;
			EventID _tmp10_;
			GeeCollection* _tmp11_;
			GeeCollection* _tmp12_;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _current_collection_it;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp5_)) {
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 8310 "MediaDataRepresentation.c"
			}
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = _current_collection_it;
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = gee_iterator_get (_tmp6_);
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			current_collection = (MediaSourceCollection*) _tmp7_;
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp8_ = _result_;
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp9_ = current_collection;
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp10_ = *event_id;
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp11_ = media_source_collection_get_event_source_ids (_tmp9_, &_tmp10_);
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp12_ = _tmp11_;
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			gee_array_list_add_all (_tmp8_, _tmp12_);
#line 891 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_g_object_unref0 (_tmp12_);
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (current_collection);
#line 8334 "MediaDataRepresentation.c"
		}
#line 890 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_current_collection_it);
#line 8338 "MediaDataRepresentation.c"
	}
#line 894 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_result_, GEE_TYPE_COLLECTION, GeeCollection);
#line 894 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 8344 "MediaDataRepresentation.c"
}


MediaSourceCollection*
media_collection_registry_get_collection_for_file (MediaCollectionRegistry* self,
                                                   GFile* file)
{
	MediaSourceCollection* result = NULL;
#line 897 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), NULL);
#line 897 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 8357 "MediaDataRepresentation.c"
	{
		GeeIterator* _collection_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = media_collection_registry_get_all (self);
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp1_ = _tmp0_;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp3_ = _tmp2_;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_tmp1_);
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_collection_it = _tmp3_;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		while (TRUE) {
#line 8378 "MediaDataRepresentation.c"
			GeeIterator* _tmp4_;
			MediaSourceCollection* collection = NULL;
			GeeIterator* _tmp5_;
			gpointer _tmp6_;
			MediaSourceCollection* _tmp7_;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp4_ = _collection_it;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (!gee_iterator_next (_tmp4_)) {
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				break;
#line 8390 "MediaDataRepresentation.c"
			}
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp5_ = _collection_it;
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp6_ = gee_iterator_get (_tmp5_);
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			collection = (MediaSourceCollection*) _tmp6_;
#line 899 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_tmp7_ = collection;
#line 899 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			if (media_source_collection_is_file_recognized (_tmp7_, file)) {
#line 900 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				result = collection;
#line 900 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				_g_object_unref0 (_collection_it);
#line 900 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
				return result;
#line 8408 "MediaDataRepresentation.c"
			}
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			_data_collection_unref0 (collection);
#line 8412 "MediaDataRepresentation.c"
		}
#line 898 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_g_object_unref0 (_collection_it);
#line 8416 "MediaDataRepresentation.c"
	}
#line 903 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = NULL;
#line 903 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 8422 "MediaDataRepresentation.c"
}


gboolean
media_collection_registry_is_valid_source_id (MediaCollectionRegistry* self,
                                              const gchar* source_id)
{
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
#line 906 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (IS_MEDIA_COLLECTION_REGISTRY (self), FALSE);
#line 907 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (is_string_empty (source_id)) {
#line 908 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		result = FALSE;
#line 908 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return result;
#line 8440 "MediaDataRepresentation.c"
	}
#line 910 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (g_str_has_prefix (source_id, PHOTO_TYPENAME)) {
#line 910 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = TRUE;
#line 8446 "MediaDataRepresentation.c"
	} else {
#line 910 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		_tmp0_ = g_str_has_prefix (source_id, VIDEO_TYPENAME "-");
#line 8450 "MediaDataRepresentation.c"
	}
#line 910 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	result = _tmp0_;
#line 910 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return result;
#line 8456 "MediaDataRepresentation.c"
}


static void
value_media_collection_registry_init (GValue* value)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	value->data[0].v_pointer = NULL;
#line 8465 "MediaDataRepresentation.c"
}


static void
value_media_collection_registry_free_value (GValue* value)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (value->data[0].v_pointer) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_collection_registry_unref (value->data[0].v_pointer);
#line 8476 "MediaDataRepresentation.c"
	}
}


static void
value_media_collection_registry_copy_value (const GValue* src_value,
                                            GValue* dest_value)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (src_value->data[0].v_pointer) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		dest_value->data[0].v_pointer = media_collection_registry_ref (src_value->data[0].v_pointer);
#line 8489 "MediaDataRepresentation.c"
	} else {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		dest_value->data[0].v_pointer = NULL;
#line 8493 "MediaDataRepresentation.c"
	}
}


static gpointer
value_media_collection_registry_peek_pointer (const GValue* value)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return value->data[0].v_pointer;
#line 8503 "MediaDataRepresentation.c"
}


static gchar*
value_media_collection_registry_collect_value (GValue* value,
                                               guint n_collect_values,
                                               GTypeCValue* collect_values,
                                               guint collect_flags)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (collect_values[0].v_pointer) {
#line 8515 "MediaDataRepresentation.c"
		MediaCollectionRegistry * object;
		object = collect_values[0].v_pointer;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		if (object->parent_instance.g_class == NULL) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 8522 "MediaDataRepresentation.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.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 8526 "MediaDataRepresentation.c"
		}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = media_collection_registry_ref (object);
#line 8530 "MediaDataRepresentation.c"
	} else {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 8534 "MediaDataRepresentation.c"
	}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 8538 "MediaDataRepresentation.c"
}


static gchar*
value_media_collection_registry_lcopy_value (const GValue* value,
                                             guint n_collect_values,
                                             GTypeCValue* collect_values,
                                             guint collect_flags)
{
	MediaCollectionRegistry ** object_p;
	object_p = collect_values[0].v_pointer;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!object_p) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 8554 "MediaDataRepresentation.c"
	}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (!value->data[0].v_pointer) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = NULL;
#line 8560 "MediaDataRepresentation.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = value->data[0].v_pointer;
#line 8564 "MediaDataRepresentation.c"
	} else {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		*object_p = media_collection_registry_ref (value->data[0].v_pointer);
#line 8568 "MediaDataRepresentation.c"
	}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return NULL;
#line 8572 "MediaDataRepresentation.c"
}


GParamSpec*
param_spec_media_collection_registry (const gchar* name,
                                      const gchar* nick,
                                      const gchar* blurb,
                                      GType object_type,
                                      GParamFlags flags)
{
	ParamSpecMediaCollectionRegistry* spec;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_MEDIA_COLLECTION_REGISTRY), NULL);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return G_PARAM_SPEC (spec);
#line 8592 "MediaDataRepresentation.c"
}


gpointer
value_get_media_collection_registry (const GValue* value)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_MEDIA_COLLECTION_REGISTRY), NULL);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return value->data[0].v_pointer;
#line 8603 "MediaDataRepresentation.c"
}


void
value_set_media_collection_registry (GValue* value,
                                     gpointer v_object)
{
	MediaCollectionRegistry * old;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_MEDIA_COLLECTION_REGISTRY));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	old = value->data[0].v_pointer;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (v_object) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_MEDIA_COLLECTION_REGISTRY));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = v_object;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_collection_registry_ref (value->data[0].v_pointer);
#line 8626 "MediaDataRepresentation.c"
	} else {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 8630 "MediaDataRepresentation.c"
	}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (old) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_collection_registry_unref (old);
#line 8636 "MediaDataRepresentation.c"
	}
}


void
value_take_media_collection_registry (GValue* value,
                                      gpointer v_object)
{
	MediaCollectionRegistry * old;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_MEDIA_COLLECTION_REGISTRY));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	old = value->data[0].v_pointer;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (v_object) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_MEDIA_COLLECTION_REGISTRY));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = v_object;
#line 8658 "MediaDataRepresentation.c"
	} else {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		value->data[0].v_pointer = NULL;
#line 8662 "MediaDataRepresentation.c"
	}
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (old) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		media_collection_registry_unref (old);
#line 8668 "MediaDataRepresentation.c"
	}
}


static void
media_collection_registry_class_init (MediaCollectionRegistryClass * klass)
{
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	media_collection_registry_parent_class = g_type_class_peek_parent (klass);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	((MediaCollectionRegistryClass *) klass)->finalize = media_collection_registry_finalize;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_type_class_add_private (klass, sizeof (MediaCollectionRegistryPrivate));
#line 8682 "MediaDataRepresentation.c"
}


static void
media_collection_registry_instance_init (MediaCollectionRegistry * self)
{
	GeeArrayList* _tmp0_;
	GeeHashMap* _tmp1_;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv = MEDIA_COLLECTION_REGISTRY_GET_PRIVATE (self);
#line 758 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = gee_array_list_new (TYPE_MEDIA_SOURCE_COLLECTION, (GBoxedCopyFunc) data_collection_ref, (GDestroyNotify) data_collection_unref, NULL, NULL, NULL);
#line 758 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->all = _tmp0_;
#line 759 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, TYPE_MEDIA_SOURCE_COLLECTION, (GBoxedCopyFunc) data_collection_ref, (GDestroyNotify) data_collection_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
#line 759 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->priv->by_typename = _tmp1_;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self->ref_count = 1;
#line 8703 "MediaDataRepresentation.c"
}


static void
media_collection_registry_finalize (MediaCollectionRegistry * obj)
{
	MediaCollectionRegistry * self;
	Application* _tmp0_;
	Application* _tmp1_;
	guint _tmp2_;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistry);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_handlers_destroy (self);
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp0_ = application_get_instance ();
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_tmp1_ = _tmp0_;
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_parse_name ("init-done", TYPE_APPLICATION, &_tmp2_, NULL, FALSE);
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_signal_handlers_disconnect_matched (_tmp1_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _media_collection_registry_on_init_done_application_init_done, self);
#line 767 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_application_unref0 (_tmp1_);
#line 758 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->all);
#line 759 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	_g_object_unref0 (self->priv->by_typename);
#line 8732 "MediaDataRepresentation.c"
}


GType
media_collection_registry_get_type (void)
{
	static volatile gsize media_collection_registry_type_id__volatile = 0;
	if (g_once_init_enter (&media_collection_registry_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_media_collection_registry_init, value_media_collection_registry_free_value, value_media_collection_registry_copy_value, value_media_collection_registry_peek_pointer, "p", value_media_collection_registry_collect_value, "p", value_media_collection_registry_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (MediaCollectionRegistryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) media_collection_registry_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MediaCollectionRegistry), 0, (GInstanceInitFunc) media_collection_registry_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 media_collection_registry_type_id;
		media_collection_registry_type_id = g_type_register_fundamental (g_type_fundamental_next (), "MediaCollectionRegistry", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&media_collection_registry_type_id__volatile, media_collection_registry_type_id);
	}
	return media_collection_registry_type_id__volatile;
}


gpointer
media_collection_registry_ref (gpointer instance)
{
	MediaCollectionRegistry * self;
	self = instance;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	g_atomic_int_inc (&self->ref_count);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	return instance;
#line 8761 "MediaDataRepresentation.c"
}


void
media_collection_registry_unref (gpointer instance)
{
	MediaCollectionRegistry * self;
	self = instance;
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		MEDIA_COLLECTION_REGISTRY_GET_CLASS (self)->finalize (self);
#line 753 "/home/jens/Source/shotwell/src/MediaDataRepresentation.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 8776 "MediaDataRepresentation.c"
	}
}


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


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


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