public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: "Elmenthaler, Jens" <jens.elmenthaler@verigy.com>
To: <gdb@sourceware.org>
Subject: [Pretty printers] Can the name or type of a child value change?
Date: Fri, 13 Aug 2010 06:41:00 -0000	[thread overview]
Message-ID: <58596C4646708B4BB990C4483997333002F403D9@usplmvpbe001.ent.rt.verigy.net> (raw)

Consider the following code example:

  struct JAny {
    union {
      char *text;
      int number;
    } val;

    // 1 -> text, 2 -> number
    int type;
  };

And the following pretty printer:
class AnyPrinter:
    class _iterator:
        def __init__ (self, name, value):
            self.count = 0
            self.name = name
            self.value = value

        def __iter__(self):
            return self

        def next(self):
            if self.count != 0:
                raise StopIteration
            
            self.count = self.count + 1
            return (self.name, self.value)    

    def __init__(self, val):
        self.type = val['type']
        
        if self.type == 1:
            self.value = val['val']['text']
            self.name = "text"
            
        if self.type == 2:
            self.value = val['val']['number']
            self.name = "number"
            
    def children(self):
        return self._iterator(self.name, self.value)

    def to_string(self):
        return "JAny"

When stepping in the debugger over a line that changes JAny.type, the name and the type of the child value returned by the pretty printer change.

Are the MI variable objects meant to handle this?

Greetings, Jens.

             reply	other threads:[~2010-08-13  6:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-13  6:41 Elmenthaler, Jens [this message]
2010-08-16 20:53 ` Tom Tromey
2012-03-28  8:03   ` Elmenthaler, Jens

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=58596C4646708B4BB990C4483997333002F403D9@usplmvpbe001.ent.rt.verigy.net \
    --to=jens.elmenthaler@verigy.com \
    --cc=gdb@sourceware.org \
    /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).