Added string_set()
This commit is contained in:
parent
1768cc2b5b
commit
61bb91cb59
|
@ -30,6 +30,9 @@ String * string_new_append(String const * string, ...);
|
|||
String * string_new_length(String const * string, size_t length);
|
||||
void string_delete(String * string);
|
||||
|
||||
/* accessors */
|
||||
int string_set(String ** string, String const * string2);
|
||||
|
||||
/* returns */
|
||||
size_t string_length(String const * string);
|
||||
|
||||
|
|
59
src/string.c
59
src/string.c
|
@ -28,12 +28,10 @@
|
|||
/* string_new */
|
||||
String * string_new(String const * string)
|
||||
{
|
||||
String * ret;
|
||||
size_t length = string_length(string);
|
||||
String * ret = NULL;
|
||||
|
||||
if((ret = object_new(length + 1)) == NULL)
|
||||
if(string_set(&ret, string) != 0)
|
||||
return NULL;
|
||||
strcpy(ret, string);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -83,17 +81,45 @@ void string_delete(String * string)
|
|||
}
|
||||
|
||||
|
||||
/* accessors */
|
||||
/* string_set */
|
||||
int string_set(String ** string, String const * string2)
|
||||
{
|
||||
size_t len = string_length(string2) + 1;
|
||||
|
||||
if(object_resize((Object**)string, len) != 0)
|
||||
return 1;
|
||||
strcpy(*string, string2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* returns */
|
||||
/* string_length */
|
||||
size_t string_length(String const * string)
|
||||
{
|
||||
size_t length;
|
||||
|
||||
for(length = 0; *string != '\0'; string++)
|
||||
length++;
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
/* useful */
|
||||
/* string_append */
|
||||
int string_append(String ** string, String const * append)
|
||||
{
|
||||
char * p;
|
||||
size_t length = string_length(*string);
|
||||
size_t slength = string_length(*string);
|
||||
size_t alength;
|
||||
|
||||
if((p = realloc(*string, length + string_length(append) + 1)) == NULL)
|
||||
if(append == NULL)
|
||||
return error_set_code(1, "%s", strerror(EINVAL));
|
||||
if((alength = string_length(append)) == 0)
|
||||
return 0;
|
||||
if(object_resize((Object**)string, slength + alength + 1) != 0)
|
||||
return 1;
|
||||
*string = p;
|
||||
strcpy(p + length, append);
|
||||
strcpy(*string + slength, append);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -223,18 +249,3 @@ ssize_t string_index(String const * string, String const * key)
|
|||
return -1;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
/* string_length */
|
||||
size_t string_length(String const * string)
|
||||
{
|
||||
String const * s = string;
|
||||
size_t length;
|
||||
|
||||
for(length = 0; *s != '\0'; s++)
|
||||
length++;
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s(%s) => %zu\n", __func__, string, length);
|
||||
#endif
|
||||
return length;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user