This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC/Patch v3] PR 16113: Allow gdb.Field objects as subscripts on gdb.Value objects


The attached patch addresses all of Tom's comments except two for
which I have responses below:

Tom> What about TYPE_CODE_UNION and TYPE_CODE_RANGE?
Tom> Offhand I don't recall if other types present "fields".
Tom> Maybe TYPE_CODE_FUNC?  TYPE_CODE_COMPLEX?

I missed TYPE_CODE_UNION so I have added it in the attached patch. The
other types do not support the "fields" method. [But, is it a mistake
that we do not support fields for other methods? The documentation
does talk about ranges, functions and methods. At this point, I am
tempted to ask as to why we should "overload" the method "fields" to
return function/method args? Can we bring in a class hierarchy of
types where in gdb.Type exists as a base class, and gdb.TypeStruct,
gdb.TypeFunction etc. are derived from it. That way, we can add
relevant methods to the respective classes. For example,
gdb.TypeFunction will have "args" as a method and not "fields". I
understand the notion of fields is overloaded internally, but we could
make the Python API clearer.]

Siva> +  arg = type_to_type_object (type);
Siva> +  if (arg == NULL)
Siva> +    goto fail;

Tom> I think if TYPE is not a gdb.Type then this will return -1 without
Tom> setting the Python exception.

The above comment is for the change in py-type.c. The variable TYPE in
question here is "struct type" and not gdb.Type. I think
type_to_type_object would return NULL only if PyObject_New called in
it fails. Is an exception not set by PyObject_New on failure?

2013-12-11  Siva Chandra Reddy  <sivachandra@google.com>

        PR 16113: Allow gdb.Field objects with the subscript operator on
        gdb.Value objects of struct/class values.
        * NEWS (Python Scripting): Add entry for the new feature and the
        new attribute of gdb.Field objects.
        * python/py-type.c (gdbpy_is_field): New function
        (convert_field): Add 'parent_type' attribute to gdb.Field
        objects.
        * python/py-value.c (valpy_getitem): Allow subscript value to be
        a gdb.Field object.
        (value_has_field): New function
        (get_field_flag): New function
        * python/python-internal.h (gdbpy_is_field): Add declaration.

        testsuite/
        * gdb.python/py-value-cc.cc: Improve test case.
        * gdb.python/py-value-cc.exp: Add new tests.

        doc/
        * gdb.texinfo (Values From Inferior): Add a note about using
        gdb.Field objects as subscripts on gdb.Value objects.
        (Types In Python): Add description about the new attribute of
        gdb.Field objects.

Attachment: value_field_subscript_patch_v3.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]