Skip to content

Commit a1decd9

Browse files
committed
Add list_to_string() function
1 parent eec4126 commit a1decd9

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

src/scratch/list_functions.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,14 @@ extern "C"
5252
{
5353
return list->size();
5454
}
55+
56+
char *list_to_string(List *list)
57+
{
58+
std::string str;
59+
list->toString(str);
60+
61+
char *ret = (char *)malloc((str.size() + 1) * sizeof(char));
62+
strncpy(ret, str.c_str(), str.size() + 1);
63+
return ret;
64+
}
5565
}

src/scratch/list_functions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ extern "C"
2323
size_t *list_size_ptr(List *list);
2424
const size_t *list_alloc_size_ptr(List *list);
2525
size_t list_size(List *list);
26+
27+
char *list_to_string(List *list);
2628
}
2729

2830
} // namespace libscratchcpp

test/scratch_classes/list_functions_test.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,3 +146,30 @@ TEST(ListFunctionsTest, Size)
146146
ASSERT_EQ(list_size(&list), 2);
147147
}
148148
}
149+
150+
TEST(ListFunctionsTest, ToString)
151+
{
152+
{
153+
List list("", "test list");
154+
list.append("Lorem");
155+
list.append("ipsum");
156+
list.append("dolor");
157+
list.append("sit");
158+
list.append("amet");
159+
160+
char *str = list_to_string(&list);
161+
ASSERT_TRUE(strcmp(str, "Lorem ipsum dolor sit amet") == 0);
162+
free(str);
163+
}
164+
165+
{
166+
List list("", "test list");
167+
list.append(1);
168+
list.append(2);
169+
list.append(3);
170+
171+
char *str = list_to_string(&list);
172+
ASSERT_TRUE(strcmp(str, "123") == 0);
173+
free(str);
174+
}
175+
}

0 commit comments

Comments
 (0)