diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2022-04-22 00:52:53 +0200 |
---|---|---|
committer | Johnny Richard <johnny@johnnyrichard.com> | 2022-04-22 01:00:51 +0200 |
commit | e3585f9080a2083080ebf3c8efc45a63123d4a8d (patch) | |
tree | 63e45288949e22bb580559e356cf812c0d1dc609 | |
parent | 2269e8904b56ae0dd80461cc7a0507862b33e34e (diff) |
string_view: Add string_view format macros
-rw-r--r-- | server.c | 2 | ||||
-rw-r--r-- | string_view.c | 2 | ||||
-rw-r--r-- | string_view.h | 4 | ||||
-rw-r--r-- | test/string_view_test.c | 8 |
4 files changed, 9 insertions, 7 deletions
@@ -246,7 +246,7 @@ server_on_ping_msg(server_t *server, client_t *client, string_view_t msg) { - client_send_msg(client, "PONG %.*s\n", msg.size, msg.data); + client_send_msg(client, "PONG "SVFMT"\n", SVARG(&msg)); } static void diff --git a/string_view.c b/string_view.c index 4de1a98..6335cb9 100644 --- a/string_view.c +++ b/string_view.c @@ -42,7 +42,7 @@ string_view_from_cstr(const char *cstr) bool string_view_to_cstr(string_view_t *sv, char *ret) { - return sprintf(ret, "%.*s", sv->size, sv->data) < 0; + return sprintf(ret, SVFMT, SVARG(sv)) < 0; } bool diff --git a/string_view.h b/string_view.h index 413cb24..9a66bfc 100644 --- a/string_view.h +++ b/string_view.h @@ -18,6 +18,9 @@ #ifndef STRING_VIEW_H #define STRING_VIEW_H +#define SVFMT "%.*s" +#define SVARG(sv) (sv)->size, (sv)->data + #include <stdlib.h> #include <stdbool.h> #include <stdint.h> @@ -27,7 +30,6 @@ typedef struct string_view { const char *data; } string_view_t; - string_view_t string_view_new(const char *cstr, size_t size); string_view_t string_view_from_cstr(const char *cstr); diff --git a/test/string_view_test.c b/test/string_view_test.c index 7b2400c..82c9706 100644 --- a/test/string_view_test.c +++ b/test/string_view_test.c @@ -88,10 +88,10 @@ test_chop_by_delim_when_has_delim(const MunitParameter params[], string_view_t result = string_view_chop_by_delim(&sv, ' '); char actual[10]; - sprintf(actual, "%.*s", sv.size, sv.data); + sprintf(actual, SVFMT, SVARG(&sv)); assert_string_equal(actual, "world"); - sprintf(actual, "%.*s", result.size, result.data); + sprintf(actual, SVFMT, SVARG(&result)); assert_string_equal(actual, "hello"); return MUNIT_OK; @@ -105,10 +105,10 @@ test_chop_by_delim_when_has_no_delim(const MunitParameter params[], string_view_t result = string_view_chop_by_delim(&sv, ' '); char actual[10]; - sprintf(actual, "%.*s", sv.size, sv.data); + sprintf(actual, SVFMT, SVARG(&sv)); assert_string_equal(actual, ""); - sprintf(actual, "%.*s", result.size, result.data); + sprintf(actual, SVFMT, SVARG(&result)); assert_string_equal(actual, "helloworld"); return MUNIT_OK; |