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


#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>

#define _g_free0(var) (var = (g_free (var), NULL))
#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);



#define NATURAL_COLLATE_SUPERDIGIT ((gunichar) ':')
#define NATURAL_COLLATE_NUM_SENTINEL ((gunichar) 0x2)
#define NATURAL_COLLATE_COLLATION_SENTINEL "\x01\x01\x01"
gint natural_collate_read_number (gchar* s, gint* byte_index);
gint natural_collate_compare (const gchar* str1, const gchar* str2);
gchar* natural_collate_collate_key (gchar* str);


static gunichar string_get_char (const gchar* self, glong index) {
	gunichar result = 0U;
	glong _tmp0_ = 0L;
	gunichar _tmp1_ = 0U;
#line 1116 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, 0U);
#line 1117 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = index;
#line 1117 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_);
#line 1117 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _tmp1_;
#line 1117 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 41 "NaturalCollate.c"
}


static gint string_index_of_nth_char (const gchar* self, glong c) {
	gint result = 0;
	glong _tmp0_ = 0L;
	gchar* _tmp1_ = NULL;
#line 1136 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, 0);
#line 1137 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = c;
#line 1137 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = g_utf8_offset_to_pointer (self, _tmp0_);
#line 1137 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = (gint) (_tmp1_ - ((gchar*) self));
#line 1137 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 59 "NaturalCollate.c"
}


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


static gchar* string_substring (const gchar* self, glong offset, glong len) {
	gchar* result = NULL;
	glong string_length = 0L;
	gboolean _tmp0_ = FALSE;
	glong _tmp1_ = 0L;
	glong _tmp8_ = 0L;
	glong _tmp14_ = 0L;
	glong _tmp17_ = 0L;
	glong _tmp18_ = 0L;
	glong _tmp19_ = 0L;
	glong _tmp20_ = 0L;
	glong _tmp21_ = 0L;
	gchar* _tmp22_ = NULL;
#line 1306 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = offset;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp1_ >= ((glong) 0)) {
#line 126 "NaturalCollate.c"
		glong _tmp2_ = 0L;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp2_ = len;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = _tmp2_ >= ((glong) 0);
#line 132 "NaturalCollate.c"
	} else {
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 136 "NaturalCollate.c"
	}
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp0_) {
#line 140 "NaturalCollate.c"
		glong _tmp3_ = 0L;
		glong _tmp4_ = 0L;
		glong _tmp5_ = 0L;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp3_ = offset;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = len;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = _tmp5_;
#line 152 "NaturalCollate.c"
	} else {
		gint _tmp6_ = 0;
		gint _tmp7_ = 0;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = strlen (self);
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp7_ = _tmp6_;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = (glong) _tmp7_;
#line 162 "NaturalCollate.c"
	}
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp8_ = offset;
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp8_ < ((glong) 0)) {
#line 168 "NaturalCollate.c"
		glong _tmp9_ = 0L;
		glong _tmp10_ = 0L;
		glong _tmp11_ = 0L;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp9_ = string_length;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp10_ = offset;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		offset = _tmp9_ + _tmp10_;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp11_ = offset;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
#line 182 "NaturalCollate.c"
	} else {
		glong _tmp12_ = 0L;
		glong _tmp13_ = 0L;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp12_ = offset;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp13_ = string_length;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
#line 192 "NaturalCollate.c"
	}
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp14_ = len;
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp14_ < ((glong) 0)) {
#line 198 "NaturalCollate.c"
		glong _tmp15_ = 0L;
		glong _tmp16_ = 0L;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp15_ = string_length;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp16_ = offset;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		len = _tmp15_ - _tmp16_;
#line 207 "NaturalCollate.c"
	}
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp17_ = offset;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp18_ = len;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp19_ = string_length;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp20_ = offset;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp21_ = len;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _tmp22_;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 227 "NaturalCollate.c"
}


