This is the mail archive of the gdb@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]

automated cast to different data type possible?


Hi all,

I have the following data structures:

class Base
{
enum Type
{
TYPE_A,
TYPE_B,
...
} type;

public:
  Base(Type _type):type(_type){}
 };

class A: pubic Base {

   int x;
   int y;
   ptr ...

public:
   A():Base(TYPE_A){}

};

class B: public Base {
   B():Base(TYPE_B){}
   double a;
   double b;
   int c;
   ptr ...
   ptr ...
};

Base* ptr1=new A;
Base* ptr2=new B;

---------

Now I want to debug ptr1. print returns only the output for base. OK
But I want to see, the type is a object of class A.
Writing a pretty printer for Base is possible and could output
as a type of A or B which works fine.

BUT! and that is the my question:
The pretty printer only give an output which "looks like" a type of A or B.
In combination with ddd I am not able to dereference the ptr pointers in A or B, because the object of type Base contains no ptr element!

On command line:
graph display ptr1;
<double click on ptr1> -> 
graph display *ptr1
a new window in graph view is visible with type Base
if I have a pretty printer inserted, I get a output which looks like
an object of class A.
But: if I now do a <double click> on the ptr elements, I got:
no element ptr... in Base.

Is there any chance to handle that kind of automatism in a python script?
To make the classes virtual is no solution, the data structure is fixed and used for persistent storage.

Thanks
 Klaus









-- 
NEU: FreePhone - kostenlos mobil telefonieren und surfen!			
Jetzt informieren: http://www.gmx.net/de/go/freephone


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