summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2000-06-05 15:18:40 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2000-06-05 15:18:40 +0000
commitc64e1a2871db045a7775f00ab31724e096ebf443 (patch)
tree725ed9e69e2ba67e33994705689a00bc15b61a5e
parent012025c7c19983d299037edfae39cc45938872e9 (diff)
downloadnautilus-c64e1a2871db045a7775f00ab31724e096ebf443.tar.gz
New function. Return the string list items concatenated into a single
* libnautilus-extensions/nautilus-string-list.c: (nautilus_string_list_as_concatenated_string), (nautilus_self_check_string_list): * libnautilus-extensions/nautilus-string-list.h: New function. Return the string list items concatenated into a single string delimited by a given delimeter.
-rw-r--r--ChangeLog9
-rw-r--r--libnautilus-extensions/nautilus-string-list.c73
-rw-r--r--libnautilus-extensions/nautilus-string-list.h54
-rw-r--r--libnautilus-private/nautilus-string-list.c73
-rw-r--r--libnautilus-private/nautilus-string-list.h54
5 files changed, 225 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index f95fe3207..ed3eda3fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2000-06-05 Ramiro Estrugo <ramiro@eazel.com>
+
+ * libnautilus-extensions/nautilus-string-list.c:
+ (nautilus_string_list_as_concatenated_string),
+ (nautilus_self_check_string_list):
+ * libnautilus-extensions/nautilus-string-list.h:
+ New function. Return the string list items concatenated into a
+ single string delimited by a given delimeter.
+
2000-06-05 Andy Hertzfeld <andy@eazel.com>
* libnautilus-extensions/nautilus-file-utilities.c:
diff --git a/libnautilus-extensions/nautilus-string-list.c b/libnautilus-extensions/nautilus-string-list.c
index f1599500c..20ccd095f 100644
--- a/libnautilus-extensions/nautilus-string-list.c
+++ b/libnautilus-extensions/nautilus-string-list.c
@@ -291,6 +291,55 @@ nautilus_string_list_get_index_for_string (const NautilusStringList *string_list
return NAUTILUS_STRING_LIST_NOT_FOUND;
}
+/**
+ * nautilus_string_list_as_tokens
+ *
+ * @string_list: A NautilusStringList
+ * @delimiter: The string to use a delimeter, can be NULL.
+ *
+ * Return value: An newly allocated string concatenation of all the items in the list.
+ * The string is delimited by 'delimiter'.
+ */
+char *
+nautilus_string_list_as_concatenated_string (const NautilusStringList *string_list,
+ const char *delimiter)
+{
+ char *result = NULL;
+ guint length;
+
+ g_return_val_if_fail (string_list != NULL, NULL);
+
+ length = nautilus_string_list_get_length (string_list);
+
+ if (length > 0) {
+ guint n;
+ GList *iterator;
+ GString *tokens;
+
+ n = 0;
+
+ tokens = g_string_new (NULL);
+
+ for (iterator = string_list->strings; iterator != NULL; iterator = iterator->next) {
+ const char *current = (const char *) iterator->data;
+
+ g_string_append (tokens, current);
+
+
+ n++;
+
+ if (delimiter && (n != length)) {
+ g_string_append (tokens, delimiter);
+ }
+ }
+
+ result = tokens->str;
+
+ g_string_free (tokens, FALSE);
+ }
+
+ return result;
+}
#if !defined (NAUTILUS_OMIT_SELF_CHECK)
@@ -464,6 +513,30 @@ nautilus_self_check_string_list (void)
nautilus_string_list_free (fruits);
}
+ /*
+ * nautilus_string_list_as_concatenated_string
+ *
+ */
+ {
+ NautilusStringList *l;
+
+ fruits = nautilus_string_list_new ();
+
+ nautilus_string_list_insert (l, "x");
+
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, NULL), "x");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ":"), "x");
+
+ nautilus_string_list_insert (l, "y");
+ nautilus_string_list_insert (l, "z");
+
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, NULL), "xyz");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ""), "xyz");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ":"), "x:y:z");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, "abc"), "xabcyabcz");
+
+ nautilus_string_list_free (l);
+ }
}
#endif /* !NAUTILUS_OMIT_SELF_CHECK */
diff --git a/libnautilus-extensions/nautilus-string-list.h b/libnautilus-extensions/nautilus-string-list.h
index 4598958b5..6c405e542 100644
--- a/libnautilus-extensions/nautilus-string-list.h
+++ b/libnautilus-extensions/nautilus-string-list.h
@@ -33,48 +33,64 @@
typedef struct _NautilusStringList NautilusStringList;
/* Construct an empty string list. */
-NautilusStringList *nautilus_string_list_new (void);
+NautilusStringList *nautilus_string_list_new (void);
+
/* Construct a string list with a single element */
-NautilusStringList *nautilus_string_list_new_from_string (const char *string);
+NautilusStringList *nautilus_string_list_new_from_string (const char *string);
+
/* Construct a string list that is a copy of another string list */
-NautilusStringList *nautilus_string_list_new_from_string_list (const NautilusStringList *other);
+NautilusStringList *nautilus_string_list_new_from_string_list (const NautilusStringList *other);
+
/* Construct a string list from tokens delimited by the given string and delimeter */
-NautilusStringList *nautilus_string_list_new_from_tokens (const char *string,
- const char *delimiter);
+NautilusStringList *nautilus_string_list_new_from_tokens (const char *string,
+ const char *delimiter);
+
/* Free a string list */
-void nautilus_string_list_free (NautilusStringList *string_list);
+void nautilus_string_list_free (NautilusStringList *string_list);
+
/* Insert a string into the collection. */
-void nautilus_string_list_insert (NautilusStringList *string_list,
- const gchar *string);
+void nautilus_string_list_insert (NautilusStringList *string_list,
+ const char *string);
+
/* Clear the collection. */
-void nautilus_string_list_clear (NautilusStringList *string_list);
+void nautilus_string_list_clear (NautilusStringList *string_list);
+
/* Access the nth string in the collection. Returns an strduped string. */
-gchar * nautilus_string_list_nth (const NautilusStringList *string_list,
- guint n);
+char * nautilus_string_list_nth (const NautilusStringList *string_list,
+ guint n);
+
/* Does the string list contain the given string ? */
-gboolean nautilus_string_list_contains (const NautilusStringList *string_list,
- const char *string);
+gboolean nautilus_string_list_contains (const NautilusStringList *string_list,
+ const char *string);
+
/* How many strings are currently in the collection ? */
-guint nautilus_string_list_get_length (const NautilusStringList *string_list);
+guint nautilus_string_list_get_length (const NautilusStringList *string_list);
+
/* Get the index for the given string. Return NAUTILUS_STRING_LIST_NOT_FOUND if not found. */
-gint nautilus_string_list_get_index_for_string (const NautilusStringList *string_list,
- const char *string);
+gint nautilus_string_list_get_index_for_string (const NautilusStringList *string_list,
+ const char *string);
+
/* Does the string list a equal string list b ? */
-gboolean nautilus_string_list_equals (const NautilusStringList *a,
- const NautilusStringList *b);
+gboolean nautilus_string_list_equals (const NautilusStringList *a,
+ const NautilusStringList *b);
+
/* Return the string list in a GList. Must deep free the result with nautilus_g_list_free_deep() */
-GList * nautilus_string_list_as_g_list (const NautilusStringList *string_list);
+GList * nautilus_string_list_as_g_list (const NautilusStringList *string_list);
+
+/* Return the string list as a concatenation of all the items delimeted by delimeter. */
+char * nautilus_string_list_as_concatenated_string (const NautilusStringList *string_list,
+ const char *delimiter);
#endif /* NAUTILUS_STRING_LIST_H */
diff --git a/libnautilus-private/nautilus-string-list.c b/libnautilus-private/nautilus-string-list.c
index f1599500c..20ccd095f 100644
--- a/libnautilus-private/nautilus-string-list.c
+++ b/libnautilus-private/nautilus-string-list.c
@@ -291,6 +291,55 @@ nautilus_string_list_get_index_for_string (const NautilusStringList *string_list
return NAUTILUS_STRING_LIST_NOT_FOUND;
}
+/**
+ * nautilus_string_list_as_tokens
+ *
+ * @string_list: A NautilusStringList
+ * @delimiter: The string to use a delimeter, can be NULL.
+ *
+ * Return value: An newly allocated string concatenation of all the items in the list.
+ * The string is delimited by 'delimiter'.
+ */
+char *
+nautilus_string_list_as_concatenated_string (const NautilusStringList *string_list,
+ const char *delimiter)
+{
+ char *result = NULL;
+ guint length;
+
+ g_return_val_if_fail (string_list != NULL, NULL);
+
+ length = nautilus_string_list_get_length (string_list);
+
+ if (length > 0) {
+ guint n;
+ GList *iterator;
+ GString *tokens;
+
+ n = 0;
+
+ tokens = g_string_new (NULL);
+
+ for (iterator = string_list->strings; iterator != NULL; iterator = iterator->next) {
+ const char *current = (const char *) iterator->data;
+
+ g_string_append (tokens, current);
+
+
+ n++;
+
+ if (delimiter && (n != length)) {
+ g_string_append (tokens, delimiter);
+ }
+ }
+
+ result = tokens->str;
+
+ g_string_free (tokens, FALSE);
+ }
+
+ return result;
+}
#if !defined (NAUTILUS_OMIT_SELF_CHECK)
@@ -464,6 +513,30 @@ nautilus_self_check_string_list (void)
nautilus_string_list_free (fruits);
}
+ /*
+ * nautilus_string_list_as_concatenated_string
+ *
+ */
+ {
+ NautilusStringList *l;
+
+ fruits = nautilus_string_list_new ();
+
+ nautilus_string_list_insert (l, "x");
+
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, NULL), "x");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ":"), "x");
+
+ nautilus_string_list_insert (l, "y");
+ nautilus_string_list_insert (l, "z");
+
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, NULL), "xyz");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ""), "xyz");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, ":"), "x:y:z");
+ NAUTILUS_CHECK_STRING_RESULT (nautilus_string_list_as_concatenated_string (l, "abc"), "xabcyabcz");
+
+ nautilus_string_list_free (l);
+ }
}
#endif /* !NAUTILUS_OMIT_SELF_CHECK */
diff --git a/libnautilus-private/nautilus-string-list.h b/libnautilus-private/nautilus-string-list.h
index 4598958b5..6c405e542 100644
--- a/libnautilus-private/nautilus-string-list.h
+++ b/libnautilus-private/nautilus-string-list.h
@@ -33,48 +33,64 @@
typedef struct _NautilusStringList NautilusStringList;
/* Construct an empty string list. */
-NautilusStringList *nautilus_string_list_new (void);
+NautilusStringList *nautilus_string_list_new (void);
+
/* Construct a string list with a single element */
-NautilusStringList *nautilus_string_list_new_from_string (const char *string);
+NautilusStringList *nautilus_string_list_new_from_string (const char *string);
+
/* Construct a string list that is a copy of another string list */
-NautilusStringList *nautilus_string_list_new_from_string_list (const NautilusStringList *other);
+NautilusStringList *nautilus_string_list_new_from_string_list (const NautilusStringList *other);
+
/* Construct a string list from tokens delimited by the given string and delimeter */
-NautilusStringList *nautilus_string_list_new_from_tokens (const char *string,
- const char *delimiter);
+NautilusStringList *nautilus_string_list_new_from_tokens (const char *string,
+ const char *delimiter);
+
/* Free a string list */
-void nautilus_string_list_free (NautilusStringList *string_list);
+void nautilus_string_list_free (NautilusStringList *string_list);
+
/* Insert a string into the collection. */
-void nautilus_string_list_insert (NautilusStringList *string_list,
- const gchar *string);
+void nautilus_string_list_insert (NautilusStringList *string_list,
+ const char *string);
+
/* Clear the collection. */
-void nautilus_string_list_clear (NautilusStringList *string_list);
+void nautilus_string_list_clear (NautilusStringList *string_list);
+
/* Access the nth string in the collection. Returns an strduped string. */
-gchar * nautilus_string_list_nth (const NautilusStringList *string_list,
- guint n);
+char * nautilus_string_list_nth (const NautilusStringList *string_list,
+ guint n);
+
/* Does the string list contain the given string ? */
-gboolean nautilus_string_list_contains (const NautilusStringList *string_list,
- const char *string);
+gboolean nautilus_string_list_contains (const NautilusStringList *string_list,
+ const char *string);
+
/* How many strings are currently in the collection ? */
-guint nautilus_string_list_get_length (const NautilusStringList *string_list);
+guint nautilus_string_list_get_length (const NautilusStringList *string_list);
+
/* Get the index for the given string. Return NAUTILUS_STRING_LIST_NOT_FOUND if not found. */
-gint nautilus_string_list_get_index_for_string (const NautilusStringList *string_list,
- const char *string);
+gint nautilus_string_list_get_index_for_string (const NautilusStringList *string_list,
+ const char *string);
+
/* Does the string list a equal string list b ? */
-gboolean nautilus_string_list_equals (const NautilusStringList *a,
- const NautilusStringList *b);
+gboolean nautilus_string_list_equals (const NautilusStringList *a,
+ const NautilusStringList *b);
+
/* Return the string list in a GList. Must deep free the result with nautilus_g_list_free_deep() */
-GList * nautilus_string_list_as_g_list (const NautilusStringList *string_list);
+GList * nautilus_string_list_as_g_list (const NautilusStringList *string_list);
+
+/* Return the string list as a concatenation of all the items delimeted by delimeter. */
+char * nautilus_string_list_as_concatenated_string (const NautilusStringList *string_list,
+ const char *delimiter);
#endif /* NAUTILUS_STRING_LIST_H */