gint natural_collate_read_number (gchar* s, gint* byte_index) {
	gint result = 0;
	gint number = 0;
#line 23 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	g_return_val_if_fail (s != NULL, 0);
#line 31 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	number = 0;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	while (TRUE) {
#line 240 "NaturalCollate.c"
		gboolean _tmp0_ = FALSE;
		const gchar* _tmp1_ = NULL;
		gint _tmp2_ = 0;
		gint _tmp3_ = 0;
		gint _tmp7_ = 0;
		gint _tmp8_ = 0;
		const gchar* _tmp9_ = NULL;
		gunichar _tmp10_ = 0U;
		gint _tmp11_ = 0;
		gint second_char = 0;
		const gchar* _tmp12_ = NULL;
		gint _tmp13_ = 0;
		const gchar* _tmp14_ = NULL;
		gint _tmp15_ = 0;
		gchar* _tmp16_ = NULL;
		gint _tmp17_ = 0;
		gint _tmp18_ = 0;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp1_ = s;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp2_ = strlen (_tmp1_);
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp3_ = _tmp2_;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		if (_tmp3_ != 0) {
#line 266 "NaturalCollate.c"
			const gchar* _tmp4_ = NULL;
			gunichar _tmp5_ = 0U;
			gboolean _tmp6_ = FALSE;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp4_ = s;
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp5_ = string_get_char (_tmp4_, (glong) 0);
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp6_ = g_unichar_isdigit (_tmp5_);
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp0_ = _tmp6_;
#line 278 "NaturalCollate.c"
		} else {
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp0_ = FALSE;
#line 282 "NaturalCollate.c"
		}
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		if (!_tmp0_) {
#line 33 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			break;
#line 288 "NaturalCollate.c"
		}
#line 34 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp7_ = number;
#line 34 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		number = _tmp7_ * 10;
#line 35 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp8_ = number;
#line 35 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp9_ = s;
#line 35 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp10_ = string_get_char (_tmp9_, (glong) 0);
#line 35 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp11_ = g_unichar_digit_value (_tmp10_);
#line 35 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		number = _tmp8_ + _tmp11_;
#line 36 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp12_ = s;
#line 36 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp13_ = string_index_of_nth_char (_tmp12_, (glong) 1);
#line 36 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		second_char = _tmp13_;
#line 37 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp14_ = s;
#line 37 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp15_ = second_char;
#line 37 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp16_ = string_substring (_tmp14_, (glong) _tmp15_, (glong) -1);
#line 37 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_g_free0 (s);
#line 37 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		s = _tmp16_;
#line 38 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp17_ = *byte_index;
#line 38 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp18_ = second_char;
#line 38 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		*byte_index = _tmp17_ + _tmp18_;
#line 326 "NaturalCollate.c"
	}
#line 40 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	result = number;
#line 40 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (s);
#line 40 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	return result;
#line 334 "NaturalCollate.c"
}


gint natural_collate_compare (const gchar* str1, const gchar* str2) {
	gint result = 0;
	GCompareFunc _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	gint _tmp9_ = 0;
	gint _tmp10_ = 0;
#line 43 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	g_return_val_if_fail (str1 != NULL, 0);
#line 43 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	g_return_val_if_fail (str2 != NULL, 0);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp0_ = g_strcmp0;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp1_ = str1;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp2_ = g_strdup (_tmp1_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp3_ = natural_collate_collate_key (_tmp2_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp4_ = _tmp3_;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp5_ = str2;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp6_ = g_strdup (_tmp5_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp7_ = natural_collate_collate_key (_tmp6_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp8_ = _tmp7_;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp9_ = _tmp0_ (_tmp4_, _tmp8_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp10_ = _tmp9_;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (_tmp8_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (_tmp4_);
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	result = _tmp10_;
#line 44 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	return result;
#line 385 "NaturalCollate.c"
}


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


static gchar* g_unichar_to_string (gunichar self) {
	gchar* result = NULL;
	gchar* str = NULL;
	gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
#line 941 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp0_ = g_new0 (gchar, 7);
#line 941 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	str = (gchar*) _tmp0_;
#line 942 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = str;
#line 942 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_unichar_to_utf8 (self, _tmp1_);
#line 943 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = str;
#line 943 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 426 "NaturalCollate.c"
}


gchar* natural_collate_collate_key (gchar* str) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gchar* _result_ = NULL;
	gchar* _tmp2_ = NULL;
	gboolean eos = FALSE;
	const gchar* _tmp3_ = NULL;
	gint _tmp4_ = 0;
	gint _tmp5_ = 0;
	const gchar* _tmp70_ = NULL;
	gchar* _tmp71_ = NULL;
	gchar* _tmp72_ = NULL;
	gchar* _tmp73_ = NULL;
