From 42d4c659063db0e42813bc5708e687ed8da7c133 Mon Sep 17 00:00:00 2001 From: Martin Michalec Date: Sun, 22 Feb 2026 02:32:31 +0300 Subject: add implementation --- include/cmmm/string-view.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 include/cmmm/string-view.h (limited to 'include/cmmm/string-view.h') 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 @@ +// include/cmmm/string-view.h --- simple string view library +#ifndef INCLUDED__CMMM__STRING_VIEW__H +#define INCLUDED__CMMM__STRING_VIEW__H + +// #define CMMM__STRING_VIEW__STRIP_VENDOR +// #define CMMM__STRING_VIEW__SHORT_NAMESPACE + +#define CMMM__STRING_VIEW__LENGTH(SV) ((SV).end - (SV).begin) + +#define CMMM__STRING_VIEW__FMT "%.*s" +#define CMMM__STRING_VIEW__FMTA(SV) (int) CMMM__STRING_VIEW__LENGTH (SV), (SV).begin + +struct cmmm__string_view { + const char *begin; + const char *end; +}; + +#ifdef CMMM__STRING_VIEW__SHORT_NAMESPACE +#define CMMM__SV_STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR + +#define CMMM__SV_LENGTH CMMM__STRING_VIEW__LENGTH + +#define CMMM__SV_FMT CMMM__STRING_VIEW__FMT +#define CMMM__SV_FMTA CMMM__STRING_VIEW__FMTA + +#define string_view cmmm__string_view +#endif + +#ifdef CMMM__STRING_VIEW__STRIP_VENDOR +#define STRING_VIEW__STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR + +#define STRING_VIEW__LENGTH CMMM__STRING_VIEW__LENGTH + +#define STRING_VIEW__FMT CMMM__STRING_VIEW__FMT +#define STRING_VIEW__FMTA CMMM__STRING_VIEW__FMTA + +#ifdef CMMM__STRING_VIEW__SHORT_NAMESPACE +#define SV_STRIP_VENDOR CMMM__STRING_VIEW__STRIP_VENDOR + +#define SV_LENGTH CMMM__STRING_VIEW__LENGTH + +#define SV_FMT CMMM__STRING_VIEW__FMT +#define SV_FMTA CMMM__STRING_VIEW__FMTA +#endif +#endif + +#endif // INCLUDED__CMMM__STRING_VIEW__H +// include/cmmm/string-view.h ends here -- cgit v1.3