summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-string-list.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-extensions/nautilus-string-list.c')
-rw-r--r--libnautilus-extensions/nautilus-string-list.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/libnautilus-extensions/nautilus-string-list.c b/libnautilus-extensions/nautilus-string-list.c
index 9a2fd5f92..084d84085 100644
--- a/libnautilus-extensions/nautilus-string-list.c
+++ b/libnautilus-extensions/nautilus-string-list.c
@@ -212,6 +212,39 @@ nautilus_string_list_nth (const NautilusStringList *string_list, guint n)
}
/**
+ * nautilus_string_list_nth_as_integer
+ *
+ * @string_list: A NautilusStringList
+ * @n: Index of string to convert.
+ * @integer_result: Where to store the conversion result.
+ *
+ * Convert the nth string to an integer and store the result in &integer_result.
+ *
+ * Return value: Returns TRUE if the string to integer conversion was successful,
+ * FALSE otherwise.
+ */
+gboolean
+nautilus_string_list_nth_as_integer (const NautilusStringList *string_list,
+ guint n,
+ int *integer_result)
+{
+ const char *string;
+
+ g_return_val_if_fail (string_list != NULL, FALSE);
+ g_return_val_if_fail (integer_result != NULL, FALSE);
+
+ if (n >= g_list_length (string_list->strings)) {
+ if (!supress_out_of_bounds_warning) {
+ g_warning ("(n = %d) is out of bounds.", n);
+ }
+ return FALSE;
+ }
+
+ string = g_list_nth_data (string_list->strings, n);
+ return nautilus_str_to_int (string, integer_result);
+}
+
+/**
* nautilus_string_list_modify_nth
*
* @string_list: A NautilusStringList
@@ -1140,6 +1173,51 @@ nautilus_self_check_string_list (void)
nautilus_string_list_free (list);
nautilus_string_list_free (sorted_list);
}
+
+ /*
+ * nautilus_string_list_nth_as_integer
+ */
+ {
+ NautilusStringList *list;
+ const int untouched = 666;
+ int result;
+
+ list = nautilus_string_list_new_from_tokens ("word,c,0,1,20,xxx,foo,bar,-1", ",", TRUE);
+
+ result = untouched;
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 0, &result), FALSE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, untouched);
+
+ result = untouched;
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 1, &result), FALSE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, untouched);
+
+ result = untouched;
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 5, &result), FALSE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, untouched);
+
+ result = untouched;
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 6, &result), FALSE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, untouched);
+
+ result = untouched;
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 7, &result), FALSE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, untouched);
+
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 2, &result), TRUE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, 0);
+
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 3, &result), TRUE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, 1);
+
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 4, &result), TRUE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, 20);
+
+ NAUTILUS_CHECK_BOOLEAN_RESULT (nautilus_string_list_nth_as_integer (list, 8, &result), TRUE);
+ NAUTILUS_CHECK_INTEGER_RESULT (result, -1);
+
+ nautilus_string_list_free (list);
+ }
}
#endif /* !NAUTILUS_OMIT_SELF_CHECK */