#line 47 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	g_return_val_if_fail (str != NULL, NULL);
#line 53 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp0_ = str;
#line 53 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp1_ = g_utf8_validate (_tmp0_, (gssize) -1, NULL);
#line 53 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_vala_assert (_tmp1_, "str.validate()");
#line 54 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp2_ = g_strdup ("");
#line 54 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_result_ = _tmp2_;
#line 55 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp3_ = str;
#line 55 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp4_ = strlen (_tmp3_);
#line 55 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp5_ = _tmp4_;
#line 55 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	eos = _tmp5_ == 0;
#line 57 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	while (TRUE) {
#line 466 "NaturalCollate.c"
		gboolean _tmp6_ = FALSE;
		const gchar* _tmp7_ = NULL;
		gboolean _tmp8_ = FALSE;
		gint position = 0;
		const gchar* _tmp17_ = NULL;
		const gchar* _tmp18_ = NULL;
		gint _tmp19_ = 0;
		gchar* _tmp20_ = NULL;
		gchar* _tmp21_ = NULL;
		gchar* _tmp22_ = NULL;
		gchar* _tmp23_ = NULL;
		gchar* _tmp24_ = NULL;
		const gchar* _tmp25_ = NULL;
		gint _tmp26_ = 0;
		gchar* _tmp27_ = NULL;
		const gchar* _tmp28_ = NULL;
		gint _tmp29_ = 0;
		gint _tmp30_ = 0;
		gboolean _tmp31_ = FALSE;
		const gchar* _tmp67_ = NULL;
		gint _tmp68_ = 0;
		gint _tmp69_ = 0;
#line 57 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp6_ = eos;
#line 57 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		if (!(!_tmp6_)) {
#line 57 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			break;
#line 495 "NaturalCollate.c"
		}
#line 58 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp7_ = str;
#line 58 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp8_ = g_utf8_validate (_tmp7_, (gssize) -1, NULL);
#line 58 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_vala_assert (_tmp8_, "str.validate()");
#line 59 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		position = 0;
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		while (TRUE) {
#line 507 "NaturalCollate.c"
			const gchar* _tmp9_ = NULL;
			gint _tmp10_ = 0;
			gunichar _tmp11_ = 0U;
			gchar* _tmp12_ = NULL;
			gchar* _tmp13_ = NULL;
			gboolean _tmp14_ = FALSE;
			gboolean _tmp15_ = FALSE;
			gint _tmp16_ = 0;
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp9_ = str;
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp10_ = position;
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp11_ = string_get_char (_tmp9_, (glong) _tmp10_);
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp12_ = g_unichar_to_string (_tmp11_);
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp13_ = _tmp12_;
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp14_ = string_contains ("0123456789", _tmp13_);
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp15_ = !(!_tmp14_);
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp13_);
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			if (_tmp15_) {
#line 60 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
				break;
#line 536 "NaturalCollate.c"
			}
#line 62 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp16_ = position;
#line 62 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			position = _tmp16_ + 1;
#line 542 "NaturalCollate.c"
		}
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp17_ = _result_;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp18_ = str;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp19_ = position;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp20_ = string_substring (_tmp18_, (glong) 0, (glong) _tmp19_);
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp21_ = _tmp20_;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp22_ = g_utf8_collate_key (_tmp21_, (gssize) -1);
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp23_ = _tmp22_;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp24_ = g_strconcat (_tmp17_, _tmp23_, NULL);
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_g_free0 (_result_);
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_result_ = _tmp24_;
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_g_free0 (_tmp23_);
#line 66 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_g_free0 (_tmp21_);
#line 69 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp25_ = str;
#line 69 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp26_ = position;
#line 69 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp27_ = string_substring (_tmp25_, (glong) _tmp26_, (glong) -1);
#line 69 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_g_free0 (str);
#line 69 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		str = _tmp27_;
#line 71 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp28_ = str;
#line 71 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp29_ = strlen (_tmp28_);
#line 71 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp30_ = _tmp29_;
#line 71 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		eos = _tmp30_ == 0;
#line 72 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		position = 0;
#line 74 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp31_ = eos;
#line 74 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		if (!_tmp31_) {
#line 592 "NaturalCollate.c"
			gint number = 0;
			const gchar* _tmp32_ = NULL;
			gchar* _tmp33_ = NULL;
			gint _tmp34_ = 0;
			const gchar* _tmp35_ = NULL;
			gint _tmp36_ = 0;
			gchar* _tmp37_ = NULL;
			gint number_of_superdigits = 0;
			gint _tmp38_ = 0;
			gchar* _tmp39_ = NULL;
			gchar* _tmp40_ = NULL;
			gint _tmp41_ = 0;
			gint _tmp42_ = 0;
			gint _tmp43_ = 0;
			gchar* to_append = NULL;
			gchar* _tmp44_ = NULL;
			const gchar* _tmp53_ = NULL;
			gint _tmp54_ = 0;
			gchar* _tmp55_ = NULL;
			gchar* _tmp56_ = NULL;
			gchar* _tmp57_ = NULL;
			const gchar* _tmp58_ = NULL;
			gchar* _tmp59_ = NULL;
			gchar* _tmp60_ = NULL;
			gchar* _tmp61_ = NULL;
			gchar* _tmp62_ = NULL;
			gchar* _tmp63_ = NULL;
			gchar* _tmp64_ = NULL;
			const gchar* _tmp65_ = NULL;
			gchar* _tmp66_ = NULL;
