diff options
| author | Tyge Løvset <[email protected]> | 2021-05-11 10:52:34 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-05-11 10:52:34 +0200 |
| commit | c4c680501791b9c1e69429e114bfac2b78d7a203 (patch) | |
| tree | d26639ec6230284d959a56e4b919e59aef1adc66 | |
| parent | 1401833dbfc8a08bf94978e98c76904aa82d3878 (diff) | |
| download | STC-modified-c4c680501791b9c1e69429e114bfac2b78d7a203.tar.gz STC-modified-c4c680501791b9c1e69429e114bfac2b78d7a203.zip | |
Removed cstr_append_fmt(): use cstr_assign_fmt(&s, "%s%s", s.str, "appended string") for that.
| -rw-r--r-- | docs/cstr_api.md | 5 | ||||
| -rw-r--r-- | stc/ccommon.h | 1 | ||||
| -rw-r--r-- | stc/cstr.h | 26 |
3 files changed, 13 insertions, 19 deletions
diff --git a/docs/cstr_api.md b/docs/cstr_api.md index 0f481b92..77fbe86c 100644 --- a/docs/cstr_api.md +++ b/docs/cstr_api.md @@ -38,13 +38,12 @@ void cstr_clear(cstr* self); cstr* cstr_assign(cstr* self, const char* str); cstr* cstr_assign_s(cstr* self, cstr s); // cstr_take(self, cstr_clone(s)) -cstr* cstr_assign_n(cstr* self, const char* str, size_t n); +cstr* cstr_assign_n(cstr* self, const char* str, size_t n); // assign n first chars of str cstr* cstr_assign_fmt(cstr* self, const char* fmt, ...); // printf() formatting cstr* cstr_append(cstr* self, const char* str); cstr* cstr_append_s(cstr* self, cstr s); -cstr* cstr_append_n(cstr* self, const char* str, size_t n); // appends n characters -cstr* cstr_append_fmt(cstr* self, const char* fmt, ...); // printf() formatting +cstr* cstr_append_n(cstr* self, const char* str, size_t n); void cstr_insert(cstr* self, size_t pos, const char* str); void cstr_insert_s(cstr* self, size_t pos, cstr s); diff --git a/stc/ccommon.h b/stc/ccommon.h index 5b5f7e59..37458243 100644 --- a/stc/ccommon.h +++ b/stc/ccommon.h @@ -120,6 +120,7 @@ for (type i=start, i##_inc_=step, i##_end_=(stop) - (0 < i##_inc_) \
; (i <= i##_end_) == (0 < i##_inc_); i += i##_inc_)
+#define c_with(start, end) for (int _c_w = (start, 0); !_c_w; end, ++_c_w)
#define c_withfile(f, open) for (FILE *f = open; f; fclose(f), f = NULL)
#define c_withbuffer(b, type, n) c_withbuffer_x(b, type, n, 256)
#define c_withbuffer_x(b, type, n, BYTES) \
@@ -220,18 +220,18 @@ cstr_from_n(const char* str, size_t n) { # pragma warning(push)
# pragma warning(disable: 4996)
#endif
-///
+
STC_DEF void
-cstr_vfmt(cstr* self, size_t pos, const char* fmt, va_list args) {
+cstr_vfmt(cstr* self, const char* fmt, va_list args) {
va_list args2;
va_copy(args2, args);
int len = vsnprintf(NULL, (size_t)0, fmt, args);
- cstr_reserve(self, pos + len);
- vsprintf(self->str + pos, fmt, args2);
+ cstr_reserve(self, len);
+ vsprintf(self->str, fmt, args2);
va_end(args2);
- _cstr_rep(self)->size = pos + len;
+ _cstr_rep(self)->size = len;
}
-///
+
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(_MSC_VER)
@@ -242,24 +242,18 @@ STC_DEF cstr cstr_from_fmt(const char* fmt, ...) {
cstr ret = cstr_inits;
va_list args; va_start(args, fmt);
- cstr_vfmt(&ret, 0, fmt, args);
+ cstr_vfmt(&ret, fmt, args);
va_end(args);
return ret;
}
STC_DEF cstr*
cstr_assign_fmt(cstr* self, const char* fmt, ...) {
+ cstr ret = cstr_inits;
va_list args; va_start(args, fmt);
- cstr_vfmt(self, 0, fmt, args);
- va_end(args);
- return self;
-}
-
-STC_DEF cstr*
-cstr_append_fmt(cstr* self, const char* fmt, ...) {
- va_list args; va_start(args, fmt);
- cstr_vfmt(self, cstr_size(*self), fmt, args);
+ cstr_vfmt(&ret, fmt, args);
va_end(args);
+ cstr_del(self); *self = ret;
return self;
}
|
