From 0d5cf52f0831547fab65afa2372d490651eb68a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Fri, 15 Sep 2023 10:35:12 +0800 Subject: [PATCH] FFstrbuf: add ffStrbufAppendNC --- src/util/FFstrbuf.c | 8 ++++++++ src/util/FFstrbuf.h | 1 + tests/strbuf.c | 10 ++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/util/FFstrbuf.c b/src/util/FFstrbuf.c index 70a2a029d..ef049b698 100644 --- a/src/util/FFstrbuf.c +++ b/src/util/FFstrbuf.c @@ -73,6 +73,14 @@ void ffStrbufAppendC(FFstrbuf* strbuf, char c) strbuf->chars[strbuf->length] = '\0'; } +void ffStrbufAppendNC(FFstrbuf* strbuf, uint32_t num, char c) +{ + ffStrbufEnsureFree(strbuf, num); + memset(&strbuf->chars[strbuf->length], c, num); + strbuf->length += num; + strbuf->chars[strbuf->length] = '\0'; +} + void ffStrbufAppendNS(FFstrbuf* strbuf, uint32_t length, const char* value) { if(value == NULL || length == 0) diff --git a/src/util/FFstrbuf.h b/src/util/FFstrbuf.h index 9e9bce198..704abfd29 100644 --- a/src/util/FFstrbuf.h +++ b/src/util/FFstrbuf.h @@ -38,6 +38,7 @@ void ffStrbufClear(FFstrbuf* strbuf); static inline void ffStrbufAppend(FFstrbuf* __restrict strbuf, const FFstrbuf* __restrict value); void ffStrbufAppendC(FFstrbuf* strbuf, char c); +void ffStrbufAppendNC(FFstrbuf* strbuf, uint32_t num, char c); void ffStrbufAppendNS(FFstrbuf* strbuf, uint32_t length, const char* value); void ffStrbufAppendNSExludingC(FFstrbuf* strbuf, uint32_t length, const char* value, char exclude); void ffStrbufAppendTransformS(FFstrbuf* strbuf, const char* value, int(*transformFunc)(int)); diff --git a/tests/strbuf.c b/tests/strbuf.c index d35c93e2f..defce5a87 100644 --- a/tests/strbuf.c +++ b/tests/strbuf.c @@ -56,6 +56,16 @@ int main(void) VERIFY(strbuf.allocated == 0); VERIFY(strbuf.length == 0); + //append(N)C + + ffStrbufAppendC(&strbuf, '1'); + VERIFY(ffStrbufEqualS(&strbuf, "1")); + VERIFY(strbuf.allocated >= 1); + ffStrbufAppendNC(&strbuf, 5, '2'); + VERIFY(ffStrbufEqualS(&strbuf, "122222")); + VERIFY(strbuf.allocated >= 6); + ffStrbufClear(&strbuf); + //appendS ffStrbufAppendS(&strbuf, "12345");