summaryrefslogtreecommitdiffhomepage
path: root/stc
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-05-20 11:19:37 +0200
committerTyge Løvset <[email protected]>2021-05-20 11:19:37 +0200
commit6270e01be0f105e3512cfde04a7f7d6b67aa8a2e (patch)
treef2dc00ef74dff377c3c2ed1d85e9a7dcaf42e5bf /stc
parent9c5d58627c784bc123e96fb81587f71994ad26cc (diff)
downloadSTC-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.h6
-rw-r--r--stc/cstr.h2
-rw-r--r--stc/csview.h14
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) \
diff --git a/stc/cstr.h b/stc/cstr.h
index 4e70189a..131a3d78 100644
--- a/stc/cstr.h
+++ b/stc/cstr.h
@@ -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)