summaryrefslogtreecommitdiffstats
path: root/generic/tclGet.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclGet.c')
-rw-r--r--generic/tclGet.c138
1 files changed, 50 insertions, 88 deletions
diff --git a/generic/tclGet.c b/generic/tclGet.c
index be3d942..97e8c7b 100644
--- a/generic/tclGet.c
+++ b/generic/tclGet.c
@@ -1,21 +1,18 @@
-/*
+/*
* tclGet.c --
*
- * This file contains procedures to convert strings into
- * other forms, like integers or floating-point numbers or
- * booleans, doing syntax checking along the way.
+ * This file contains functions to convert strings into other forms, like
+ * integers or floating-point numbers or booleans, doing syntax checking
+ * along the way.
*
* Copyright (c) 1990-1993 The Regents of the University of California.
* Copyright (c) 1994-1997 Sun Microsystems, Inc.
*
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * RCS: @(#) $Id: tclGet.c,v 1.15 2005/05/10 18:34:38 kennykb Exp $
+ * See the file "license.terms" for information on usage and redistribution of
+ * this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include "tclInt.h"
-
/*
*----------------------------------------------------------------------
@@ -25,54 +22,10 @@
* Given a string, produce the corresponding integer value.
*
* Results:
- * The return value is normally TCL_OK; in this case *intPtr
- * will be set to the integer 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.
- *
- * Side effects:
- * None.
- *
- *----------------------------------------------------------------------
- */
-
-int
-Tcl_GetInt(interp, src, intPtr)
- Tcl_Interp *interp; /* Interpreter to use for error reporting. */
- CONST char *src; /* String containing a (possibly signed)
- * integer in a form acceptable to strtoul. */
- int *intPtr; /* Place to store converted result. */
-{
- Tcl_Obj obj;
- int code;
-
- obj.refCount = 1;
- obj.bytes = (char *) src;
- obj.length = strlen(src);
- obj.typePtr = NULL;
-
- code = Tcl_GetIntFromObj(interp, &obj, intPtr);
- if (obj.refCount > 1) {
- Tcl_Panic("invalid sharing of Tcl_Obj on C stack");
- }
- return code;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * TclGetLong --
- *
- * Given a string, produce the corresponding long integer value.
- * This routine is a version of Tcl_GetInt but returns a "long"
- * instead of an "int".
- *
- * Results:
- * The return value is normally TCL_OK; in this case *longPtr
- * will be set to the long integer 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 if interp
- * is non-NULL.
+ * The return value is normally TCL_OK; in this case *intPtr will be set
+ * to the integer 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.
*
* Side effects:
* None.
@@ -81,13 +34,12 @@ Tcl_GetInt(interp, src, intPtr)
*/
int
-TclGetLong(interp, src, longPtr)
- Tcl_Interp *interp; /* Interpreter used for error reporting
- * if not NULL. */
- CONST char *src; /* String containing a (possibly signed)
- * long integer in a form acceptable to
- * strtoul. */
- long *longPtr; /* Place to store converted long result. */
+Tcl_GetInt(
+ Tcl_Interp *interp, /* Interpreter to use for error reporting. */
+ const char *src, /* String containing a (possibly signed)
+ * integer in a form acceptable to
+ * Tcl_GetIntFromObj(). */
+ int *intPtr) /* Place to store converted result. */
{
Tcl_Obj obj;
int code;
@@ -97,10 +49,11 @@ TclGetLong(interp, src, longPtr)
obj.length = strlen(src);
obj.typePtr = NULL;
- code = Tcl_GetLongFromObj(interp, &obj, longPtr);
+ code = Tcl_GetIntFromObj(interp, &obj, intPtr);
if (obj.refCount > 1) {
Tcl_Panic("invalid sharing of Tcl_Obj on C stack");
}
+ TclFreeIntRep(&obj);
return code;
}
@@ -113,10 +66,10 @@ TclGetLong(interp, src, longPtr)
* floating-point value.
*
* Results:
- * The return value is normally TCL_OK; in this case *doublePtr
- * will be set to the double-precision 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.
+ * The return value is normally TCL_OK; in this case *doublePtr will be
+ * set to the double-precision 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.
*
* Side effects:
* None.
@@ -125,11 +78,12 @@ TclGetLong(interp, src, longPtr)
*/
int
-Tcl_GetDouble(interp, src, doublePtr)
- Tcl_Interp *interp; /* Interpreter used for error reporting. */
- CONST char *src; /* String containing a floating-point number
- * in a form acceptable to strtod. */
- double *doublePtr; /* Place to store converted result. */
+Tcl_GetDouble(
+ Tcl_Interp *interp, /* Interpreter used for error reporting. */
+ const char *src, /* String containing a floating-point number
+ * in a form acceptable to
+ * Tcl_GetDoubleFromObj(). */
+ double *doublePtr) /* Place to store converted result. */
{
Tcl_Obj obj;
int code;
@@ -143,6 +97,7 @@ Tcl_GetDouble(interp, src, doublePtr)
if (obj.refCount > 1) {
Tcl_Panic("invalid sharing of Tcl_Obj on C stack");
}
+ TclFreeIntRep(&obj);
return code;
}
@@ -151,14 +106,14 @@ Tcl_GetDouble(interp, src, doublePtr)
*
* Tcl_GetBoolean --
*
- * Given a string, return a 0/1 boolean value corresponding
- * to the string.
+ * Given a string, return a 0/1 boolean value corresponding to the
+ * string.
*
* Results:
- * The return value is normally TCL_OK; in this case *boolPtr
- * 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.
+ * The return value is normally TCL_OK; in this case *boolPtr 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.
*
* Side effects:
* None.
@@ -167,13 +122,12 @@ Tcl_GetDouble(interp, src, doublePtr)
*/
int
-Tcl_GetBoolean(interp, src, boolPtr)
- Tcl_Interp *interp; /* Interpreter used for error reporting. */
- CONST char *src; /* String containing a boolean number
- * specified either as 1/0 or true/false or
- * yes/no. */
- int *boolPtr; /* Place to store converted result, which
- * will be 0 or 1. */
+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 *boolPtr) /* Place to store converted result, which will
+ * be 0 or 1. */
{
Tcl_Obj obj;
int code;
@@ -183,7 +137,7 @@ Tcl_GetBoolean(interp, src, boolPtr)
obj.length = strlen(src);
obj.typePtr = NULL;
- code = Tcl_ConvertToType(interp, &obj, &tclBooleanType);
+ code = TclSetBooleanFromAny(interp, &obj);
if (obj.refCount > 1) {
Tcl_Panic("invalid sharing of Tcl_Obj on C stack");
}
@@ -192,3 +146,11 @@ Tcl_GetBoolean(interp, src, boolPtr)
}
return code;
}
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 4
+ * fill-column: 78
+ * End:
+ */