#line 76 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp32_ = str;
#line 76 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp33_ = g_strdup (_tmp32_);
#line 76 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp34_ = natural_collate_read_number (_tmp33_, &position);
#line 76 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			number = _tmp34_;
#line 77 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp35_ = str;
#line 77 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp36_ = position;
#line 77 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp37_ = string_substring (_tmp35_, (glong) _tmp36_, (glong) -1);
#line 77 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (str);
#line 77 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			str = _tmp37_;
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp38_ = number;
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp39_ = g_strdup_printf ("%i", _tmp38_);
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp40_ = _tmp39_;
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp41_ = strlen (_tmp40_);
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp42_ = _tmp41_;
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp43_ = _tmp42_;
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp40_);
#line 78 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			number_of_superdigits = _tmp43_;
#line 79 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp44_ = g_strdup ("");
#line 79 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			to_append = _tmp44_;
#line 661 "NaturalCollate.c"
			{
				gint i = 0;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
				i = 1;
#line 666 "NaturalCollate.c"
				{
					gboolean _tmp45_ = FALSE;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
					_tmp45_ = TRUE;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
					while (TRUE) {
#line 673 "NaturalCollate.c"
						gint _tmp47_ = 0;
						gint _tmp48_ = 0;
						const gchar* _tmp49_ = NULL;
						gchar* _tmp50_ = NULL;
						gchar* _tmp51_ = NULL;
						gchar* _tmp52_ = NULL;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						if (!_tmp45_) {
#line 682 "NaturalCollate.c"
							gint _tmp46_ = 0;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
							_tmp46_ = i;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
							i = _tmp46_ + 1;
#line 688 "NaturalCollate.c"
						}
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp45_ = FALSE;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp47_ = i;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp48_ = number_of_superdigits;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						if (!(_tmp47_ < _tmp48_)) {
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
							break;
#line 700 "NaturalCollate.c"
						}
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp49_ = to_append;
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp50_ = g_unichar_to_string (NATURAL_COLLATE_SUPERDIGIT);
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp51_ = _tmp50_;
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_tmp52_ = g_strconcat (_tmp49_, _tmp51_, NULL);
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_g_free0 (to_append);
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						to_append = _tmp52_;
#line 82 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						_g_free0 (_tmp51_);
#line 716 "NaturalCollate.c"
					}
				}
			}
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp53_ = to_append;
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp54_ = number;
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp55_ = g_strdup_printf ("%i", _tmp54_);
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp56_ = _tmp55_;
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp57_ = g_strconcat (_tmp53_, _tmp56_, NULL);
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (to_append);
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			to_append = _tmp57_;
#line 84 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp56_);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp58_ = _result_;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp59_ = g_strconcat (_tmp58_, NATURAL_COLLATE_COLLATION_SENTINEL, NULL);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp60_ = _tmp59_;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp61_ = g_unichar_to_string (NATURAL_COLLATE_NUM_SENTINEL);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp62_ = _tmp61_;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp63_ = g_strconcat (_tmp60_, _tmp62_, NULL);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp64_ = _tmp63_;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp65_ = to_append;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_tmp66_ = g_strconcat (_tmp64_, _tmp65_, NULL);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_result_);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_result_ = _tmp66_;
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp64_);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp62_);
#line 85 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (_tmp60_);
#line 74 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
			_g_free0 (to_append);
#line 766 "NaturalCollate.c"
		}
#line 90 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp67_ = str;
#line 90 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp68_ = strlen (_tmp67_);
#line 90 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		_tmp69_ = _tmp68_;
#line 90 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
		eos = _tmp69_ == 0;
#line 776 "NaturalCollate.c"
	}
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp70_ = _result_;
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp71_ = g_unichar_to_string (NATURAL_COLLATE_NUM_SENTINEL);
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp72_ = _tmp71_;
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_tmp73_ = g_strconcat (_tmp70_, _tmp72_, NULL);
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (_result_);
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_result_ = _tmp73_;
#line 93 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (_tmp72_);
#line 96 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	result = _result_;
#line 96 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	_g_free0 (str);
#line 96 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
	return result;
#line 798 "NaturalCollate.c"
}



