From 7c245c246c23c5b3f4eef21a2f385af1c962c636 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Tue, 19 Nov 2013 06:56:00 +0400 Subject: [PATCH] get rid of py-value.c:is_intlike (use is_integral_type instead) is_intlike was mostly duplicating is_integral_type, with the exception of the handling of TYPE_CODE_PTR when parameter PTR_OK is nonzero. This patches deletes the is_intlike function, using is_integral_type instead, and adjusting the two locations where this function gets called. The code should remain strictly equivalent. gdb/ChangeLog: * python/py-value.c (is_intlike): Delete. (valpy_int): Replace use of CHECK_TYPEDEF and is_intlike by use of is_integral_type. (valpy_long): Replace use of CHECK_TYPEDEF and is_intlike by use of is_integral_type and check for TYPE_CODE_PTR. --- gdb/ChangeLog | 8 ++++++++ gdb/python/py-value.c | 18 +++--------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 94e9e1b..f989f16 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2013-11-20 Joel Brobecker + + * python/py-value.c (is_intlike): Delete. + (valpy_int): Replace use of CHECK_TYPEDEF and is_intlike + by use of is_integral_type. + (valpy_long): Replace use of CHECK_TYPEDEF and is_intlike + by use of is_integral_type and check for TYPE_CODE_PTR. + 2013-11-20 Tom Tromey * gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Remove diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c index 451bfaf..4054808 100644 --- a/gdb/python/py-value.c +++ b/gdb/python/py-value.c @@ -1129,18 +1129,6 @@ valpy_richcompare (PyObject *self, PyObject *other, int op) Py_RETURN_FALSE; } -/* Helper function to determine if a type is "int-like". */ -static int -is_intlike (struct type *type, int ptr_ok) -{ - return (TYPE_CODE (type) == TYPE_CODE_INT - || TYPE_CODE (type) == TYPE_CODE_ENUM - || TYPE_CODE (type) == TYPE_CODE_BOOL - || TYPE_CODE (type) == TYPE_CODE_CHAR - || TYPE_CODE (type) == TYPE_CODE_RANGE - || (ptr_ok && TYPE_CODE (type) == TYPE_CODE_PTR)); -} - #ifndef IS_PY3K /* Implements conversion to int. */ static PyObject * @@ -1153,8 +1141,7 @@ valpy_int (PyObject *self) TRY_CATCH (except, RETURN_MASK_ALL) { - CHECK_TYPEDEF (type); - if (!is_intlike (type, 0)) + if (!is_integral_type (type)) error (_("Cannot convert value to int.")); l = value_as_long (value); @@ -1178,7 +1165,8 @@ valpy_long (PyObject *self) { CHECK_TYPEDEF (type); - if (!is_intlike (type, 1)) + if (!is_integral_type (type) + && TYPE_CODE (type) != TYPE_CODE_PTR) error (_("Cannot convert value to long.")); l = value_as_long (value); -- 2.7.4