summaryrefslogtreecommitdiffstats
path: root/generic/tclUtf.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclUtf.c')
-rw-r--r--generic/tclUtf.c96
1 files changed, 49 insertions, 47 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 1fb8847..bc4602f 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -105,7 +105,7 @@ static int Invalid(const char *src);
*---------------------------------------------------------------------------
*/
-size_t
+int
TclUtfCount(
int ch) /* The Unicode character whose size is returned. */
{
@@ -205,7 +205,7 @@ Invalid(
*/
#undef Tcl_UniCharToUtf
-size_t
+Tcl_Size
Tcl_UniCharToUtf(
int ch, /* The Tcl_UniChar to be stored in the
* buffer. Can be or'ed with flag TCL_COMBINE
@@ -318,13 +318,14 @@ three:
char *
Tcl_UniCharToUtfDString(
const int *uniStr, /* Unicode string to convert to UTF-8. */
- size_t uniLength, /* Length of Unicode string. */
+ Tcl_Size uniLength, /* Length of Unicode string. Negative for nul
+ * nul terminated string */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
* to this previously initialized DString. */
{
const int *w, *wEnd;
char *p, *string;
- size_t oldLength;
+ Tcl_Size oldLength;
/*
* UTF-8 string length in bytes will be <= Unicode string length * 4.
@@ -333,7 +334,7 @@ Tcl_UniCharToUtfDString(
if (uniStr == NULL) {
return NULL;
}
- if (uniLength == TCL_INDEX_NONE) {
+ if (uniLength < 0) {
uniLength = 0;
w = uniStr;
while (*w != '\0') {
@@ -359,7 +360,7 @@ Tcl_UniCharToUtfDString(
char *
Tcl_Char16ToUtfDString(
const unsigned short *uniStr,/* Utf-16 string to convert to UTF-8. */
- size_t uniLength, /* Length of Utf-16 string. */
+ Tcl_Size uniLength, /* Length of Utf-16 string. */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
* to this previously initialized DString. */
{
@@ -375,7 +376,7 @@ Tcl_Char16ToUtfDString(
if (uniStr == NULL) {
return NULL;
}
- if (uniLength == TCL_INDEX_NONE) {
+ if (uniLength < 0) {
uniLength = 0;
w = uniStr;
@@ -453,7 +454,7 @@ static const unsigned short cp1252[32] = {
};
#undef Tcl_UtfToUniChar
-size_t
+Tcl_Size
Tcl_UtfToUniChar(
const char *src, /* The UTF-8 string. */
int *chPtr)/* Filled with the Unicode character represented by
@@ -536,7 +537,7 @@ Tcl_UtfToUniChar(
return 1;
}
-size_t
+Tcl_Size
Tcl_UtfToChar16(
const char *src, /* The UTF-8 string. */
unsigned short *chPtr)/* Filled with the Tcl_UniChar represented by
@@ -657,7 +658,7 @@ Tcl_UtfToChar16(
int *
Tcl_UtfToUniCharDString(
const char *src, /* UTF-8 string to convert to Unicode. */
- size_t length, /* Length of UTF-8 string in bytes, or -1 for
+ Tcl_Size length, /* Length of UTF-8 string in bytes, or -1 for
* strlen(). */
Tcl_DString *dsPtr) /* Unicode representation of string is
* appended to this previously initialized
@@ -665,7 +666,7 @@ Tcl_UtfToUniCharDString(
{
int ch = 0, *w, *wString;
const char *p;
- size_t oldLength;
+ Tcl_Size oldLength;
/* Pointer to the end of string. Never read endPtr[0] */
const char *endPtr = src + length;
/* Pointer to last byte where optimization still can be used */
@@ -674,7 +675,7 @@ Tcl_UtfToUniCharDString(
if (src == NULL) {
return NULL;
}
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(src);
}
@@ -714,7 +715,7 @@ Tcl_UtfToUniCharDString(
unsigned short *
Tcl_UtfToChar16DString(
const char *src, /* UTF-8 string to convert to Unicode. */
- size_t length, /* Length of UTF-8 string in bytes, or -1 for
+ Tcl_Size length, /* Length of UTF-8 string in bytes, or -1 for
* strlen(). */
Tcl_DString *dsPtr) /* Unicode representation of string is
* appended to this previously initialized
@@ -722,7 +723,7 @@ Tcl_UtfToChar16DString(
{
unsigned short ch = 0, *w, *wString;
const char *p;
- size_t oldLength;
+ Tcl_Size oldLength;
/* Pointer to the end of string. Never read endPtr[0] */
const char *endPtr = src + length;
/* Pointer to last byte where optimization still can be used */
@@ -731,7 +732,7 @@ Tcl_UtfToChar16DString(
if (src == NULL) {
return NULL;
}
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
length = strlen(src);
}
@@ -792,7 +793,7 @@ int
Tcl_UtfCharComplete(
const char *src, /* String to check if first few bytes contain
* a complete UTF-8 character. */
- size_t length) /* Length of above string in bytes. */
+ Tcl_Size length) /* Length of above string in bytes. */
{
return length >= complete[UCHAR(*src)];
}
@@ -815,16 +816,16 @@ Tcl_UtfCharComplete(
*---------------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_NumUtfChars(
const char *src, /* The UTF-8 string to measure. */
- size_t length) /* The length of the string in bytes, or
- * TCL_INDEX_NONE for strlen(src). */
+ Tcl_Size length) /* The length of the string in bytes, or
+ * negative value for strlen(src). */
{
Tcl_UniChar ch = 0;
- size_t i = 0;
+ Tcl_Size i = 0;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
/* string is NUL-terminated, so TclUtfToUniChar calls are safe. */
while (*src != '\0') {
src += TclUtfToUniChar(src, &ch);
@@ -867,16 +868,16 @@ Tcl_NumUtfChars(
return i;
}
-size_t
+Tcl_Size
TclNumUtfChars(
const char *src, /* The UTF-8 string to measure. */
- size_t length) /* The length of the string in bytes, or
- * TCL_INDEX_NONE for strlen(src). */
+ Tcl_Size length) /* The length of the string in bytes, or
+ * negative for strlen(src). */
{
unsigned short ch = 0;
- size_t i = 0;
+ Tcl_Size i = 0;
- if (length == TCL_INDEX_NONE) {
+ if (length < 0) {
/* string is NUL-terminated, so TclUtfToUniChar calls are safe. */
while (*src != '\0') {
src += Tcl_UtfToChar16(src, &ch);
@@ -1194,12 +1195,12 @@ Tcl_UtfPrev(
int
Tcl_UniCharAtIndex(
const char *src, /* The UTF-8 string to dereference. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
Tcl_UniChar ch = 0;
int i = 0;
- if (index == TCL_INDEX_NONE) {
+ if (index < 0) {
return -1;
}
while (index--) {
@@ -1238,11 +1239,11 @@ Tcl_UniCharAtIndex(
const char *
Tcl_UtfAtIndex(
const char *src, /* The UTF-8 string. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
int ch = 0;
- if (index != TCL_INDEX_NONE) {
+ if (index > 0) {
while (index--) {
/* Make use of the #undef Tcl_UtfToUniChar above, which already handles UCS4. */
src += Tcl_UtfToUniChar(src, &ch);
@@ -1254,12 +1255,12 @@ Tcl_UtfAtIndex(
const char *
TclUtfAtIndex(
const char *src, /* The UTF-8 string. */
- size_t index) /* The position of the desired character. */
+ Tcl_Size index) /* The position of the desired character. */
{
unsigned short ch = 0;
- size_t len = 0;
+ Tcl_Size len = 0;
- if (index != TCL_INDEX_NONE) {
+ if (index > 0) {
while (index--) {
src += (len = Tcl_UtfToChar16(src, &ch));
}
@@ -1297,7 +1298,7 @@ TclUtfAtIndex(
*---------------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfBackslash(
const char *src, /* Points to the backslash character of a
* backslash sequence. */
@@ -1307,7 +1308,8 @@ Tcl_UtfBackslash(
* backslash sequence. */
{
#define LINE_LENGTH 128
- size_t numRead, result;
+ Tcl_Size numRead;
+ int result;
result = TclParseBackslash(src, LINE_LENGTH, &numRead, dst);
if (numRead == LINE_LENGTH) {
@@ -1341,13 +1343,13 @@ Tcl_UtfBackslash(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToUpper(
char *str) /* String to convert in place. */
{
int ch, upChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Iterate over the string until we hit the terminating null.
@@ -1394,13 +1396,13 @@ Tcl_UtfToUpper(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToLower(
char *str) /* String to convert in place. */
{
int ch, lowChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Iterate over the string until we hit the terminating null.
@@ -1448,13 +1450,13 @@ Tcl_UtfToLower(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_UtfToTitle(
char *str) /* String to convert in place. */
{
int ch, titleChar, lowChar;
char *src, *dst;
- size_t len;
+ Tcl_Size len;
/*
* Capitalize the first character and then lowercase the rest of the
@@ -1870,11 +1872,11 @@ Tcl_UniCharToTitle(
*----------------------------------------------------------------------
*/
-size_t
+Tcl_Size
Tcl_Char16Len(
const unsigned short *uniStr) /* Unicode string to find length of. */
{
- size_t len = 0;
+ Tcl_Size len = 0;
while (*uniStr != '\0') {
len++;
@@ -1901,11 +1903,11 @@ Tcl_Char16Len(
*/
#undef Tcl_UniCharLen
-size_t
+Tcl_Size
Tcl_UniCharLen(
const int *uniStr) /* Unicode string to find length of. */
{
- size_t len = 0;
+ Tcl_Size len = 0;
while (*uniStr != '\0') {
len++;
@@ -2563,10 +2565,10 @@ TclUniCharCaseMatch(
int
TclUniCharMatch(
const Tcl_UniChar *string, /* Unicode String. */
- size_t strLen, /* Length of String */
+ Tcl_Size strLen, /* Length of String */
const Tcl_UniChar *pattern, /* Pattern, which may contain special
* characters. */
- size_t ptnLen, /* Length of Pattern */
+ Tcl_Size ptnLen, /* Length of Pattern */
int nocase) /* 0 for case sensitive, 1 for insensitive */
{
const Tcl_UniChar *stringEnd, *patternEnd;