From fa21cef9208bb1fa0c172c819e56295a32026511 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Fri, 12 Jan 2018 08:44:41 +0000 Subject: [PATCH] added qse_mbsxistype(0 and qse_wcsxistype() --- qse/include/qse/cmn/str.h | 14 ++++++++++++++ qse/lib/cmn/str-type.c | 24 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/qse/include/qse/cmn/str.h b/qse/include/qse/cmn/str.h index 6ed88379..f0103e0a 100644 --- a/qse/include/qse/cmn/str.h +++ b/qse/include/qse/cmn/str.h @@ -3009,15 +3009,29 @@ QSE_EXPORT int qse_mbsistype ( qse_mctype_t type ); +QSE_EXPORT int qse_mbsxistype ( + const qse_mchar_t* str, + qse_size_t len, + qse_mctype_t type +); + QSE_EXPORT int qse_wcsistype ( const qse_wchar_t* str, qse_wctype_t type ); +QSE_EXPORT int qse_wcsxistype ( + const qse_wchar_t* str, + qse_size_t len, + qse_wctype_t type +); + #if defined(QSE_CHAR_IS_MCHAR) # define qse_stristype(str,type) qse_mbsistype(str,type) +# define qse_strxistype(str,len,type) qse_mbsxistype(str,len,type) #else # define qse_stristype(str,type) qse_wcsistype(str,type) +# define qse_strxistype(str,len,type) qse_wcsxistype(str,len,type) #endif /* ------------------------------------------------------------------------- */ diff --git a/qse/lib/cmn/str-type.c b/qse/lib/cmn/str-type.c index ac402019..8df3b1f1 100644 --- a/qse/lib/cmn/str-type.c +++ b/qse/lib/cmn/str-type.c @@ -38,6 +38,19 @@ int qse_mbsistype (const qse_mchar_t* str, qse_mctype_t type) return 1; } +int qse_mbsxistype (const qse_mchar_t* str, qse_size_t len, qse_mctype_t type) +{ + const qse_mchar_t* end = str + len; + while (str < end) + { + if (!qse_ismctype(*str, type)) return 0; + str++; + } + return 1; +} + +/* -------------------------------------------------------------------------- */ + int qse_wcsistype (const qse_wchar_t* str, qse_wctype_t type) { while (*str) @@ -47,3 +60,14 @@ int qse_wcsistype (const qse_wchar_t* str, qse_wctype_t type) } return 1; } + +int qse_wcsxistype (const qse_wchar_t* str, qse_size_t len, qse_wctype_t type) +{ + const qse_wchar_t* end = str + len; + while (str < end) + { + if (!qse_iswctype(*str, type)) return 0; + str++; + } + return 1; +}