diff options
Diffstat (limited to 'glib/gstring.c')
-rw-r--r-- | glib/gstring.c | 130 |
1 files changed, 107 insertions, 23 deletions
diff --git a/glib/gstring.c b/glib/gstring.c index fc0780e2b4..91a5e1e2c9 100644 --- a/glib/gstring.c +++ b/glib/gstring.c @@ -21,6 +21,7 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <ctype.h> typedef struct _GRealStringChunk GRealStringChunk; @@ -101,6 +102,8 @@ g_string_chunk_free (GStringChunk *fchunk) GRealStringChunk *chunk = (GRealStringChunk*) fchunk; GSList *tmp_list; + g_return_if_fail (chunk != NULL); + if (chunk->storage_list) { GListAllocator *tmp_allocator = g_slist_set_allocator (NULL); @@ -121,12 +124,14 @@ g_string_chunk_free (GStringChunk *fchunk) gchar* g_string_chunk_insert (GStringChunk *fchunk, - gchar* string) + const gchar *string) { GRealStringChunk *chunk = (GRealStringChunk*) fchunk; gint len = strlen (string); char* pos; + g_return_val_if_fail (chunk != NULL, NULL); + if ((chunk->storage_next + len + 1) > chunk->this_size) { GListAllocator *tmp_allocator = g_slist_set_allocator (NULL); @@ -155,15 +160,17 @@ g_string_chunk_insert (GStringChunk *fchunk, gchar* g_string_chunk_insert_const (GStringChunk *fchunk, - gchar* string) + const gchar *string) { GRealStringChunk *chunk = (GRealStringChunk*) fchunk; char* lookup; + g_return_val_if_fail (chunk != NULL, NULL); + if (!chunk->const_table) chunk->const_table = g_hash_table_new (g_str_hash, g_str_equal); - lookup = (char*) g_hash_table_lookup (chunk->const_table, string); + lookup = (char*) g_hash_table_lookup (chunk->const_table, (gchar *)string); if (!lookup) { @@ -198,7 +205,7 @@ g_string_maybe_expand (GRealString* string, gint len) } GString* -g_string_new (gchar *init) +g_string_new (const gchar *init) { GRealString *string; @@ -220,8 +227,11 @@ g_string_new (gchar *init) } void -g_string_free (GString *string, gint free_segment) +g_string_free (GString *string, + gint free_segment) { + g_return_if_fail (string != NULL); + if (free_segment) g_free (string->str); @@ -230,7 +240,7 @@ g_string_free (GString *string, gint free_segment) GString* g_string_assign (GString *lval, - char *rval) + const gchar *rval) { g_string_truncate (lval, 0); g_string_append (lval, rval); @@ -239,10 +249,13 @@ g_string_assign (GString *lval, } GString* -g_string_truncate (GString* fstring, gint len) +g_string_truncate (GString* fstring, + gint len) { GRealString *string = (GRealString*)fstring; + g_return_val_if_fail (string != NULL, NULL); + string->len = len; string->str[len] = 0; @@ -251,11 +264,16 @@ g_string_truncate (GString* fstring, gint len) } GString* -g_string_append (GString *fstring, gchar *val) +g_string_append (GString *fstring, + const gchar *val) { GRealString *string = (GRealString*)fstring; - int len = strlen (val); + int len; + g_return_val_if_fail (string != NULL, NULL); + g_return_val_if_fail (val != NULL, fstring); + + len = strlen (val); g_string_maybe_expand (string, len); strcpy (string->str + string->len, val); @@ -266,10 +284,12 @@ g_string_append (GString *fstring, gchar *val) } GString* -g_string_append_c (GString *fstring, char c) +g_string_append_c (GString *fstring, + gchar c) { GRealString *string = (GRealString*)fstring; + g_return_val_if_fail (string != NULL, NULL); g_string_maybe_expand (string, 1); string->str[string->len++] = c; @@ -279,11 +299,16 @@ g_string_append_c (GString *fstring, char c) } GString* -g_string_prepend (GString *fstring, gchar *val) +g_string_prepend (GString *fstring, + const gchar *val) { GRealString *string = (GRealString*)fstring; - gint len = strlen (val); + gint len; + + g_return_val_if_fail (string != NULL, NULL); + g_return_val_if_fail (val != NULL, fstring); + len = strlen (val); g_string_maybe_expand (string, len); g_memmove (string->str + len, string->str, string->len); @@ -298,10 +323,12 @@ g_string_prepend (GString *fstring, gchar *val) } GString* -g_string_prepend_c (GString *fstring, char c) +g_string_prepend_c (GString *fstring, + gchar c) { GRealString *string = (GRealString*)fstring; + g_return_val_if_fail (string != NULL, NULL); g_string_maybe_expand (string, 1); g_memmove (string->str + 1, string->str, string->len); @@ -315,14 +342,20 @@ g_string_prepend_c (GString *fstring, char c) return fstring; } -GString * -g_string_insert (GString *fstring, gint pos, gchar *val) +GString* +g_string_insert (GString *fstring, + gint pos, + const gchar *val) { GRealString *string = (GRealString*)fstring; - gint len = strlen (val); + gint len; + g_return_val_if_fail (string != NULL, NULL); + g_return_val_if_fail (val != NULL, fstring); + g_return_val_if_fail (pos >= 0, fstring); g_return_val_if_fail (pos <= string->len, fstring); + len = strlen (val); g_string_maybe_expand (string, len); g_memmove (string->str + pos + len, string->str + pos, string->len - pos); @@ -337,10 +370,13 @@ g_string_insert (GString *fstring, gint pos, gchar *val) } GString * -g_string_insert_c (GString *fstring, gint pos, gchar c) +g_string_insert_c (GString *fstring, + gint pos, + gchar c) { GRealString *string = (GRealString*)fstring; + g_return_val_if_fail (string != NULL, NULL); g_return_val_if_fail (pos <= string->len, fstring); g_string_maybe_expand (string, 1); @@ -356,15 +392,21 @@ g_string_insert_c (GString *fstring, gint pos, gchar c) return fstring; } -GString * -g_string_erase (GString *fstring, gint pos, gint len) +GString* +g_string_erase (GString *fstring, + gint pos, + gint len) { GRealString *string = (GRealString*)fstring; + g_return_val_if_fail (string != NULL, NULL); + g_return_val_if_fail (len >= 0, fstring); + g_return_val_if_fail (pos >= 0, fstring); g_return_val_if_fail (pos <= string->len, fstring); g_return_val_if_fail (pos + len <= string->len, fstring); - g_memmove (string->str + pos, string->str + pos + len, string->len - (pos + len)); + if (pos + len < string->len) + g_memmove (string->str + pos, string->str + pos + len, string->len - (pos + len)); string->len -= len; @@ -373,6 +415,44 @@ g_string_erase (GString *fstring, gint pos, gint len) return fstring; } +GString* +g_string_down (GString *fstring) +{ + GRealString *string = (GRealString*)fstring; + gchar *s; + + g_return_val_if_fail (string != NULL, NULL); + + s = string->str; + + while (*s) + { + *s = tolower (*s); + s++; + } + + return fstring; +} + +GString* +g_string_up (GString *fstring) +{ + GRealString *string = (GRealString*)fstring; + gchar *s; + + g_return_val_if_fail (string != NULL, NULL); + + s = string->str; + + while (*s) + { + *s = toupper (*s); + s++; + } + + return fstring; +} + static int get_length_upper_bound (const gchar* fmt, va_list *args) { @@ -512,7 +592,7 @@ g_vsprintf (const gchar *fmt, static void g_string_sprintfa_int (GString *string, - gchar *fmt, + const gchar *fmt, va_list *args, va_list *args2) { @@ -520,7 +600,9 @@ g_string_sprintfa_int (GString *string, } void -g_string_sprintf (GString *string, gchar *fmt, ...) +g_string_sprintf (GString *string, + const gchar *fmt, + ...) { va_list args, args2; @@ -536,7 +618,9 @@ g_string_sprintf (GString *string, gchar *fmt, ...) } void -g_string_sprintfa (GString *string, gchar *fmt, ...) +g_string_sprintfa (GString *string, + const gchar *fmt, + ...) { va_list args, args2; |