Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Rewrite "string wordend" to use the Tcl_UniChar array. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | tip-575 |
Files: | files | file ages | folders |
SHA3-256: |
8333c88b3ceceae23c130c9ed1f6ace2 |
User & Date: | jan.nijtmans 2020-05-23 22:07:53.830 |
Context
2020-05-24
| ||
22:29 | Put back "string bytelength", not _that_ important for this TIP. Document that Tcl_UtfCharComplete(... check-in: f4989d1e8f user: jan.nijtmans tags: tip-575 | |
2020-05-23
| ||
22:07 | Rewrite "string wordend" to use the Tcl_UniChar array. check-in: 8333c88b3c user: jan.nijtmans tags: tip-575 | |
21:51 | Fix testsuite when "string bytelength" doesn't exist. check-in: 56fca3f26d user: jan.nijtmans tags: tip-575 | |
Changes
Changes to generic/tclCmdMZ.c.
︙ | ︙ | |||
2705 2706 2707 2708 2709 2710 2711 | StringEndCmd( TCL_UNUSED(ClientData), Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int ch; | | | | < | < | | | | | 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 | StringEndCmd( TCL_UNUSED(ClientData), Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { int ch; const Tcl_UniChar *p, *end, *string; int cur, index, length; if (objc != 3) { Tcl_WrongNumArgs(interp, 1, objv, "string index"); return TCL_ERROR; } string = Tcl_GetUnicodeFromObj(objv[1], &length); if (TclGetIntForIndexM(interp, objv[2], length-1, &index) != TCL_OK) { return TCL_ERROR; } if (index < 0) { index = 0; } if (index < length) { p = &string[index]; end = string+length; for (cur = index; p < end; cur++) { p += TclUniCharToUCS4(p, &ch); if (!Tcl_UniCharIsWordChar(ch)) { break; } } if (cur == index) { cur++; } } else { cur = length; } Tcl_SetObjResult(interp, Tcl_NewWideIntObj(cur)); return TCL_OK; } /* |
︙ | ︙ |