/* NaturalCollate.c generated by valac 0.36.6, 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_;
	gunichar _tmp1_;
#line 1140 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, 0U);
#line 1141 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = index;
#line 1141 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_);
#line 1141 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = _tmp1_;
#line 1141 "/usr/share/vala-0.36/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_;
	gchar* _tmp1_;
#line 1160 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, 0);
#line 1161 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = c;
#line 1161 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = g_utf8_offset_to_pointer (self, _tmp0_);
#line 1161 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = (gint) (_tmp1_ - ((gchar*) self));
#line 1161 "/usr/share/vala-0.36/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_;
	glong _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = str;
#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = maxlen;
#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	end = _tmp2_;
#line 1323 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp3_ = end;
#line 1323 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	if (_tmp3_ == NULL) {
#line 82 "NaturalCollate.c"
		glong _tmp4_;
#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp4_ = maxlen;
#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		result = _tmp4_;
#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		return result;
#line 90 "NaturalCollate.c"
	} else {
		gchar* _tmp5_;
		gchar* _tmp6_;
#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp5_ = end;
#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp6_ = str;
#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		result = (glong) (_tmp5_ - _tmp6_);
#line 1326 "/usr/share/vala-0.36/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_;
	glong _tmp8_;
	glong _tmp14_;
	glong _tmp17_;
	glong _tmp18_;
	glong _tmp19_;
	glong _tmp20_;
	glong _tmp21_;
	gchar* _tmp22_;
#line 1333 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = offset;
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	if (_tmp1_ >= ((glong) 0)) {
#line 126 "NaturalCollate.c"
		glong _tmp2_;
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp2_ = len;
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp0_ = _tmp2_ >= ((glong) 0);
#line 132 "NaturalCollate.c"
	} else {
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 136 "NaturalCollate.c"
	}
#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	if (_tmp0_) {
#line 140 "NaturalCollate.c"
		glong _tmp3_;
		glong _tmp4_;
		glong _tmp5_;
#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp3_ = offset;
#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp4_ = len;
#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		string_length = _tmp5_;
#line 152 "NaturalCollate.c"
	} else {
		gint _tmp6_;
		gint _tmp7_;
#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp6_ = strlen (self);
#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp7_ = _tmp6_;
#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		string_length = (glong) _tmp7_;
#line 162 "NaturalCollate.c"
	}
#line 1342 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp8_ = offset;
#line 1342 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	if (_tmp8_ < ((glong) 0)) {
#line 168 "NaturalCollate.c"
		glong _tmp9_;
		glong _tmp10_;
		glong _tmp11_;
#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp9_ = string_length;
#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp10_ = offset;
#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		offset = _tmp9_ + _tmp10_;
#line 1344 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp11_ = offset;
#line 1344 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
#line 182 "NaturalCollate.c"
	} else {
		glong _tmp12_;
		glong _tmp13_;
#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp12_ = offset;
#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp13_ = string_length;
#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
#line 192 "NaturalCollate.c"
	}
#line 1348 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp14_ = len;
#line 1348 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	if (_tmp14_ < ((glong) 0)) {
#line 198 "NaturalCollate.c"
		glong _tmp15_;
		glong _tmp16_;
#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp15_ = string_length;
#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		_tmp16_ = offset;
#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
		len = _tmp15_ - _tmp16_;
#line 207 "NaturalCollate.c"
	}
#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp17_ = offset;
#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp18_ = len;
#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp19_ = string_length;
#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp20_ = offset;
#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp21_ = len;
#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = _tmp22_;
#line 1352 "/usr/share/vala-0.36/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_;
		gint _tmp2_;
		gint _tmp3_;
		gint _tmp7_;
		gint _tmp8_;
		const gchar* _tmp9_;
		gunichar _tmp10_;
		gint _tmp11_;
		gint second_char = 0;
		const gchar* _tmp12_;
		gint _tmp13_;
		const gchar* _tmp14_;
		gint _tmp15_;
		gchar* _tmp16_;
		gint _tmp17_;
		gint _tmp18_;
#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_;
			gunichar _tmp5_;
			gboolean _tmp6_;
#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_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	const gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gint _tmp9_;
	gint _tmp10_;
#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_;
	gchar* _tmp1_;
#line 1403 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, FALSE);
#line 1403 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_return_val_if_fail (needle != NULL, FALSE);
#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = needle;
#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = _tmp1_ != NULL;
#line 1404 "/usr/share/vala-0.36/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_;
	const gchar* _tmp1_;
#line 949 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp0_ = g_new0 (gchar, 7);
#line 949 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	str = (gchar*) _tmp0_;
#line 950 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	_tmp1_ = str;
#line 950 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	g_unichar_to_utf8 (self, _tmp1_);
#line 951 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	result = str;
#line 951 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
	return result;
#line 426 "NaturalCollate.c"
}


gchar* natural_collate_collate_key (gchar* str) {
	gchar* result = NULL;
	const gchar* _tmp0_;
	gboolean _tmp1_;
	gchar* _result_ = NULL;
	gchar* _tmp2_;
	gboolean eos = FALSE;
	const gchar* _tmp3_;
	gint _tmp4_;
	gint _tmp5_;
	const gchar* _tmp70_;
	gchar* _tmp71_;
	gchar* _tmp72_;
	gchar* _tmp73_;
#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_;
		const gchar* _tmp7_;
		gboolean _tmp8_;
		gint position = 0;
		const gchar* _tmp17_;
		const gchar* _tmp18_;
		gint _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
		gchar* _tmp24_;
		const gchar* _tmp25_;
		gint _tmp26_;
		gchar* _tmp27_;
		const gchar* _tmp28_;
		gint _tmp29_;
		gint _tmp30_;
		gboolean _tmp31_;
		const gchar* _tmp67_;
		gint _tmp68_;
		gint _tmp69_;
#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_;
			gint _tmp10_;
			gunichar _tmp11_;
			gchar* _tmp12_;
			gchar* _tmp13_;
			gboolean _tmp14_;
			gboolean _tmp15_;
			gint _tmp16_;
#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_;
			gchar* _tmp33_;
			gint _tmp34_;
			const gchar* _tmp35_;
			gint _tmp36_;
			gchar* _tmp37_;
			gint number_of_superdigits = 0;
			gint _tmp38_;
			gchar* _tmp39_;
			gchar* _tmp40_;
			gint _tmp41_;
			gint _tmp42_;
			gint _tmp43_;
			gchar* to_append = NULL;
			gchar* _tmp44_;
			const gchar* _tmp53_;
			gint _tmp54_;
			gchar* _tmp55_;
			gchar* _tmp56_;
			gchar* _tmp57_;
			const gchar* _tmp58_;
			gchar* _tmp59_;
			gchar* _tmp60_;
			gchar* _tmp61_;
			gchar* _tmp62_;
			gchar* _tmp63_;
			gchar* _tmp64_;
			const gchar* _tmp65_;
			gchar* _tmp66_;
#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_;
						gint _tmp48_;
						const gchar* _tmp49_;
						gchar* _tmp50_;
						gchar* _tmp51_;
						gchar* _tmp52_;
#line 80 "/home/jens/Source/shotwell/src/NaturalCollate.vala"
						if (!_tmp45_) {
#line 682 "NaturalCollate.c"
							gint _tmp46_;
#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"
}