// 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