This is the mail archive of the archer@sourceware.org mailing list for the Archer 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]

Re: [python][rfc] Attempt to print the base class if a there is noPython pretty-printer for a derived class.


Pedro Alves wrote:
On Friday 27 March 2009 17:50:39, Tom Tromey wrote:
Pedro> Does this do sensible things if class Y has some
Pedro> fields that mask the Base class's ones, when you only have a
Pedro> pretty printer for Base?

Yeah... it pretty-prints Base, then goes on to print the subclass
fields as usual (perhaps pretty-printing them as well).

Okay, I was concerned if the pretty printer for Base would access Y::x instead of Base::x
It is a printer for Base, but that does not mean it will print out the Base values. Take this example:

class Base : public std::tr1::unordered_map<int, char *>
{
public:
 std::tr1::unordered_map<int, char *> map;

 Base ()
 {
   map[1]="Base";
 }
};

class Derived : public Base
{
public:
 std::tr1::unordered_map<int, char *> map;

 Derived ()
 {
   map[1]="Derived";
 }
};

If you instantiate Derived and print it with the patch, you will get:

(pg-gdb) python import gdb.libstdcxx.v6.printers
(pg-gdb) p derived
$2 = {
 <Base> = std::tr1::unordered_map with 0 elements,
 members of Derived:
 map = std::tr1::unordered_map with 1 elements = {
   [1] = 0x403952 "Derived"
 }
}


Regards


Phil
Phil


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