/* most-recent-events.c generated by valac 0.48.11, the Vala compiler
 * generated from most-recent-events.vala, do not modify */

#include <glib.h>
#include "zeitgeist.h"
#include "zeitgeist-datamodel.h"
#include <glib-object.h>
#include <gio/gio.h>
#include <stdio.h>

typedef struct _Block1Data Block1Data;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL)))
#define _g_ptr_array_unref0(var) ((var == NULL) ? NULL : (var = (g_ptr_array_unref (var), NULL)))

struct _Block1Data {
	int _ref_count_;
	GMainLoop* loop;
	ZeitgeistLog* log;
};

gint _vala_main (void);
static Block1Data* block1_data_ref (Block1Data* _data1_);
static void block1_data_unref (void * _userdata_);
static void _g_object_unref0_ (gpointer var);
static void __lambda4_ (Block1Data* _data1_,
                 GObject* obj,
                 GAsyncResult* res);
static void ___lambda4__gasync_ready_callback (GObject* source_object,
                                        GAsyncResult* res,
                                        gpointer self);

static Block1Data*
block1_data_ref (Block1Data* _data1_)
{
	g_atomic_int_inc (&_data1_->_ref_count_);
	return _data1_;
}

static void
block1_data_unref (void * _userdata_)
{
	Block1Data* _data1_;
	_data1_ = (Block1Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
		_g_object_unref0 (_data1_->log);
		_g_main_loop_unref0 (_data1_->loop);
		g_slice_free (Block1Data, _data1_);
	}
}

static void
_g_object_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}

static void
__lambda4_ (Block1Data* _data1_,
            GObject* obj,
            GAsyncResult* res)
{
	ZeitgeistResultSet* events = NULL;
	ZeitgeistResultSet* _tmp0_;
	FILE* _tmp1_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (res != NULL);
	_tmp0_ = zeitgeist_log_find_events_finish (_data1_->log, res, &_inner_error0_);
	events = _tmp0_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
	_tmp1_ = stdout;
	fprintf (_tmp1_, "%u most recent subjects:", zeitgeist_result_set_size (events));
	{
		ZeitgeistResultSet* _event_it = NULL;
		ZeitgeistResultSet* _tmp2_;
		ZeitgeistEvent* event = NULL;
		_tmp2_ = zeitgeist_result_set_iterator (events);
		_event_it = _tmp2_;
		while (TRUE) {
			ZeitgeistResultSet* _tmp3_;
			ZeitgeistEvent* _tmp4_;
			ZeitgeistEvent* _tmp5_;
			FILE* _tmp6_;
			ZeitgeistEvent* _tmp7_;
			GPtrArray* _tmp8_;
			GPtrArray* _tmp9_;
			gconstpointer _tmp10_;
			const gchar* _tmp11_;
			const gchar* _tmp12_;
			_tmp3_ = _event_it;
			_tmp4_ = zeitgeist_result_set_next_value (_tmp3_);
			_g_object_unref0 (event);
			event = _tmp4_;
			_tmp5_ = event;
			if (!(_tmp5_ != NULL)) {
				break;
			}
			_tmp6_ = stdout;
			_tmp7_ = event;
			_tmp8_ = zeitgeist_event_get_subjects (_tmp7_);
			_tmp9_ = _tmp8_;
			_tmp10_ = g_ptr_array_index (_tmp9_, (guint) 0);
			_tmp11_ = zeitgeist_subject_get_uri ((ZeitgeistSubject*) _tmp10_);
			_tmp12_ = _tmp11_;
			fprintf (_tmp6_, " - %s\n", _tmp12_);
		}
		_g_object_unref0 (event);
		_g_object_unref0 (_event_it);
	}
	g_main_loop_quit (_data1_->loop);
	_g_object_unref0 (events);
}

static void
___lambda4__gasync_ready_callback (GObject* source_object,
                                   GAsyncResult* res,
                                   gpointer self)
{
	__lambda4_ (self, source_object, res);
	block1_data_unref (self);
}

gint
_vala_main (void)
{
	Block1Data* _data1_;
	GMainLoop* _tmp0_;
	ZeitgeistLog* _tmp1_;
	ZeitgeistTimeRange* time_range = NULL;
	ZeitgeistTimeRange* _tmp2_;
	GPtrArray* templates = NULL;
	GPtrArray* _tmp3_;
	gint num_events = 0;
	gint result = 0;
	_data1_ = g_slice_new0 (Block1Data);
	_data1_->_ref_count_ = 1;
	_tmp0_ = g_main_loop_new (NULL, FALSE);
	_data1_->loop = _tmp0_;
	_tmp1_ = zeitgeist_log_new ();
	_data1_->log = _tmp1_;
	_tmp2_ = zeitgeist_time_range_new_anytime ();
	time_range = _tmp2_;
	_tmp3_ = g_ptr_array_new_full ((guint) 0, _g_object_unref0_);
	templates = _tmp3_;
	num_events = 20;
	zeitgeist_log_find_events (_data1_->log, time_range, templates, ZEITGEIST_STORAGE_STATE_ANY, (guint32) num_events, ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, NULL, ___lambda4__gasync_ready_callback, block1_data_ref (_data1_));
	g_main_loop_run (_data1_->loop);
	result = 0;
	_g_ptr_array_unref0 (templates);
	_g_object_unref0 (time_range);
	block1_data_unref (_data1_);
	_data1_ = NULL;
	return result;
}

int
main (int argc,
      char ** argv)
{
	return _vala_main ();
}

