summaryrefslogtreecommitdiff
path: root/include/cmmm/string-view.h
diff options
context:
space:
mode:
authorLibravatar Martin Michalec <martin@michalec.dev>2026-02-21 23:32:31 +0000
committerLibravatar Martin Michalec <martin@michalec.dev>2026-02-21 23:32:31 +0000
commit42d4c659063db0e42813bc5708e687ed8da7c133 (patch)
tree1d926d4cfe62259b2f3e694fbf67aee5bbd46c08 /include/cmmm/string-view.h
downloadstring-view-42d4c659063db0e42813bc5708e687ed8da7c133.tar.gz
add implementation
Diffstat (limited to 'include/cmmm/string-view.h')
-rw-r--r--include/cmmm/string-view.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/cmmm/string-view.h b/include/cmmm/string-view.h
new file mode 100644
index 0000000..ef7a40c
--- /dev/null
+++ b/include/cmmm/string-view.h
@@ -0,0 +1,48 @@
1// include/cmmm/string-view.h --- simple string view library
2#ifndef INCLUDED__CMMM__STRING_VIEW__H
3#define INCLUDED__CMMM__STRING_VIEW__H
4
5// #define CMMM__STRING_VIEW__STRIP_VENDOR
6// #define CMMM__STRING_VIEW__SHORT_NAMESPACE
7
8#define CMMM__STRING_VIEW__LENGTH(SV) ((SV).end - (SV).begin)
9
10#define CMMM__STRING_VIEW__FMT "%.*s"
11#define CMMM__STRING_VIEW__FMTA(SV) (int) CMMM__STRING_VIEW__LENGTH (SV), (SV).begin
12
13struct cmmm__string_view {
14 const char *begin;
15 const char *end;
16};
17
18#ifdef CMMM__STRING_VIEW__SHORT_NAMESPACE
19#define CMMM__SV_STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR
20
21#define CMMM__SV_LENGTH CMMM__STRING_VIEW__LENGTH
22
23#define CMMM__SV_FMT CMMM__STRING_VIEW__FMT
24#define CMMM__SV_FMTA CMMM__STRING_VIEW__FMTA
25
26#define string_view cmmm__string_view
27#endif
28
29#ifdef CMMM__STRING_VIEW__STRIP_VENDOR
30#define STRING_VIEW__STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR
31
32#define STRING_VIEW__LENGTH CMMM__STRING_VIEW__LENGTH
33
34#define STRING_VIEW__FMT CMMM__STRING_VIEW__FMT
35#define STRING_VIEW__FMTA CMMM__STRING_VIEW__FMTA
36
37#ifdef CMMM__STRING_VIEW__SHORT_NAMESPACE
38#define SV_STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR
39
40#define SV_LENGTH CMMM__STRING_VIEW__LENGTH
41
42#define SV_FMT CMMM__STRING_VIEW__FMT
43#define SV_FMTA CMMM__STRING_VIEW__FMTA
44#endif
45#endif
46
47#endif // INCLUDED__CMMM__STRING_VIEW__H
48// include/cmmm/string-view.h ends here