From cbef37bd5bfb938a2303ee3887520c08be85d8e8 Mon Sep 17 00:00:00 2001 From: Bardur Arantsson Date: Tue, 26 Mar 2013 17:10:10 +0100 Subject: Switch almost everything over to C++ --- src/string_list.cc | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/string_list.cc (limited to 'src/string_list.cc') diff --git a/src/string_list.cc b/src/string_list.cc new file mode 100644 index 00000000..03080e46 --- /dev/null +++ b/src/string_list.cc @@ -0,0 +1,52 @@ +#include "string_list.h" + +int compare_string_list(string_list *a, string_list *b) +{ + if (a == b) + { + return 0; + } + + return strcmp(a->s, b->s); +} + +SGLIB_DEFINE_LIST_FUNCTIONS(string_list, compare_string_list, next); + +/* + * Initialize a string_list value. Copies the input string. + */ +void string_list_init(string_list *sl, cptr s) +{ + assert(sl != NULL); + + sl->s = string_make(s); + sl->next = NULL; +} + +/* + * Destroy string_value. + */ +void string_list_destroy(string_list *sl) +{ + assert(sl != NULL); + + /* Free contained string */ + if (sl->s) { + string_free(sl->s); + sl->s = NULL; + } + + /* We do NOT free the rest of the list. */ + sl->next = NULL; +} + +/** + * Append a string to a string_list. + */ +void string_list_append(string_list **slist, cptr s) +{ + string_list *e = new string_list; + string_list_init(e, s); + + sglib_string_list_add(slist, e); +} -- cgit v1.2.3