diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-10-07 14:04:03 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-10-07 14:04:03 (GMT) |
commit | 2f60311d12bf5abb269f83464bee4868ad3e953b (patch) | |
tree | f1df59899e64cd9c12d49298ff9709f8d391f00e /generic/tclGet.c | |
parent | a9fba66be576e55d089b69f8531d514cdc05c61e (diff) | |
parent | fbbee7fe2ac6e38de8eb2c3d5a85435bd107cd8e (diff) | |
download | tcl-2f60311d12bf5abb269f83464bee4868ad3e953b.zip tcl-2f60311d12bf5abb269f83464bee4868ad3e953b.tar.gz tcl-2f60311d12bf5abb269f83464bee4868ad3e953b.tar.bz2 |
TIP #618: New Tcl_GetBool* functions with TCL_NULL_OK flag
Diffstat (limited to 'generic/tclGet.c')
-rw-r--r-- | generic/tclGet.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/generic/tclGet.c b/generic/tclGet.c index 905038f..bb3f8f1 100644 --- a/generic/tclGet.c +++ b/generic/tclGet.c @@ -110,7 +110,7 @@ Tcl_GetDouble( * string. * * Results: - * The return value is normally TCL_OK; in this case *intPtr will be set + * The return value is normally TCL_OK; in this case *charPtr will be set * to the 0/1 value equivalent to src. If src is improperly formed then * TCL_ERROR is returned and an error message will be left in the * interp's result. @@ -121,17 +121,23 @@ Tcl_GetDouble( *---------------------------------------------------------------------- */ +#undef Tcl_GetBool +#undef Tcl_GetBoolFromObj int -Tcl_GetBoolean( +Tcl_GetBool( Tcl_Interp *interp, /* Interpreter used for error reporting. */ const char *src, /* String containing one of the boolean values * 1, 0, true, false, yes, no, on, off. */ - int *intPtr) /* Place to store converted result, which will + int flags, + char *charPtr) /* Place to store converted result, which will * be 0 or 1. */ { Tcl_Obj obj; int code; + if ((src == NULL) || (*src == '\0')) { + return Tcl_GetBoolFromObj(interp, NULL, flags, charPtr); + } obj.refCount = 1; obj.bytes = (char *) src; obj.length = strlen(src); @@ -142,10 +148,22 @@ Tcl_GetBoolean( Tcl_Panic("invalid sharing of Tcl_Obj on C stack"); } if (code == TCL_OK) { - TclGetBooleanFromObj(NULL, &obj, intPtr); + Tcl_GetBoolFromObj(NULL, &obj, flags, charPtr); } return code; } + +#undef Tcl_GetBoolean +int +Tcl_GetBoolean( + Tcl_Interp *interp, /* Interpreter used for error reporting. */ + const char *src, /* String containing one of the boolean values + * 1, 0, true, false, yes, no, on, off. */ + int *intPtr) /* Place to store converted result, which will + * be 0 or 1. */ +{ + return Tcl_GetBool(interp, src, (TCL_NULL_OK-2)&(int)sizeof(int), (char *)(void *)intPtr); +} /* * Local Variables: |