This is the mail archive of the
archer@sourceware.org
mailing list for the Archer project.
[python] Make gdb.Value.string accept keyword arguments.
- From: Thiago Jung Bauermann <bauerman at br dot ibm dot com>
- To: archer ml <archer at sourceware dot org>
- Date: Fri, 27 Feb 2009 16:53:56 -0300
- Subject: [python] Make gdb.Value.string accept keyword arguments.
Hi,
Committed.
gdb/
* python/python-value.c (valpy_string): Accept keyword
arguments as well.
(value_object_methods): Change `string' entry to also accept
keyword arguments.
gdb/doc/
* gdb.texinfo (Values From Inferior): Fix optional arguments
markup.
---
gdb/doc/gdb.texinfo | 2 +-
gdb/python/python-value.c | 16 ++++++++++------
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 7ec2550..67c0ae3 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -18431,7 +18431,7 @@ The result @code{bar} will be a @code{gdb.Value} object holding the
value pointed to by @code{foo}.
@end defmethod
-@defmethod Value string @r{[}encoding @r{[}errors@r{]}@r{]}
+@defmethod Value string @r{[}encoding@r{]} @r{[}errors@r{]}
If this @code{gdb.Value} represents a string, then this method
converts the contents to a Python string. Otherwise, this method will
throw an exception.
diff --git a/gdb/python/python-value.c b/gdb/python/python-value.c
index ca29f46..de54b9d 100644
--- a/gdb/python/python-value.c
+++ b/gdb/python/python-value.c
@@ -155,10 +155,11 @@ valpy_type (PyObject *self, PyObject *args)
return type_to_type_object (value_type (value));
}
-/* Return Unicode string with value contents (assumed to be encoded in the
- target's charset). */
+/* Implementation of gdb.Value.string ([encoding] [, errors]) -> string
+ Return Unicode string with value contents. If ENCODING is not given,
+ the string is assumed to be encoded in the target's charset. */
static PyObject *
-valpy_string (PyObject *self, PyObject *args)
+valpy_string (PyObject *self, PyObject *args, PyObject *kw)
{
int length, ret = 0;
gdb_byte *buffer;
@@ -169,8 +170,10 @@ valpy_string (PyObject *self, PyObject *args)
const char *errors = NULL;
const char *user_encoding = NULL;
const char *la_encoding = NULL;
+ static char *keywords[] = { "encoding", "errors" };
- if (!PyArg_ParseTuple (args, "|ss", &user_encoding, &errors))
+ if (!PyArg_ParseTupleAndKeywords (args, kw, "|ss", keywords,
+ &user_encoding, &errors))
return NULL;
TRY_CATCH (except, RETURN_MASK_ALL)
@@ -915,8 +918,9 @@ static PyMethodDef value_object_methods[] = {
{ "cast", valpy_cast, METH_VARARGS, "Cast the value to the supplied type." },
{ "dereference", valpy_dereference, METH_NOARGS, "Dereferences the value." },
{ "type", valpy_type, METH_NOARGS, "Return type of the value." },
- { "string", valpy_string, METH_VARARGS,
- "Return Unicode string representation of the value." },
+ { "string", (PyCFunction) valpy_string, METH_VARARGS | METH_KEYWORDS,
+ "string ([encoding] [, errors]) -> string\n\
+Return Unicode string representation of the value." },
{NULL} /* Sentinel */
};
--
1.5.6.5