public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Doug Evans <xdje42@gmail.com>
To: Siva Chandra <sivachandra@google.com>
Cc: Tom Tromey <tromey@redhat.com>, gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [RFC/Patch] Call overloaded operators to perform valid Python operations on struct/class values.
Date: Wed, 18 Dec 2013 16:37:00 -0000	[thread overview]
Message-ID: <CAP9bCMTthY1oJN-res0Cegd_YrMqW77ZehMjnzK+Y9681Of5bQ@mail.gmail.com> (raw)
In-Reply-To: <CAGyQ6gzYE_NthBxc17VPxjgtYSqTW3HGhPVp8qvk=Nye27G8hg@mail.gmail.com>

On Mon, Dec 16, 2013 at 2:24 PM, Siva Chandra <sivachandra@google.com> wrote:
> On Sun, Dec 15, 2013 at 11:48 PM, Doug Evans <xdje42@gmail.com> wrote:
>> For myself, I'm just going slow on this one.  E.g., is there another
>> way to provide this?
>> E.g., some kind of facility that uses gdb's language parsers but let's
>> one pass in gdb.Value objects from Python?
>> It sounds doable, but I haven't thought about it very hard (it might
>> not even make sense, or it may require more effort).
>> Its drawback to the current proposal is that it would be a bit more
>> verbose, but it has to potential of handling a lot more cases.
>
> I am not sure I fully understand this alternative.

It could be done in various ways I think.  One way would be language parsers
and the evaluator have some way of recognizing a value as coming from
an extension language and fetch the underlying gdb value accordingly.
Kinda like the gdb.parse_and_eval method in Python, but with the
ability to pass Python values to it.

Not that this could work, but for illustration's sake:
smart_ptr = gdb.parse_and_eval ("my_smart_ptr");
dereferenced_smart_ptr = gdb.parse_and_eval("*%V" % smart_ptr)

I can think of a quick hack that was just a wrapper on parse_and_eval that
used some convenience variables to temporarily hold the values that
came from Python (using some syntax that worked, the above
is just for illustration's sake).

> My patch adds the
> ability to use valid Python operators on gdb.Value objects in Python
> code.  Operators which have different semantics in Python (like '[]',
> ',' etc.), and operators which do not exist in Python (like '->')
> cannot be facilitated.  But, my patch adds the ability to use all
> other operators which are valid (as far as my understanding today
> stands at) in Python.

  reply	other threads:[~2013-12-18 16:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-02 19:28 Siva Chandra
2013-12-06  6:25 ` Doug Evans
2013-12-06 14:20   ` Siva Chandra
2013-12-11 20:18     ` Tom Tromey
2013-12-11 20:17   ` Tom Tromey
2013-12-16  7:48     ` Doug Evans
2013-12-16 22:24       ` Siva Chandra
2013-12-18 16:37         ` Doug Evans [this message]
2013-12-18 23:15           ` Siva Chandra
2013-12-19 14:11             ` Doug Evans
2013-12-19 17:50               ` Siva Chandra
2013-12-20 22:29                 ` Siva Chandra
2013-12-21  8:21                   ` Eli Zaretskii
2013-12-30 14:40                     ` Siva Chandra
2013-12-30 17:57                       ` Eli Zaretskii
2014-01-22 21:39                       ` Siva Chandra
2014-01-25 18:45                         ` Doug Evans

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP9bCMTthY1oJN-res0Cegd_YrMqW77ZehMjnzK+Y9681Of5bQ@mail.gmail.com \
    --to=xdje42@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=sivachandra@google.com \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).