From d3bdadd76b59770c9402db1f2475cf760f8f682b Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Mon, 18 Apr 2022 00:59:18 +0200 Subject: string_view: Implement string_view_to_cstr --- string_view.c | 7 +++++++ string_view.h | 15 ++------------- test/string_view_test.c | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/string_view.c b/string_view.c index d730627..4de1a98 100644 --- a/string_view.c +++ b/string_view.c @@ -19,6 +19,7 @@ #include #include +#include #include string_view_t @@ -38,6 +39,12 @@ string_view_from_cstr(const char *cstr) return string_view_new(cstr, strlen(cstr)); } +bool +string_view_to_cstr(string_view_t *sv, char *ret) +{ + return sprintf(ret, "%.*s", sv->size, sv->data) < 0; +} + bool string_view_eq(string_view_t a, string_view_t b) { diff --git a/string_view.h b/string_view.h index 2ac6684..413cb24 100644 --- a/string_view.h +++ b/string_view.h @@ -32,21 +32,10 @@ string_view_t string_view_new(const char *cstr, size_t size); string_view_t string_view_from_cstr(const char *cstr); +bool string_view_to_cstr(string_view_t *sv, char *ret); + bool string_view_eq(string_view_t a, string_view_t b); string_view_t string_view_chop_by_delim(string_view_t *sv, char delim); -/* -bool string_view_index_of(string_view_t sv, char c, size_t *index); - - -bool string_view_eqi(string_view_t a, string_view_t b); - -bool string_view_starts_with(string_view_t sv, string_view_t prefix); - -bool string_view_ends_with(string_view_t sv, string_view_t suffix); - -uint64_t string_view_to_u64(string_view_t sv); -*/ - #endif /* STRING_VIEW_H */ diff --git a/test/string_view_test.c b/test/string_view_test.c index a050239..7b2400c 100644 --- a/test/string_view_test.c +++ b/test/string_view_test.c @@ -48,6 +48,22 @@ test_from_cstr(const MunitParameter params[], return MUNIT_OK; } +static MunitResult +test_to_cstr(const MunitParameter params[], + void *user_data_or_fixture) +{ + char *cstr = "hello world"; + + string_view_t sv = string_view_new(cstr, 5); + + char actual[sv.size + 1]; + string_view_to_cstr(&sv, actual); + + assert_string_equal(actual, "hello"); + + return MUNIT_OK; +} + static MunitResult test_eq(const MunitParameter params[], void *user_data_or_fixture) @@ -101,6 +117,7 @@ test_chop_by_delim_when_has_no_delim(const MunitParameter params[], static MunitTest tests[] = { { "/test_create_new", test_create_new, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_from_cstr", test_from_cstr, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, + { "/test_to_cstr", test_to_cstr, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_eq", test_eq, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_chop_by_delim_when_has_delim", test_chop_by_delim_when_has_delim, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_chop_by_delim_when_has_no_delim", test_chop_by_delim_when_has_no_delim, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, -- cgit v1.2.3