added the QSE_XLI_CASE_INSENSITIVE trait enumerator and revised macro defintions of string comparision functiosn for supporting the added enumerator

This commit is contained in:
hyung-hwan 2018-01-19 03:53:43 +00:00
parent ffa5514b43
commit e5fa90ec02
7 changed files with 292 additions and 271 deletions

View File

@ -456,11 +456,11 @@ QSE_EXPORT qse_size_t qse_wcsbytes (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strlen(str) qse_mbslen(str)
# define qse_strbytes(str) qse_mbsbytes(str)
# define qse_strlen qse_mbslen
# define qse_strbytes qse_mbsbytes
#else
# define qse_strlen(str) qse_wcslen(str)
# define qse_strbytes(str) qse_wcsbytes(str)
# define qse_strlen qse_wcslen
# define qse_strbytes qse_wcsbytes
#endif
QSE_EXPORT qse_size_t qse_mbscpy (
@ -528,15 +528,15 @@ QSE_EXPORT qse_size_t qse_wcsxncpy (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strcpy(buf,str) qse_mbscpy(buf,str)
# define qse_strxcpy(buf,bsz,str) qse_mbsxcpy(buf,bsz,str)
# define qse_strncpy(buf,str,len) qse_mbsncpy(buf,str,len)
# define qse_strxncpy(buf,bsz,str,len) qse_mbsxncpy(buf,bsz,str,len)
# define qse_strcpy qse_mbscpy
# define qse_strxcpy qse_mbsxcpy
# define qse_strncpy qse_mbsncpy
# define qse_strxncpy qse_mbsxncpy
#else
# define qse_strcpy(buf,str) qse_wcscpy(buf,str)
# define qse_strxcpy(buf,bsz,str) qse_wcsxcpy(buf,bsz,str)
# define qse_strncpy(buf,str,len) qse_wcsncpy(buf,str,len)
# define qse_strxncpy(buf,bsz,str,len) qse_wcsxncpy(buf,bsz,str,len)
# define qse_strcpy qse_wcscpy
# define qse_strxcpy qse_wcsxcpy
# define qse_strncpy qse_wcsncpy
# define qse_strxncpy qse_wcsxncpy
#endif
QSE_EXPORT qse_size_t qse_mbsput (
@ -586,13 +586,13 @@ QSE_EXPORT qse_size_t qse_wcsxnput (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strput(buf,str) qse_mbsput(buf,str)
# define qse_strxput(buf,bsz,str) qse_mbsxput(buf,bsz,str)
# define qse_strxnput(buf,bsz,str,len) qse_mbsxnput(buf,bsz,str,len)
# define qse_strput qse_mbsput
# define qse_strxput qse_mbsxput
# define qse_strxnput qse_mbsxnput
#else
# define qse_strput(buf,str) qse_wcsput(buf,str)
# define qse_strxput(buf,bsz,str) qse_wcsxput(buf,bsz,str)
# define qse_strxnput(buf,bsz,str,len) qse_wcsxnput(buf,bsz,str,len)
# define qse_strput qse_wcsput
# define qse_strxput qse_wcsxput
# define qse_strxnput qse_wcsxnput
#endif
/**
@ -718,15 +718,15 @@ QSE_EXPORT qse_size_t qse_wcsxfncpy (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strfcpy(buf,fmt,str) qse_mbsfcpy(buf,fmt,str)
# define qse_strfncpy(buf,fmt,str) qse_mbsfncpy(buf,fmt,str)
# define qse_strxfcpy(buf,bsz,fmt,str) qse_mbsxfcpy(buf,bsz,fmt,str)
# define qse_strxfncpy(buf,bsz,fmt,str) qse_mbsxfncpy(buf,bsz,fmt,str)
# define qse_strfcpy qse_mbsfcpy
# define qse_strfncpy qse_mbsfncpy
# define qse_strxfcpy qse_mbsxfcpy
# define qse_strxfncpy qse_mbsxfncpy
#else
# define qse_strfcpy(buf,fmt,str) qse_wcsfcpy(buf,fmt,str)
# define qse_strfncpy(buf,fmt,str) qse_wcsfncpy(buf,fmt,str)
# define qse_strxfcpy(buf,bsz,fmt,str) qse_wcsxfcpy(buf,bsz,fmt,str)
# define qse_strxfncpy(buf,bsz,fmt,str) qse_wcsxfncpy(buf,bsz,fmt,str)
# define qse_strfcpy qse_wcsfcpy
# define qse_strfncpy qse_wcsfncpy
# define qse_strxfcpy qse_wcsxfcpy
# define qse_strxfncpy qse_wcsxfncpy
#endif
@ -1042,11 +1042,11 @@ QSE_EXPORT qse_size_t qse_wcsxnsubst (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strxsubst(buf,bsz,fmt,subst,ctx) qse_mbsxsubst(buf,bsz,fmt,subst,ctx)
# define qse_strxnsubst(buf,bsz,fmt,fsz,subst,ctx) qse_mbsxnsubst(buf,bsz,fmt,fsz,subst,ctx)
# define qse_strxsubst qse_mbsxsubst
# define qse_strxnsubst qse_mbsxnsubst
#else
# define qse_strxsubst(buf,bsz,fmt,subst,ctx) qse_wcsxsubst(buf,bsz,fmt,subst,ctx)
# define qse_strxnsubst(buf,bsz,fmt,fsz,subst,ctx) qse_wcsxnsubst(buf,bsz,fmt,fsz,subst,ctx)
# define qse_strxsubst qse_wcsxsubst
# define qse_strxnsubst qse_wcsxnsubst
#endif
QSE_EXPORT qse_size_t qse_mbscat (
@ -1110,17 +1110,17 @@ QSE_EXPORT qse_size_t qse_wcsxncat (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strcat(buf,str) qse_mbscat(buf,str)
# define qse_strncat(buf,str,len) qse_mbsncat(buf,str,len)
# define qse_strcatn(buf,str,n) qse_mbscatn(buf,str,n)
# define qse_strxcat(buf,bsz,str) qse_mbsxcat(buf,bsz,str);
# define qse_strxncat(buf,bsz,str,len) qse_mbsxncat(buf,bsz,str,len)
# define qse_strcat qse_mbscat
# define qse_strncat qse_mbsncat
# define qse_strcatn qse_mbscatn
# define qse_strxcat qse_mbsxcat;
# define qse_strxncat qse_mbsxncat
#else
# define qse_strcat(buf,str) qse_wcscat(buf,str)
# define qse_strncat(buf,str,len) qse_wcsncat(buf,str,len)
# define qse_strcatn(buf,str,n) qse_wcscatn(buf,str,n)
# define qse_strxcat(buf,bsz,str) qse_wcsxcat(buf,bsz,str);
# define qse_strxncat(buf,bsz,str,len) qse_wcsxncat(buf,bsz,str,len)
# define qse_strcat qse_wcscat
# define qse_strncat qse_wcsncat
# define qse_strcatn qse_wcscatn
# define qse_strxcat qse_wcsxcat;
# define qse_strxncat qse_wcsxncat
#endif
@ -1183,15 +1183,15 @@ QSE_EXPORT qse_size_t qse_wcsxjoinv (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strjoin qse_mbsjoin
# define qse_strxjoin qse_mbsxjoin
# define qse_strjoinv(buf,ap) qse_mbsjoinv(buf,ap)
# define qse_strxjoinv(buf,size,ap) qse_mbsxjoinv(buf,size,ap)
# define qse_strjoin qse_mbsjoin
# define qse_strxjoin qse_mbsxjoin
# define qse_strjoinv qse_mbsjoinv
# define qse_strxjoinv qse_mbsxjoinv
#else
# define qse_strjoin qse_wcsjoin
# define qse_strxjoin qse_wcsxjoin
# define qse_strjoinv(buf,ap) qse_wcsjoinv(buf,ap)
# define qse_strxjoinv(buf,size,ap) qse_wcsxjoinv(buf,size,ap)
# define qse_strjoin qse_wcsjoin
# define qse_strxjoin qse_wcsxjoin
# define qse_strjoinv qse_wcsjoinv
# define qse_strxjoinv qse_wcsxjoinv
#endif
/* ---------------------------------------------------- */
@ -1333,23 +1333,23 @@ QSE_EXPORT int qse_wcszcasecmp (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strcmp(s1,s2) qse_mbscmp(s1,s2)
# define qse_strxcmp(s1,ln1,s2) qse_mbsxcmp(s1,ln1,s2)
# define qse_strxncmp(s1,ln1,s2,ln2) qse_mbsxncmp(s1,ln1,s2,ln2)
# define qse_strcasecmp(s1,s2) qse_mbscasecmp(s1,s2)
# define qse_strxcasecmp(s1,ln1,s2) qse_mbsxcasecmp(s1,ln1,s2)
# define qse_strxncasecmp(s1,ln1,s2,ln2) qse_mbsxncasecmp(s1,ln1,s2,ln2)
# define qse_strzcmp(s1,s2,n) qse_mbszcmp(s1,s2,n)
# define qse_strzcasecmp(s1,s2,n) qse_mbszcasecmp(s1,s2,n)
# define qse_strcmp qse_mbscmp
# define qse_strxcmp qse_mbsxcmp
# define qse_strxncmp qse_mbsxncmp
# define qse_strcasecmp qse_mbscasecmp
# define qse_strxcasecmp qse_mbsxcasecmp
# define qse_strxncasecmp qse_mbsxncasecmp
# define qse_strzcmp qse_mbszcmp
# define qse_strzcasecmp qse_mbszcasecmp
#else
# define qse_strcmp(s1,s2) qse_wcscmp(s1,s2)
# define qse_strxcmp(s1,ln1,s2) qse_wcsxcmp(s1,ln1,s2)
# define qse_strxncmp(s1,ln1,s2,ln2) qse_wcsxncmp(s1,ln1,s2,ln2)
# define qse_strcasecmp(s1,s2) qse_wcscasecmp(s1,s2)
# define qse_strxcasecmp(s1,ln1,s2) qse_wcsxcasecmp(s1,ln1,s2)
# define qse_strxncasecmp(s1,ln1,s2,ln2) qse_wcsxncasecmp(s1,ln1,s2,ln2)
# define qse_strzcmp(s1,s2,n) qse_wcszcmp(s1,s2,n)
# define qse_strzcasecmp(s1,s2,n) qse_wcszcasecmp(s1,s2,n)
# define qse_strcmp qse_wcscmp
# define qse_strxcmp qse_wcsxcmp
# define qse_strxncmp qse_wcsxncmp
# define qse_strcasecmp qse_wcscasecmp
# define qse_strxcasecmp qse_wcsxcasecmp
# define qse_strxncasecmp qse_wcsxncasecmp
# define qse_strzcmp qse_wcszcmp
# define qse_strzcasecmp qse_wcszcasecmp
#endif
QSE_EXPORT qse_mchar_t* qse_mbsdup (
@ -1415,17 +1415,17 @@ QSE_EXPORT qse_wchar_t* qse_wcsadup (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strdup(s,mmgr) qse_mbsdup(s,mmgr)
# define qse_strdup2(s1,s2,mmgr) qse_mbsdup2(s1,s2,mmgr)
# define qse_strxdup(s,l,mmgr) qse_mbsxdup(s,l,mmgr)
# define qse_strxdup2(s1,l1,s2,l2,mmgr) qse_mbsxdup(s1,l1,s2,l2,mmgr)
# define qse_stradup(sa,len,mmgr) qse_mbsadup(sa,len,mmgr)
# define qse_strdup qse_mbsdup
# define qse_strdup2 qse_mbsdup2
# define qse_strxdup qse_mbsxdup
# define qse_strxdup2 qse_mbsxdup
# define qse_stradup qse_mbsadup
#else
# define qse_strdup(s,mmgr) qse_wcsdup(s,mmgr)
# define qse_strdup2(s1,s2,mmgr) qse_wcsdup2(s1,s2,mmgr)
# define qse_strxdup(s,l,mmgr) qse_wcsxdup(s,l,mmgr)
# define qse_strxdup2(s1,l1,s2,l2,mmgr) qse_wcsxdup(s1,l1,s2,l2,mmgr)
# define qse_stradup(sa,len,mmgr) qse_wcsadup(sa,len,mmgr)
# define qse_strdup qse_wcsdup
# define qse_strdup2 qse_wcsdup2
# define qse_strxdup qse_wcsxdup
# define qse_strxdup2 qse_wcsxdup
# define qse_stradup qse_wcsadup
#endif
QSE_EXPORT qse_mchar_t* qse_mcstrdup (
@ -1451,11 +1451,11 @@ QSE_EXPORT qse_wchar_t* qse_wcstradup (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_cstrdup(sa,mmgr) qse_mcstrdup(sa,mmgr)
# define qse_cstradup(sa,len,mmgr) qse_mcstradup(sa,len,mmgr)
# define qse_cstrdup qse_mcstrdup
# define qse_cstradup qse_mcstradup
#else
# define qse_cstrdup(sa,mmgr) qse_wcstrdup(sa,mmgr)
# define qse_cstradup(sa,len,mmgr) qse_wcstradup(sa,len,mmgr)
# define qse_cstrdup qse_wcstrdup
# define qse_cstradup qse_wcstradup
#endif
@ -1628,31 +1628,31 @@ QSE_EXPORT qse_wchar_t* qse_wcsxnrcasestr (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strstr(str,sub) qse_mbsstr(str,sub)
# define qse_strxstr(str,size,sub) qse_mbsxstr(str,size,sub)
# define qse_strxnstr(str,strsz,sub,subsz) qse_mbsxnstr(str,strsz,sub,subsz)
# define qse_strcasestr(str,sub) qse_mbscasestr(str,sub)
# define qse_strxcasestr(str,size,sub) qse_mbsxcasestr(str,size,sub)
# define qse_strxncasestr(str,strsz,sub,subsz) qse_mbsxncasestr(str,strsz,sub,subsz)
# define qse_strrstr(str,sub) qse_mbsrstr(str,sub)
# define qse_strxrstr(str,size,sub) qse_mbsxrstr(str,size,sub)
# define qse_strxnrstr(str,strsz,sub,subsz) qse_mbsxnrstr(str,strsz,sub,subsz)
# define qse_strrcasestr(str,sub) qse_mbsrcasestr(str,sub)
# define qse_strxrcasestr(str,size,sub) qse_mbsxrcasestr(str,size,sub)
# define qse_strxnrcasestr(str,strsz,sub,subsz) qse_mbsxnrcasestr(str,strsz,sub,subsz)
# define qse_strstr qse_mbsstr
# define qse_strxstr qse_mbsxstr
# define qse_strxnstr qse_mbsxnstr
# define qse_strcasestr qse_mbscasestr
# define qse_strxcasestr qse_mbsxcasestr
# define qse_strxncasestr qse_mbsxncasestr
# define qse_strrstr qse_mbsrstr
# define qse_strxrstr qse_mbsxrstr
# define qse_strxnrstr qse_mbsxnrstr
# define qse_strrcasestr qse_mbsrcasestr
# define qse_strxrcasestr qse_mbsxrcasestr
# define qse_strxnrcasestr qse_mbsxnrcasestr
#else
# define qse_strstr(str,sub) qse_wcsstr(str,sub)
# define qse_strxstr(str,size,sub) qse_wcsxstr(str,size,sub)
# define qse_strxnstr(str,strsz,sub,subsz) qse_wcsxnstr(str,strsz,sub,subsz)
# define qse_strcasestr(str,sub) qse_wcscasestr(str,sub)
# define qse_strxcasestr(str,size,sub) qse_wcsxcasestr(str,size,sub)
# define qse_strxncasestr(str,strsz,sub,subsz) qse_wcsxncasestr(str,strsz,sub,subsz)
# define qse_strrstr(str,sub) qse_wcsrstr(str,sub)
# define qse_strxrstr(str,size,sub) qse_wcsxrstr(str,size,sub)
# define qse_strxnrstr(str,strsz,sub,subsz) qse_wcsxnrstr(str,strsz,sub,subsz)
# define qse_strrcasestr(str,sub) qse_wcsrcasestr(str,sub)
# define qse_strxrcasestr(str,size,sub) qse_wcsxrcasestr(str,size,sub)
# define qse_strxnrcasestr(str,strsz,sub,subsz) qse_wcsxnrcasestr(str,strsz,sub,subsz)
# define qse_strstr qse_wcsstr
# define qse_strxstr qse_wcsxstr
# define qse_strxnstr qse_wcsxnstr
# define qse_strcasestr qse_wcscasestr
# define qse_strxcasestr qse_wcsxcasestr
# define qse_strxncasestr qse_wcsxncasestr
# define qse_strrstr qse_wcsrstr
# define qse_strxrstr qse_wcsxrstr
# define qse_strxnrstr qse_wcsxnrstr
# define qse_strrcasestr qse_wcsrcasestr
# define qse_strxrcasestr qse_wcsxrcasestr
# define qse_strxnrcasestr qse_wcsxnrcasestr
#endif
QSE_EXPORT const qse_mchar_t* qse_mbsword (
@ -1728,15 +1728,15 @@ QSE_EXPORT const qse_wchar_t* qse_wcsxcaseword (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strword(str,word,edelim) qse_mbsword(str,word,edelim)
# define qse_strxword(str,len,word,edelim) qse_mbsxword(str,len,word,edelim)
# define qse_strcaseword(str,word,edelim) qse_mbscaseword(str,word,edelim)
# define qse_strxcaseword(str,len,word,edelim) qse_mbsxcaseword(str,len,word,edelim)
# define qse_strword qse_mbsword
# define qse_strxword qse_mbsxword
# define qse_strcaseword qse_mbscaseword
# define qse_strxcaseword qse_mbsxcaseword
#else
# define qse_strword(str,word,edelim) qse_wcsword(str,word,edelim)
# define qse_strxword(str,len,word,edelim) qse_wcsxword(str,len,word,edelim)
# define qse_strcaseword(str,word,edelim) qse_wcscaseword(str,word,edelim)
# define qse_strxcaseword(str,len,word,edelim) qse_wcsxcaseword(str,len,word,edelim)
# define qse_strword qse_wcsword
# define qse_strxword qse_wcsxword
# define qse_strcaseword qse_wcscaseword
# define qse_strxcaseword qse_wcsxcaseword
#endif
/**
@ -1790,15 +1790,15 @@ QSE_EXPORT qse_wchar_t* qse_wcsxrchr (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strchr(str,c) qse_mbschr(str,c)
# define qse_strxchr(str,len,c) qse_mbsxchr(str,len,c)
# define qse_strrchr(str,c) qse_mbsrchr(str,c)
# define qse_strxrchr(str,len,c) qse_mbsxrchr(str,len,c)
# define qse_strchr qse_mbschr
# define qse_strxchr qse_mbsxchr
# define qse_strrchr qse_mbsrchr
# define qse_strxrchr qse_mbsxrchr
#else
# define qse_strchr(str,c) qse_wcschr(str,c)
# define qse_strxchr(str,len,c) qse_wcsxchr(str,len,c)
# define qse_strrchr(str,c) qse_wcsrchr(str,c)
# define qse_strxrrchr(str,len,c) qse_wcsxrchr(str,len,c)
# define qse_strchr qse_wcschr
# define qse_strxchr qse_wcsxchr
# define qse_strrchr qse_wcsrchr
# define qse_strxrrchr qse_wcsxrchr
#endif
/**
@ -1870,17 +1870,17 @@ QSE_EXPORT qse_wchar_t* qse_wcscasebeg (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strbeg(str,sub) qse_mbsbeg(str,sub)
# define qse_strxbeg(str,len,sub) qse_mbsxbeg(str,len,sub)
# define qse_strnbeg(str,sub,len) qse_mbsnbeg(str,sub,len)
# define qse_strxnbeg(str,len1,sub,len2) qse_mbsxnbeg(str,len1,sub,len2)
# define qse_strcasebeg(str,sub) qse_mbscasebeg(str,sub)
# define qse_strbeg qse_mbsbeg
# define qse_strxbeg qse_mbsxbeg
# define qse_strnbeg qse_mbsnbeg
# define qse_strxnbeg qse_mbsxnbeg
# define qse_strcasebeg qse_mbscasebeg
#else
# define qse_strbeg(str,sub) qse_wcsbeg(str,sub)
# define qse_strxbeg(str,len,sub) qse_wcsxbeg(str,len,sub)
# define qse_strnbeg(str,sub,len) qse_wcsnbeg(str,sub,len)
# define qse_strxnbeg(str,len1,sub,len2) qse_wcsxnbeg(str,len1,sub,len2)
# define qse_strcasebeg(str,sub) qse_wcscasebeg(str,sub)
# define qse_strbeg qse_wcsbeg
# define qse_strxbeg qse_wcsxbeg
# define qse_strnbeg qse_wcsnbeg
# define qse_strxnbeg qse_wcsxnbeg
# define qse_strcasebeg qse_wcscasebeg
#endif
/**
@ -1942,15 +1942,15 @@ QSE_EXPORT qse_wchar_t* qse_wcsxnend (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strend(str,sub) qse_mbsend(str,sub)
# define qse_strxend(str,len,sub) qse_mbsxend(str,len,sub)
# define qse_strnend(str,sub,len) qse_mbsnend(str,sub,len)
# define qse_strxnend(str,len1,sub,len2) qse_mbsxnend(str,len1,sub,len2)
# define qse_strend qse_mbsend
# define qse_strxend qse_mbsxend
# define qse_strnend qse_mbsnend
# define qse_strxnend qse_mbsxnend
#else
# define qse_strend(str,sub) qse_wcsend(str,sub)
# define qse_strxend(str,len,sub) qse_wcsxend(str,len,sub)
# define qse_strnend(str,sub,len) qse_wcsnend(str,sub,len)
# define qse_strxnend(str,len1,sub,len2) qse_wcsxnend(str,len1,sub,len2)
# define qse_strend qse_wcsend
# define qse_strxend qse_wcsxend
# define qse_strnend qse_wcsnend
# define qse_strxnend qse_wcsxnend
#endif
QSE_EXPORT qse_size_t qse_mbsspn (
@ -1974,11 +1974,11 @@ QSE_EXPORT qse_size_t qse_wcscspn (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strspn(str1,str2) qse_mbsspn(str1,str2)
# define qse_strcspn(str1,str2) qse_mbscspn(str1,str2)
# define qse_strspn qse_mbsspn
# define qse_strcspn qse_mbscspn
#else
# define qse_strspn(str1,str2) qse_wcsspn(str1,str2)
# define qse_strcspn(str1,str2) qse_wcscspn(str1,str2)
# define qse_strspn qse_wcsspn
# define qse_strcspn qse_wcscspn
#endif
/*
@ -2038,15 +2038,15 @@ QSE_EXPORT qse_wchar_t* qse_wcsxrpbrk (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strpbrk(str1,str2) qse_mbspbrk(str1,str2)
# define qse_strxpbrk(str1,len,str2) qse_mbsxpbrk(str1,len,str2)
# define qse_strrpbrk(str1,str2) qse_mbsrpbrk(str1,str2)
# define qse_strxrpbrk(str1,len,str2) qse_mbsxrpbrk(str1,len,str2)
# define qse_strpbrk qse_mbspbrk
# define qse_strxpbrk qse_mbsxpbrk
# define qse_strrpbrk qse_mbsrpbrk
# define qse_strxrpbrk qse_mbsxrpbrk
#else
# define qse_strpbrk(str1,str2) qse_wcspbrk(str1,str2)
# define qse_strxpbrk(str1,len,str2) qse_wcsxpbrk(str1,len,str2)
# define qse_strrpbrk(str1,str2) qse_wcsrpbrk(str1,str2)
# define qse_strxrpbrk(str1,len,str2) qse_wcsxrpbrk(str1,len,str2)
# define qse_strpbrk qse_wcspbrk
# define qse_strxpbrk qse_wcsxpbrk
# define qse_strrpbrk qse_wcsrpbrk
# define qse_strxrpbrk qse_wcsxrpbrk
#endif
/*
@ -2326,59 +2326,59 @@ QSE_EXPORT qse_uintmax_t qse_wcsxtouintmax (
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strtoi(str,base,end) qse_mbstoi(str,base,end)
# define qse_strtol(str,base,end) qse_mbstol(str,base,end)
# define qse_strtoui(str,base,end) qse_mbstoui(str,base,end)
# define qse_strtoul(str,base,end) qse_mbstoul(str,base,end)
# define qse_strtoi qse_mbstoi
# define qse_strtol qse_mbstol
# define qse_strtoui qse_mbstoui
# define qse_strtoul qse_mbstoul
/* ----- */
# define qse_strxtoi(str,len,base,end) qse_mbsxtoi(str,len,base,end)
# define qse_strxtol(str,len,base,end) qse_mbsxtol(str,len,base,end)
# define qse_strxtoui(str,len,base,end) qse_mbsxtoui(str,len,base,end)
# define qse_strxtoul(str,len,base,end) qse_mbsxtoul(str,len,base,end)
# define qse_strxtoi qse_mbsxtoi
# define qse_strxtol qse_mbsxtol
# define qse_strxtoui qse_mbsxtoui
# define qse_strxtoul qse_mbsxtoul
/* ----- */
# define qse_strtoint(str,base,end) qse_mbstoint(str,base,end)
# define qse_strtolong(str,base,end) qse_mbstolong(str,base,end)
# define qse_strtointmax(str,base,end) qse_mbstointmax(str,base,end)
# define qse_strtoint qse_mbstoint
# define qse_strtolong qse_mbstolong
# define qse_strtointmax qse_mbstointmax
/* ----- */
# define qse_strtouint(str,base,end) qse_mbstouint(str,base,end)
# define qse_strtoulong(str,base,end) qse_mbstoulong(str,base,end)
# define qse_strtouintmax(str,base,end) qse_mbstouintmax(str,base,end)
# define qse_strtouint qse_mbstouint
# define qse_strtoulong qse_mbstoulong
# define qse_strtouintmax qse_mbstouintmax
/* ----- */
# define qse_strxtoint(str,len,base,end) qse_mbsxtoint(str,len,base,end)
# define qse_strxtolong(str,len,base,end) qse_mbsxtolong(str,len,base,end)
# define qse_strxtointmax(str,len,base,end) qse_mbsxtointmax(str,len,base,end)
# define qse_strxtoint qse_mbsxtoint
# define qse_strxtolong qse_mbsxtolong
# define qse_strxtointmax qse_mbsxtointmax
/* ----- */
# define qse_strxtouint(str,len,base,end) qse_mbsxtouint(str,len,base,end)
# define qse_strxtoulong(str,len,base,end) qse_mbsxtoulong(str,len,base,end)
# define qse_strxtouintmax(str,len,base,end) qse_mbsxtouintmax(str,len,base,end)
# define qse_strxtouint qse_mbsxtouint
# define qse_strxtoulong qse_mbsxtoulong
# define qse_strxtouintmax qse_mbsxtouintmax
#else
# define qse_strtoi(str,base,end) qse_wcstoi(str,base,end)
# define qse_strtol(str,base,end) qse_wcstol(str,base,end)
# define qse_strtoui(str,base,end) qse_wcstoui(str,base,end)
# define qse_strtoul(str,base,end) qse_wcstoul(str,base,end)
# define qse_strtoi qse_wcstoi
# define qse_strtol qse_wcstol
# define qse_strtoui qse_wcstoui
# define qse_strtoul qse_wcstoul
/* ----- */
# define qse_strxtoi(str,len,base,end) qse_wcsxtoi(str,len,base,end)
# define qse_strxtol(str,len,base,end) qse_wcsxtol(str,len,base,end)
# define qse_strxtoui(str,len,base,end) qse_wcsxtoui(str,len,base,end)
# define qse_strxtoul(str,len,base,end) qse_wcsxtoul(str,len,base,end)
# define qse_strxtoi qse_wcsxtoi
# define qse_strxtol qse_wcsxtol
# define qse_strxtoui qse_wcsxtoui
# define qse_strxtoul qse_wcsxtoul
/* ----- */
# define qse_strtoint(str,base,end) qse_wcstoint(str,base,end)
# define qse_strtolong(str,base,end) qse_wcstolong(str,base,end)
# define qse_strtointmax(str,base,end) qse_wcstointmax(str,base,end)
# define qse_strtoint qse_wcstoint
# define qse_strtolong qse_wcstolong
# define qse_strtointmax qse_wcstointmax
/* ----- */
# define qse_strtouint(str,base,end) qse_wcstouint(str,base,end)
# define qse_strtoulong(str,base,end) qse_wcstoulong(str,base,end)
# define qse_strtouintmax(str,base,end) qse_wcstouintmax(str,base,end)
# define qse_strtouint qse_wcstouint
# define qse_strtoulong qse_wcstoulong
# define qse_strtouintmax qse_wcstouintmax
/* ----- */
# define qse_strxtoint(str,len,base,end) qse_wcsxtoint(str,len,base,end)
# define qse_strxtolong(str,len,base,end) qse_wcsxtolong(str,len,base,end)
# define qse_strxtointmax(str,len,base,end) qse_wcsxtointmax(str,len,base,end)
# define qse_strxtoint qse_wcsxtoint
# define qse_strxtolong qse_wcsxtolong
# define qse_strxtointmax qse_wcsxtointmax
/* ----- */
# define qse_strxtouint(str,len,base,end) qse_wcsxtouint(str,len,base,end)
# define qse_strxtoulong(str,len,base,end) qse_wcsxtoulong(str,len,base,end)
# define qse_strxtouintmax(str,len,base,end) qse_wcsxtouintmax(str,len,base,end)
# define qse_strxtouint qse_wcsxtouint
# define qse_strxtoulong qse_wcsxtoulong
# define qse_strxtouintmax qse_wcsxtouintmax
#endif
@ -2398,9 +2398,9 @@ QSE_EXPORT int qse_wcshextobin (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strhextobin(hex,hexlen,buf,buflen) qse_mbshextobin(hex,hexlen,buf,buflen)
# define qse_strhextobin qse_mbshextobin
#else
# define qse_strhextobin(hex,hexlen,buf,buflen) qse_wcshextobin(hex,hexlen,buf,buflen)
# define qse_strhextobin qse_wcshextobin
#endif
QSE_EXPORT qse_size_t qse_mbsdel (
@ -2430,11 +2430,11 @@ QSE_EXPORT qse_size_t qse_wcsxdel (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strdel(str,pos,n) qse_mbsdel(str,pos,n)
# define qse_strxdel(str,len,pos,n) qse_mbsxdel(str,len,pos,n)
# define qse_strdel qse_mbsdel
# define qse_strxdel qse_mbsxdel
#else
# define qse_strdel(str,pos,n) qse_wcsdel(str,pos,n)
# define qse_strxdel(str,len,pos,n) qse_wcsxdel(str,len,pos,n)
# define qse_strdel qse_wcsdel
# define qse_strxdel qse_wcsxdel
#endif
@ -2461,11 +2461,11 @@ QSE_EXPORT qse_size_t qse_wcsxexcl (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strexcl(str,cs) qse_mbsexcl(str,cs)
# define qse_strxexcl(str,len,cs) qse_mbsxexcl(str,len,cs)
# define qse_strexcl qse_mbsexcl
# define qse_strxexcl qse_mbsxexcl
#else
# define qse_strexcl(str,cs) qse_wcsexcl(str,cs)
# define qse_strxexcl(str,len,cs) qse_wcsxexcl(str,len,cs)
# define qse_strexcl qse_wcsexcl
# define qse_strxexcl qse_wcsxexcl
#endif
QSE_EXPORT qse_size_t qse_mbsincl (
@ -2491,11 +2491,11 @@ QSE_EXPORT qse_size_t qse_wcsxincl (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strincl(str,cs) qse_mbsincl(str,cs)
# define qse_strxincl(str,len,cs) qse_mbsxincl(str,len,cs)
# define qse_strincl qse_mbsincl
# define qse_strxincl qse_mbsxincl
#else
# define qse_strincl(str,cs) qse_wcsincl(str,cs)
# define qse_strxincl(str,len,cs) qse_wcsxincl(str,len,cs)
# define qse_strincl qse_wcsincl
# define qse_strxincl qse_wcsxincl
#endif
QSE_EXPORT qse_size_t qse_mbsset (
@ -2526,11 +2526,11 @@ QSE_EXPORT qse_size_t qse_wcsxset (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strset(buf,c,n) qse_mbsset(buf,c,n)
# define qse_strxset(buf,bsz,c,n) qse_mbsxset(buf,bsz,c,n)
# define qse_strset qse_mbsset
# define qse_strxset qse_mbsxset
#else
# define qse_strset(buf,c,n) qse_wcsset(buf,c,n)
# define qse_strxset(buf,bsz,c,n) qse_wcsxset(buf,bsz,c,n)
# define qse_strset qse_wcsset
# define qse_strxset qse_wcsxset
#endif
/* case conversion */
@ -2552,11 +2552,11 @@ QSE_EXPORT qse_size_t qse_wcsupr (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strlwr(str) qse_mbslwr(str);
# define qse_strupr(str) qse_mbsupr(str);
# define qse_strlwr qse_mbslwr;
# define qse_strupr qse_mbsupr;
#else
# define qse_strlwr(str) qse_wcslwr(str);
# define qse_strupr(str) qse_wcsupr(str);
# define qse_strlwr qse_wcslwr;
# define qse_strupr qse_wcsupr;
#endif
@ -2579,11 +2579,11 @@ QSE_EXPORT qse_size_t qse_wcsxrev (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strrev(str) qse_mbsrev(str)
# define qse_strxrev(str,len) qse_mbsxrev(str,len)
# define qse_strrev qse_mbsrev
# define qse_strxrev qse_mbsxrev
#else
# define qse_strrev(str) qse_wcsrev(str)
# define qse_strxrev(str,len) qse_wcsxrev(str,len)
# define qse_strrev qse_wcsrev
# define qse_strxrev qse_wcsxrev
#endif
QSE_EXPORT qse_size_t qse_mbsrot (
@ -2613,11 +2613,11 @@ QSE_EXPORT qse_size_t qse_wcsxrot (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strrot(str,dir,n) qse_mbsrot(str,dir,n)
# define qse_strxrot(str,len,dir,n) qse_mbsrot(str,len,dir,n)
# define qse_strrot qse_mbsrot
# define qse_strxrot qse_mbsrot
#else
# define qse_strrot(str,dir,n) qse_wcsrot(str,dir,n)
# define qse_strxrot(str,len,dir,n) qse_wcsrot(str,len,dir,n)
# define qse_strrot qse_wcsrot
# define qse_strxrot qse_wcsrot
#endif
/**
@ -2707,11 +2707,11 @@ QSE_EXPORT int qse_wcsspltrn (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strspl(str,delim,lquote,rquote,escape) qse_mbsspl(str,delim,lquote,rquote,escape)
# define qse_strspltrn(str,delim,lquote,rquote,escape,trset) qse_mbsspltrn(str,delim,lquote,rquote,escape,trset)
# define qse_strspl qse_mbsspl
# define qse_strspltrn qse_mbsspltrn
#else
# define qse_strspl(str,delim,lquote,rquote,escape) qse_wcsspl(str,delim,lquote,rquote,escape)
# define qse_strspltrn(str,delim,lquote,rquote,escape,trset) qse_wcsspltrn(str,delim,lquote,rquote,escape,trset)
# define qse_strspl qse_wcsspl
# define qse_strspltrn qse_wcsspltrn
#endif
@ -2758,13 +2758,13 @@ QSE_EXPORT qse_wchar_t* qse_wcsxntok (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strtok(s,d,t) qse_mbstok(s,d,t)
# define qse_strxtok(s,len,d,t) qse_mbsxtok(s,len,d,t)
# define qse_strxntok(s,len,d,dl,t) qse_mbsxntok(s,len,d,dl,t)
# define qse_strtok qse_mbstok
# define qse_strxtok qse_mbsxtok
# define qse_strxntok qse_mbsxntok
#else
# define qse_strtok(s,d,t) qse_wcstok(s,d,t)
# define qse_strxtok(s,len,d,t) qse_wcsxtok(s,len,d,t)
# define qse_strxntok(s,len,d,dl,t) qse_wcsxntok(s,len,d,dl,t)
# define qse_strtok qse_wcstok
# define qse_strxtok qse_wcsxtok
# define qse_strxntok qse_wcsxntok
#endif
/**
@ -2878,15 +2878,15 @@ QSE_EXPORT qse_size_t qse_wcsxtrm (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strtrmx(str,opt) qse_mbstrmx(str,opt)
# define qse_strxtrmx(str,len,opt) qse_mbsxtrmx(str,len,opt)
# define qse_strtrm(str) qse_mbstrm(str)
# define qse_strxtrm(str,len) qse_mbsxtrm(str,len)
# define qse_strtrmx qse_mbstrmx
# define qse_strxtrmx qse_mbsxtrmx
# define qse_strtrm qse_mbstrm
# define qse_strxtrm qse_mbsxtrm
#else
# define qse_strtrmx(str,opt) qse_wcstrmx(str,opt)
# define qse_strxtrmx(str,len,opt) qse_wcsxtrmx(str,len,opt)
# define qse_strtrm(str) qse_wcstrm(str)
# define qse_strxtrm(str,len) qse_wcsxtrm(str,len)
# define qse_strtrmx qse_wcstrmx
# define qse_strxtrmx qse_wcsxtrmx
# define qse_strtrm qse_wcstrm
# define qse_strxtrm qse_wcsxtrm
#endif
/**
@ -2929,11 +2929,11 @@ QSE_EXPORT qse_size_t qse_wcsxpac (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strpac(str) qse_mbspac(str)
# define qse_strxpac(str,len) qse_mbsxpac(str,len)
# define qse_strpac qse_mbspac
# define qse_strxpac qse_mbsxpac
#else
# define qse_strpac(str) qse_wcspac(str)
# define qse_strxpac(str,len) qse_wcsxpac(str,len)
# define qse_strpac qse_wcspac
# define qse_strxpac qse_wcsxpac
#endif
QSE_EXPORT int qse_mbsfnmat (
@ -2993,15 +2993,15 @@ QSE_EXPORT int qse_wcsxnfnmat (
);
#if defined(QSE_CHAR_IS_MCHAR)
# define qse_strfnmat(str,ptn,flags) qse_mbsfnmat(str,ptn,flags)
# define qse_strxfnmat(str,slen,ptn,flags) qse_mbsxfnmat(str,slen,ptn,flags)
# define qse_strnfnmat(str,ptn,plen,flags) qse_mbsnfnmat(str,ptn,plen,flags)
# define qse_strxnfnmat(str,slen,ptn,plen,flags) qse_mbsxnfnmat(str,slen,ptn,plen,flags)
# define qse_strfnmat qse_mbsfnmat
# define qse_strxfnmat qse_mbsxfnmat
# define qse_strnfnmat qse_mbsnfnmat
# define qse_strxnfnmat qse_mbsxnfnmat
#else
# define qse_strfnmat(str,ptn,flags) qse_wcsfnmat(str,ptn,flags)
# define qse_strxfnmat(str,slen,ptn,flags) qse_wcsxfnmat(str,slen,ptn,flags)
# define qse_strnfnmat(str,ptn,plen,flags) qse_wcsnfnmat(str,ptn,plen,flags)
# define qse_strxnfnmat(str,slen,ptn,plen,flags) qse_wcsxnfnmat(str,slen,ptn,plen,flags)
# define qse_strfnmat qse_wcsfnmat
# define qse_strxfnmat qse_wcsxfnmat
# define qse_strnfnmat qse_wcsnfnmat
# define qse_strxnfnmat qse_wcsxnfnmat
#endif
QSE_EXPORT int qse_mbsistype (
@ -3027,11 +3027,11 @@ QSE_EXPORT int qse_wcsxistype (
);
#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)
# define qse_stristype qse_mbsistype
# define qse_strxistype qse_mbsxistype
#else
# define qse_stristype(str,type) qse_wcsistype(str,type)
# define qse_strxistype(str,len,type) qse_wcsxistype(str,len,type)
# define qse_stristype qse_wcsistype
# define qse_strxistype qse_wcsxistype
#endif
/* ------------------------------------------------------------------------- */

View File

@ -76,11 +76,11 @@ enum qse_xli_errnum_t
QSE_XLI_EVALUE, /**< value expected in place of '${0}' */
QSE_XLI_ESTRNC, /**< string not closed */
QSE_XLI_ETAGNC, /**< tag not closed */
QSE_XLI_EINCLSTR ,/**< '@include' not followed by a string */
QSE_XLI_EINCLSTR ,/**< '\include' not followed by a string */
QSE_XLI_ELXCHR, /**< invalid character '${0} */
QSE_XLI_ETAGCHR, /**< invalid tag character '${0} */
QSE_XLI_EXKWNR, /**< @word '${0}' not recognized */
QSE_XLI_EXKWEM, /**< @ not followed by a valid word */
QSE_XLI_EXKWNR, /**< \word '${0}' not recognized */
QSE_XLI_EXKWEM, /**< \ not followed by a valid word */
QSE_XLI_EIDENT, /**< invalid identifier '${0}' */
QSE_XLI_EKEY, /**< key expected in place of '${0}' */
QSE_XLI_ENOKEY, /**< missing key after key tag */
@ -154,8 +154,12 @@ enum qse_xli_trait_t
* the ini format doesn't support these regardless of this option. */
QSE_XLI_BOOLEAN = (1 << 11),
/** perform a case insensitive search. it doesn't affect
* tokenization of keyword idntifiers like @include. */
QSE_XLI_CASE_INSENSITIVE = (1 << 12),
/** enable pair validation against pair definitions while reading */
QSE_XLI_VALIDATE = (1 << 12)
QSE_XLI_VALIDATE = (1 << 13)
};
typedef enum qse_xli_trait_t qse_xli_trait_t;
@ -520,7 +524,7 @@ QSE_EXPORT qse_xli_errstr_t qse_xli_geterrstr (
*
* Here is an example of changing the formatting string for the #QSE_XLI_EIOFIL
* error.
* @code
* \code
* qse_xli_errstr_t orgerrstr;
*
* const qse_char_t* myerrstr (qse_xli_t* xli, qse_xli_errnum_t num)
@ -536,7 +540,7 @@ QSE_EXPORT qse_xli_errstr_t qse_xli_geterrstr (
* qse_xli_seterrstr (xli, myerrstr);
* ...
* }
* @endcode
* \endcode
*/
QSE_EXPORT void qse_xli_seterrstr (
qse_xli_t* xli, /**< xli object */
@ -545,7 +549,7 @@ QSE_EXPORT void qse_xli_seterrstr (
/**
* The qse_xli_geterrnum() function gets the number of the last error.
* @return error number
* \return error number
*/
QSE_EXPORT qse_xli_errnum_t qse_xli_geterrnum (
const qse_xli_t* xli /**< xli object */
@ -554,7 +558,7 @@ QSE_EXPORT qse_xli_errnum_t qse_xli_geterrnum (
/**
* The qse_xli_geterrloc() function gets the location where the last error
* has occurred.
* @return error location
* \return error location
*/
QSE_EXPORT const qse_xli_loc_t* qse_xli_geterrloc (
const qse_xli_t* xli /**< xli object */
@ -562,7 +566,7 @@ QSE_EXPORT const qse_xli_loc_t* qse_xli_geterrloc (
/**
* The qse_xli_geterrmsg() function gets a string describing the last error.
* @return error message pointer
* \return error message pointer
*/
QSE_EXPORT const qse_char_t* qse_xli_geterrmsg (
const qse_xli_t* xli /**< xli object */

View File

@ -354,7 +354,7 @@ static int read_list (qse_xli_t* xli)
while (atom)
{
if (atom->type == QSE_XLI_PAIR &&
qse_strcmp (((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
xli->opt.strcmp(((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_XSTR(xli->tok.name), &xli->tok.loc);
goto oops;

View File

@ -167,6 +167,7 @@ static qse_xli_tok_type_t classify_ident (qse_xli_t* xli, const qse_cstr_t* name
mid = left + (right - left) / 2;
kwp = &kwtab[mid];
/* not affected by case-insensitivity */
n = qse_strxncmp (kwp->name.ptr, kwp->name.len, name->ptr, name->len);
if (n > 0)
{
@ -539,7 +540,7 @@ static int check_token_for_key_eligibility (qse_xli_t* xli, qse_xli_list_t* parl
while (atom)
{
if (atom->type == QSE_XLI_PAIR &&
qse_strcmp(((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
xli->opt.strcmp(((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_XSTR(xli->tok.name), &xli->tok.loc);
return -1;

View File

@ -285,7 +285,8 @@ retry:
mid = left + (right - left) / 2;
kwp = &kwtabp[mid];
n = qse_strxncmp (kwp->name.ptr, kwp->name.len, name->ptr, name->len);
/* the identifier classification is not affected by case-insensivity */
n = qse_strxncmp(kwp->name.ptr, kwp->name.len, name->ptr, name->len);
if (n > 0)
{
/* if left, right, mid were of qse_size_t,
@ -809,7 +810,7 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
while (atom)
{
if (atom->type == QSE_XLI_PAIR &&
qse_strcmp (((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
xli->opt.strcmp(((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_XSTR(xli->tok.name), &xli->tok.loc);
goto oops;
@ -836,8 +837,8 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
{
if (atom->type == QSE_XLI_PAIR &&
((qse_xli_pair_t*)atom)->alias &&
qse_strcmp (((qse_xli_pair_t*)atom)->key, key.ptr) == 0 &&
qse_strcmp (((qse_xli_pair_t*)atom)->alias, QSE_STR_PTR(xli->tok.name)) == 0)
xli->opt.strcmp(((qse_xli_pair_t*)atom)->key, key.ptr) == 0 &&
xli->opt.strcmp(((qse_xli_pair_t*)atom)->alias, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_XSTR(xli->tok.name), &xli->tok.loc);
goto oops;

View File

@ -70,6 +70,8 @@ int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr, qse_size_t rootxtnsize)
xli->errstr = qse_xli_dflerrstr;
xli->opt.root_xtnsize = rootxtnsize;
xli->opt.key_splitter = QSE_T('.');
xli->opt.strcmp = qse_strcmp;
xli->opt.strxcmp = qse_strxcmp;
xli->dotted_curkey = qse_str_open (mmgr, 0, 128);
if (xli->dotted_curkey == QSE_NULL) goto oops;
@ -121,6 +123,16 @@ int qse_xli_setopt (qse_xli_t* xli, qse_xli_opt_t id, const void* value)
{
case QSE_XLI_TRAIT:
xli->opt.trait = *(const int*)value;
if (xli->opt.trait & QSE_XLI_CASE_INSENSITIVE)
{
xli->opt.strcmp = qse_strcasecmp;
xli->opt.strxcmp = qse_strxcasecmp;
}
else
{
xli->opt.strcmp = qse_strcmp;
xli->opt.strxcmp = qse_strxcmp;
}
return 0;
case QSE_XLI_PAIRXTNSIZE:
@ -648,7 +660,7 @@ static qse_size_t count_pairs_by_key (
if (p->type == QSE_XLI_PAIR)
{
qse_xli_pair_t* pair = (qse_xli_pair_t*)p;
if (qse_strxcmp (key->ptr, key->len, pair->key) == 0) count++;
if (xli->opt.strxcmp(key->ptr, key->len, pair->key) == 0) count++;
}
p = p->next;
@ -670,10 +682,10 @@ static qse_xli_pair_t* find_pair_by_key_and_alias (
if (p->type == QSE_XLI_PAIR)
{
qse_xli_pair_t* pair = (qse_xli_pair_t*)p;
if (qse_strxcmp (key->ptr, key->len, pair->key) == 0)
if (xli->opt.strxcmp(key->ptr, key->len, pair->key) == 0)
{
if (alias == QSE_NULL ||
qse_strxcmp (alias->ptr, alias->len, pair->alias) == 0) return pair;
xli->opt.strxcmp(alias->ptr, alias->len, pair->alias) == 0) return pair;
}
}
@ -697,7 +709,7 @@ static qse_xli_pair_t* find_pair_by_key_and_index (
if (p->type == QSE_XLI_PAIR)
{
qse_xli_pair_t* pair = (qse_xli_pair_t*)p;
if (qse_strxcmp (key->ptr, key->len, pair->key) == 0)
if (xli->opt.strxcmp(key->ptr, key->len, pair->key) == 0)
{
if (index == count) return pair;
count++;

View File

@ -103,6 +103,9 @@ struct qse_xli_t
qse_size_t pair_xtnsize;
qse_size_t root_xtnsize;
qse_char_t key_splitter; /**< character to use to split a key in the fqpn format */
int (*strcmp) (const qse_char_t* s1, const qse_char_t* s2);
int (*strxcmp) (const qse_char_t* s1, qse_size_t len1, const qse_char_t* s2);
} opt;
qse_xli_ecb_t* ecb;