diff options
| author | Tyge Løvset <[email protected]> | 2022-03-29 09:03:27 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-03-29 09:03:27 +0200 |
| commit | e507d0a01fb2210913c3b546817c04c58f931b9e (patch) | |
| tree | cf05f18312e2b4262bed73fc361e6dc9d902a613 /include | |
| parent | 3a291671c2583033f821b7c8d68d22b1897a6e15 (diff) | |
| download | STC-modified-e507d0a01fb2210913c3b546817c04c58f931b9e.tar.gz STC-modified-e507d0a01fb2210913c3b546817c04c58f931b9e.zip | |
Added some sso benchmarks and a minor tweak.
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/alt/cstr.h | 8 | ||||
| -rw-r--r-- | include/stc/forward.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/include/stc/alt/cstr.h b/include/stc/alt/cstr.h index 211e169a..875d47d5 100644 --- a/include/stc/alt/cstr.h +++ b/include/stc/alt/cstr.h @@ -39,12 +39,12 @@ /**************************** PRIVATE API **********************************/
enum { SSO_CAP = sizeof(_cstr_rep_t) - 1 };
-#define cstr_is_long(s) (bool)((s)->sso.cap_len & 128)
+#define cstr_is_long(s) ((s)->sso.last > 127)
#define cstr_select_(s, memb) (cstr_is_long(s) ? cstr_l_##memb : cstr_s_##memb)
#define cstr_s_cap(s) SSO_CAP
-#define cstr_s_size(s) ((size_t)(SSO_CAP - (s)->sso.cap_len))
-#define cstr_s_set_size(s, len) ((s)->sso.cap_len = SSO_CAP - (len), (s)->sso.data[len] = 0)
+#define cstr_s_size(s) ((size_t)(SSO_CAP - (s)->sso.last))
+#define cstr_s_set_size(s, len) ((s)->sso.last = SSO_CAP - (len), (s)->sso.data[len] = 0)
#define cstr_s_data(s) (s)->sso.data
#define cstr_s_end(s) ((s)->sso.data + cstr_s_size(s))
@@ -79,7 +79,7 @@ STC_INLINE _cstr_rep_t cstr_rep_(cstr* self) { #define cstr_new(literal) cstr_from_n(literal, c_strlen_lit(literal))
#define cstr_npos (SIZE_MAX >> 1)
-#define cstr_null (c_make(cstr){.sso = {.cap_len = SSO_CAP}})
+#define cstr_null (c_make(cstr){.sso = {.last = SSO_CAP}})
#define cstr_toraw(self) cstr_str(self)
STC_API char* cstr_reserve(cstr* self, size_t cap);
diff --git a/include/stc/forward.h b/include/stc/forward.h index ea552204..026834d0 100644 --- a/include/stc/forward.h +++ b/include/stc/forward.h @@ -45,7 +45,7 @@ #ifdef CSTR_IS_SSO
typedef struct { char* data; size_t size, cap; } _cstr_rep_t;
typedef union {
- struct { char data[sizeof(_cstr_rep_t) - 1], cap_len; } sso;
+ struct { char data[sizeof(_cstr_rep_t) - 1]; uint8_t last; } sso;
struct { char* data; size_t size, ncap; } lon;
} cstr;
#else
|
