diff options
Diffstat (limited to 'generic/tclStubInit.c')
-rw-r--r-- | generic/tclStubInit.c | 84 |
1 files changed, 77 insertions, 7 deletions
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index d34aff4..6b78e6f 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -135,6 +135,71 @@ static const char *TclUtfPrev(const char *src, const char *start) { return Tcl_UtfPrev(src, start); } +int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr, + size_t *objcPtr, Tcl_Obj ***objvPtr) { + int n, result = Tcl_ListObjGetElements(interp, listPtr, &n, objvPtr); + if ((result == TCL_OK) && objcPtr) { + *objcPtr = n; + } + return result; +} +int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr, + size_t *lengthPtr) { + int n; + int result = Tcl_ListObjLength(interp, listPtr, &n); + if ((result == TCL_OK) && lengthPtr) { + *lengthPtr = n; + } + return result; +} +int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, + size_t *sizePtr) { + int n, result = Tcl_DictObjSize(interp, dictPtr, &n); + if ((result == TCL_OK) && sizePtr) { + *sizePtr = n; + } + return result; +} +int TclSplitList(Tcl_Interp *interp, const char *listStr, size_t *argcPtr, + const char ***argvPtr) { + int n; + int result = Tcl_SplitList(interp, listStr, &n, argvPtr); + if ((result == TCL_OK) && argcPtr) { + *argcPtr = n; + } + return result; +} +void TclSplitPath(const char *path, size_t *argcPtr, const char ***argvPtr) { + int n; + Tcl_SplitPath(path, &n, argvPtr); + if (argcPtr) { + *argcPtr = n; + } +} +Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr) { + int n; + Tcl_Obj *result = Tcl_FSSplitPath(pathPtr, &n); + if (result && lenPtr) { + *lenPtr = n; + } + return result; +} +int TclParseArgsObjv(Tcl_Interp *interp, + const Tcl_ArgvInfo *argTable, size_t *objcPtr, Tcl_Obj *const *objv, + Tcl_Obj ***remObjv) { + int n, result; + if (*objcPtr > INT_MAX) { + if (interp) { + Tcl_AppendResult(interp, "Tcl_ParseArgsObjv cannot handle *objcPtr > INT_MAX", NULL); + } + return TCL_ERROR; + } + n = (int)*objcPtr; + result = Tcl_ParseArgsObjv(interp, argTable, &n, objv, remObjv); + *objcPtr = n; + return result; +} + #define TclBN_mp_add mp_add #define TclBN_mp_and mp_and #define TclBN_mp_clamp mp_clamp @@ -1955,19 +2020,24 @@ const TclStubs tclStubs = { Tcl_ExternalToUtfDStringEx, /* 658 */ Tcl_UtfToExternalDStringEx, /* 659 */ Tcl_AsyncMarkFromSignal, /* 660 */ - 0, /* 661 */ - 0, /* 662 */ - 0, /* 663 */ - 0, /* 664 */ - 0, /* 665 */ - 0, /* 666 */ - 0, /* 667 */ + TclListObjGetElements, /* 661 */ + TclListObjLength, /* 662 */ + TclDictObjSize, /* 663 */ + TclSplitList, /* 664 */ + TclSplitPath, /* 665 */ + TclFSSplitPath, /* 666 */ + TclParseArgsObjv, /* 667 */ Tcl_UniCharLen, /* 668 */ TclNumUtfChars, /* 669 */ TclGetCharLength, /* 670 */ TclUtfAtIndex, /* 671 */ TclGetRange, /* 672 */ TclGetUniChar, /* 673 */ + 0, /* 674 */ + 0, /* 675 */ + 0, /* 676 */ + 0, /* 677 */ + Tcl_ProcObjCmd2, /* 678 */ }; /* !END!: Do not edit above this line. */ |