summaryrefslogtreecommitdiffstats
path: root/generic/tclStrIdxTree.h
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclStrIdxTree.h')
-rw-r--r--generic/tclStrIdxTree.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/generic/tclStrIdxTree.h b/generic/tclStrIdxTree.h
index e80d3db..d2d6f0b 100644
--- a/generic/tclStrIdxTree.h
+++ b/generic/tclStrIdxTree.h
@@ -89,6 +89,41 @@ TclUtfFindEqualNC(
return ret;
}
+inline const char *
+TclUtfFindEqualNCInLwr(
+ register const char *cs, /* UTF string (in anycase) to find in cin. */
+ register const char *cse, /* End of cs */
+ register const char *cin, /* UTF string (in lowercase) will be browsed. */
+ register const char *cine, /* End of cin */
+ const char **cinfnd) /* Return position in cin */
+{
+ register const char *ret = cs;
+ Tcl_UniChar ch1, ch2;
+ do {
+ cs += TclUtfToUniChar(cs, &ch1);
+ cin += TclUtfToUniChar(cin, &ch2);
+ if (ch1 != ch2) {
+ ch1 = Tcl_UniCharToLower(ch1);
+ if (ch1 != ch2) break;
+ }
+ *cinfnd = cin;
+ } while ((ret = cs) < cse && cin < cine);
+ return ret;
+}
+
+inline char *
+TclUtfNext(
+ register const char *src) /* The current location in the string. */
+{
+ if (((unsigned char) *(src)) < 0xC0) {
+ return ++src;
+ } else {
+ Tcl_UniChar ch;
+ return src + TclUtfToUniChar(src, &ch);
+ }
+}
+
+
/*
* Primitives to safe set, reset and free references.
*/