diff options
| author | Tyge Løvset <[email protected]> | 2021-05-20 11:19:37 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-05-20 11:19:37 +0200 |
| commit | 6270e01be0f105e3512cfde04a7f7d6b67aa8a2e (patch) | |
| tree | f2dc00ef74dff377c3c2ed1d85e9a7dcaf42e5bf /stc | |
| parent | 9c5d58627c784bc123e96fb81587f71994ad26cc (diff) | |
| download | STC-modified-6270e01be0f105e3512cfde04a7f7d6b67aa8a2e.tar.gz STC-modified-6270e01be0f105e3512cfde04a7f7d6b67aa8a2e.zip | |
Changed new API: c_sv(literal) => c_sv(cstr), cstr_new(literal) => cstr_lit(literal), csview_new() => csview_lit(). Added c_lit(literal) alias to csview_lit(literal).
Diffstat (limited to 'stc')
| -rw-r--r-- | stc/csmap.h | 6 | ||||
| -rw-r--r-- | stc/cstr.h | 2 | ||||
| -rw-r--r-- | stc/csview.h | 14 |
3 files changed, 16 insertions, 6 deletions
diff --git a/stc/csmap.h b/stc/csmap.h index 3c6bf10e..4a57ee33 100644 --- a/stc/csmap.h +++ b/stc/csmap.h @@ -289,6 +289,12 @@ struct csmap_rep { size_t root, disp, head, size, cap; void* nodes[]; }; return c_make(CX##_iter_t){.ref = NULL}; \
} \
\
+ STC_INLINE CX##_iter_t \
+ CX##_fwd(CX##_iter_t it, size_t n) { \
+ while (n-- && it.ref) CX##_next(&it); \
+ return it; \
+ } \
+\
_c_implement_aatree(CX, C, Key, Mapped, keyCompareRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
keyDel, keyFromRaw, keyToRaw, RawKey) \
@@ -66,7 +66,7 @@ STC_API char* c_strnstrn(const char* s, const char* needle, size_t sle STC_API char* c_strncasestrn(const char* s, const char* needle, size_t slen, size_t nmax);
STC_INLINE cstr cstr_init() { return cstr_null; }
-#define cstr_new(literal) \
+#define cstr_lit(literal) \
cstr_from_n(literal, sizeof c_make(strlit_t){literal} - 1)
STC_INLINE cstr cstr_from(const char* str)
{ return cstr_from_n(str, strlen(str)); }
diff --git a/stc/csview.h b/stc/csview.h index ccd63770..19f89983 100644 --- a/stc/csview.h +++ b/stc/csview.h @@ -29,18 +29,22 @@ typedef struct { const char* str; size_t size; } csview; typedef struct { const char *ref; } csview_iter_t;
typedef char csview_value_t;
#define csview_null c_make(csview){"", 0}
-#define csview_PRN(sv) (int)(sv).size, (sv).str
+#define csview_ARG(sv) (int)(sv).size, (sv).str
-#define csview_new(literal) \
- c_make(csview){literal, sizeof c_make(strlit_t){literal} - 1}
-#define c_sv(literal) \
- csview_new(literal)
+#define c_lit(literal) \
+ csview_lit(literal)
+STC_INLINE csview c_sv(cstr s)
+ { return c_make(csview){s.str, _cstr_rep(&s)->size}; }
STC_INLINE csview csview_from(const char* str)
{ return c_make(csview){str, strlen(str)}; }
STC_INLINE csview csview_from_n(const char* str, size_t n)
{ return c_make(csview){str, n}; }
+
+#define csview_lit(literal) \
+ c_make(csview){literal, sizeof c_make(strlit_t){literal} - 1}
STC_INLINE csview csview_from_s(cstr s)
{ return c_make(csview){s.str, _cstr_rep(&s)->size}; }
+
STC_INLINE csview csview_remove_prefix(csview sv, size_t n)
{ sv.str += n, sv.size -= n; return sv; }
STC_INLINE csview csview_remove_suffix(csview sv, size_t n)
|
