diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-11-18 13:51:02 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-11-18 13:51:02 (GMT) |
| commit | 8e1f957a669b2f4b84dca7e8a27f2985c0625172 (patch) | |
| tree | dba1e5192d3d569c9588d12db8188ae501e1e0e9 /generic/tclInt.h | |
| parent | c55eb93bb4ebc7ba1de131099e9c0c4a1c0ff4b2 (diff) | |
| download | tcl-8e1f957a669b2f4b84dca7e8a27f2985c0625172.zip tcl-8e1f957a669b2f4b84dca7e8a27f2985c0625172.tar.gz tcl-8e1f957a669b2f4b84dca7e8a27f2985c0625172.tar.bz2 | |
More usage of TclUtfToUCS4/TclUniCharToUCS4 in stead of it's UniChar variants: This handles surrogate pairs better.
Diffstat (limited to 'generic/tclInt.h')
| -rw-r--r-- | generic/tclInt.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index 9dde88b..8088d0e 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -3252,12 +3252,14 @@ MODULE_SCOPE int TclUtfCount(int ch); #if TCL_UTF_MAX > 3 # define TclUtfToUCS4 Tcl_UtfToUniChar # define TclUniCharToUCS4(src, ptr) (*ptr = *(src),1) +# define TclUCS4Prev(src, ptr) (((src) > (ptr)) ? ((src) - 1) : (src)) # define TclUCS4Complete Tcl_UtfCharComplete # define TclChar16Complete(src, length) (((unsigned)((unsigned char)*(src) - 0xF0) < 5) \ ? ((length) >= 3) : Tcl_UtfCharComplete((src), (length))) #else - MODULE_SCOPE int TclUtfToUCS4(const char *src, int *ucs4Ptr); - MODULE_SCOPE int TclUniCharToUCS4(const Tcl_UniChar *src, int *ucs4Ptr); + MODULE_SCOPE int TclUtfToUCS4(const char *, int *); + MODULE_SCOPE int TclUniCharToUCS4(const Tcl_UniChar *, int *); + MODULE_SCOPE const Tcl_UniChar *TclUCS4Prev(const Tcl_UniChar *, const Tcl_UniChar *); # define TclUCS4Complete(src, length) (((unsigned)((unsigned char)*(src) - 0xF0) < 5) \ ? ((length) >= 4) : Tcl_UtfCharComplete((src), (length))) # define TclChar16Complete Tcl_UtfCharComplete |
