diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-05-26 12:59:04 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-05-26 12:59:04 (GMT) |
| commit | 05271f5f1347de19b568daa4ac49eccca923ca96 (patch) | |
| tree | 57b76e599dd2d588c440328588d069ecb33889f2 /generic/tclInt.h | |
| parent | 31df7569748f126a4cc0e88854b1019531b5073e (diff) | |
| parent | c21ec96ab359f5f26f51e1103bb3671e240be592 (diff) | |
| download | tcl-core-attemptgetstring.zip tcl-core-attemptgetstring.tar.gz tcl-core-attemptgetstring.tar.bz2 | |
Add some more Tcl_Attempt* functionscore-attemptgetstring
Diffstat (limited to 'generic/tclInt.h')
| -rw-r--r-- | generic/tclInt.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index 30f841d..d2a8b9b 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -4441,6 +4441,14 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, ? (*(lenPtr) = (objPtr)->length, (objPtr)->bytes) \ : (Tcl_GetStringFromObj)((objPtr), (lenPtr))) +#define TclAttemptGetString(objPtr) \ + ((objPtr)->bytes? (objPtr)->bytes : Tcl_AttemptGetString(objPtr)) + +#define TclAttemptGetStringFromObj(objPtr, lenPtr) \ + ((objPtr)->bytes \ + ? (*(lenPtr) = (objPtr)->length, (objPtr)->bytes) \ + : (Tcl_AttemptGetStringFromObj)((objPtr), (lenPtr))) + /* *---------------------------------------------------------------- * Macro used by the Tcl core to clean out an object's internal @@ -4812,6 +4820,20 @@ MODULE_SCOPE Tcl_LibraryInitProc Tcl_ABSListTest_Init; TCL_DTRACE_OBJ_CREATE(objPtr); \ } while (0) +#define TclAttemptNewStringObj(objPtr, s, len) \ + do { \ + TclIncrObjsAllocated(); \ + TclAllocObjStorage(objPtr); \ + (objPtr)->refCount = 0; \ + if (TclAttemptInitStringRep((objPtr), (s), (len))) { \ + (objPtr)->typePtr = NULL; \ + TCL_DTRACE_OBJ_CREATE(objPtr); \ + } else { \ + Tcl_DecrRefCount(objPtr); \ + (objPtr) = NULL; \ + } \ + } while (0) + #else /* TCL_MEM_DEBUG */ #define TclNewIntObj(objPtr, w) \ (objPtr) = Tcl_NewWideIntObj(w) @@ -4839,6 +4861,10 @@ MODULE_SCOPE Tcl_LibraryInitProc Tcl_ABSListTest_Init; #define TclNewStringObj(objPtr, s, len) \ (objPtr) = Tcl_NewStringObj((s), (len)) + +#define TclAttemptNewStringObj(objPtr, s, len) \ + (objPtr) = Tcl_AttemptNewStringObj((s), (len)) + #endif /* TCL_MEM_DEBUG */ /* |
