diff options
author | hobbs <hobbs> | 2003-07-16 22:03:51 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2003-07-16 22:03:51 (GMT) |
commit | 379bdae5c3feed0328500dd805b3e51c06d0383f (patch) | |
tree | 0345d742b6688dea4e5f032e9c7192a5dfdce4c4 /generic | |
parent | b37075f5ec3bb37ef448c26ac7be3f1ff4eb15ca (diff) | |
download | tcl-379bdae5c3feed0328500dd805b3e51c06d0383f.zip tcl-379bdae5c3feed0328500dd805b3e51c06d0383f.tar.gz tcl-379bdae5c3feed0328500dd805b3e51c06d0383f.tar.bz2 |
* generic/tcl.h: add recognition of -DTCL_UTF_MAX=6 on the
* generic/regcustom.h: make line to support UCS-4 mode. No config
arg at this time, as it is not the recommended build mode.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/regcustom.h | 6 | ||||
-rw-r--r-- | generic/tcl.h | 23 |
2 files changed, 26 insertions, 3 deletions
diff --git a/generic/regcustom.h b/generic/regcustom.h index 9f505de..e258acd 100644 --- a/generic/regcustom.h +++ b/generic/regcustom.h @@ -91,9 +91,15 @@ typedef int celt; /* type to hold chr, MCCE number, or NOCELT */ #define NOCELT (-1) /* celt value which is not valid chr or MCCE */ #define CHR(c) (UCHAR(c)) /* turn char literal into chr literal */ #define DIGITVAL(c) ((c)-'0') /* turn chr digit into its value */ +#if TCL_UTF_MAX > 3 +#define CHRBITS 32 /* bits in a chr; must not use sizeof */ +#define CHR_MIN 0x00000000 /* smallest and largest chr; the value */ +#define CHR_MAX 0xffffffff /* CHR_MAX-CHR_MIN+1 should fit in uchr */ +#else #define CHRBITS 16 /* bits in a chr; must not use sizeof */ #define CHR_MIN 0x0000 /* smallest and largest chr; the value */ #define CHR_MAX 0xffff /* CHR_MAX-CHR_MIN+1 should fit in uchr */ +#endif /* functions operating on chr */ #define iscalnum(x) Tcl_UniCharIsAlnum(x) diff --git a/generic/tcl.h b/generic/tcl.h index 6c87307..8a62eae 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.158 2003/06/09 22:48:32 andreas_kupries Exp $ + * RCS: @(#) $Id: tcl.h,v 1.159 2003/07/16 22:03:52 hobbs Exp $ */ #ifndef _TCL @@ -2186,15 +2186,32 @@ typedef struct Tcl_Parse { /* * The maximum number of bytes that are necessary to represent a single - * Unicode character in UTF-8. - */ + * Unicode character in UTF-8. The valid values should be 3 or 6 (or + * perhaps 1 if we want to support a non-unicode enabled core). + * If 3, then Tcl_UniChar must be 2-bytes in size (UCS-2). (default) + * If 6, then Tcl_UniChar must be 4-bytes in size (UCS-4). + * At this time UCS-2 mode is the default and recommended mode. + * UCS-4 is experimental and not recommended. It works for the core, + * but most extensions expect UCS-2. + */ +#ifndef TCL_UTF_MAX #define TCL_UTF_MAX 3 +#endif /* * This represents a Unicode character. Any changes to this should * also be reflected in regcustom.h. */ +#if TCL_UTF_MAX > 3 + /* + * unsigned int isn't 100% accurate as it should be a strict 4-byte + * value (perhaps wchar_t). 64-bit systems may have troubles. The + * size of this value must be reflected correctly in regcustom.h. + */ +typedef unsigned int Tcl_UniChar; +#else typedef unsigned short Tcl_UniChar; +#endif /* TIP #59: The following structure is used in calls * 'Tcl_RegisterConfig' to provide the system with the embedded |