mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-15 20:22:28 +08:00
2009-07-10 Phil Muldoon <pmuldoon@redhat.com>
* python/python-internal.h (apply_varobj_pretty_printer): Update definition. (python_string_to_target_python_string): Add definition. * python/python-utils.c (unicode_to_encoded_python_string) (unicode_to_target_python_string) (python_string_to_target_python_string): New Functions. * python/python-prettyprint.c (pretty_print_one_value): Likewise. (print_string_repr): Refactor to logic to account for PyObject returned strings. (apply_varobj_pretty_printer): Likewise. * python/python-value.c (valpy_string): Parse length keyword. Use length keyword in LA_GET_STRING. * varobj.c (value_get_print_value): Refactor logic to account for PyObject returned strings. * c-lang.c (c_get_string): If the length parameter is specified, use that. Return value in characters. Update comments. * language.h: Update c_get_string prototype comments. 2009-07-10 Phil Muldoon <pmuldoon@redhat.com> * gdb.texinfo (Values From Inferior): Add length parameter description. 2009-07-10 Phil Muldoon <pmuldoon@redhat.com> * gdb.python/python-prettyprint.c: Add counted null string structure. * gdb.python/python-prettyprint.exp: Print null string. Test for embedded nulls. * gdb.python/python-prettyprint.py (pp_ns): New Function. * gdb.python/python-value.exp (test_value_in_inferior): Add variable length string fetch tests. * gdb.python/python-value.c (main): Add strings for string fetch tests.
This commit is contained in:
@ -104,6 +104,23 @@ unicode_to_encoded_string (PyObject *unicode_str, const char *charset)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Returns a PyObject with the contents of the given unicode string
|
||||
object converted to a named charset. If an error occurs during
|
||||
the conversion, NULL will be returned and a python exception will
|
||||
be set. */
|
||||
static PyObject *
|
||||
unicode_to_encoded_python_string (PyObject *unicode_str, const char *charset)
|
||||
{
|
||||
PyObject *string;
|
||||
|
||||
/* Translate string to named charset. */
|
||||
string = PyUnicode_AsEncodedString (unicode_str, charset, NULL);
|
||||
if (string == NULL)
|
||||
return NULL;
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
/* Returns a newly allocated string with the contents of the given unicode
|
||||
string object converted to the target's charset. If an error occurs during
|
||||
the conversion, NULL will be returned and a python exception will be set.
|
||||
@ -115,6 +132,16 @@ unicode_to_target_string (PyObject *unicode_str)
|
||||
return unicode_to_encoded_string (unicode_str, target_charset ());
|
||||
}
|
||||
|
||||
/* Returns a PyObject with the contents of the given unicode string
|
||||
object converted to the target's charset. If an error occurs
|
||||
during the conversion, NULL will be returned and a python exception
|
||||
will be set. */
|
||||
PyObject *
|
||||
unicode_to_target_python_string (PyObject *unicode_str)
|
||||
{
|
||||
return unicode_to_encoded_python_string (unicode_str, target_charset ());
|
||||
}
|
||||
|
||||
/* Converts a python string (8-bit or unicode) to a target string in
|
||||
the target's charset. Returns NULL on error, with a python exception set.
|
||||
|
||||
@ -134,6 +161,24 @@ python_string_to_target_string (PyObject *obj)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Converts a python string (8-bit or unicode) to a target string in the
|
||||
target's charset. Returns NULL on error, with a python exception
|
||||
set. */
|
||||
PyObject *
|
||||
python_string_to_target_python_string (PyObject *obj)
|
||||
{
|
||||
PyObject *str;
|
||||
PyObject *result;
|
||||
|
||||
str = python_string_to_unicode (obj);
|
||||
if (str == NULL)
|
||||
return NULL;
|
||||
|
||||
result = unicode_to_target_python_string (str);
|
||||
Py_DECREF (str);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Converts a python string (8-bit or unicode) to a target string in
|
||||
the host's charset. Returns NULL on error, with a python exception set.
|
||||
|
||||
|
Reference in New Issue
Block a user