From: Aitor Garcia on 4 Aug 2010 07:33 Hi, I need to know the memory locations of all variables in a C project including variables allocated inside structs. What I want to do in to expand the structs into its basic elements (floats, int16 and int8). In a header file (example.h) I have the following definitions. struct house{ float area; int8 rooms; int16 visits; }; struct car{ float price; int8 color; }; I have been able to extract from the project the name of every struct, the type of the struct and the beginning address of each struct. example_list=[] example_list.append(['house1','struct house','000082d0') example_list.append(['house2','struct house','00003000') example_list.append(['car1','struct car','00004000') I need an output like this. house1_struct_house_area float 000082d0 house1_struct_house_rooms int8 000082d4 house1_struct_house_visits int16 000082d5 house2_struct_house_area float 00003000 house2_struct_house_rooms int8 00003004 house2_struct_house_visits int16 00003005 car1_struct_car_price float 00004000 car1_struct_car_color int8 00004004 How can I efficiently do this in Python ? I do not have very clear which element of Python should I use to store the struct list or class I would be very grateful if someone could give me some pointers. Aitor
From: Jon Clements on 4 Aug 2010 09:36 On 4 Aug, 12:33, Aitor Garcia <carrierphasejit...(a)yahoo.com> wrote: > Hi, > > I need to know the memory locations of all variables in a C project including > variables allocated inside structs. Pray tell us why? > > What I want to do in to expand the structs into its basic elements (floats, > int16 and int8). > > In a header file (example.h) I have the following definitions. > > struct house{ > float area; > > int8 rooms; > int16 visits; > > }; > > struct car{ > float price; > int8 color; > > }; > > I have been able to extract from the project the name of every struct, the type of the struct and the beginning address of each struct. How have you done this? What compiler and debugger/profiler are you using? etc... The memory address is going to possibly change every time, unless you're talking static variables within an applications own address space (even then I'm not 100% sure -- I haven't had to touch C in 2 years, so I'd declare myself rusty). > > example_list=[] > example_list.append(['house1','struct house','000082d0') > example_list.append(['house2','struct house','00003000') > example_list.append(['car1','struct car','00004000') > > I need an output like this. > > house1_struct_house_area float 000082d0 > house1_struct_house_rooms int8 000082d4 > house1_struct_house_visits int16 000082d5 > house2_struct_house_area float 00003000 > house2_struct_house_rooms int8 00003004 > house2_struct_house_visits int16 00003005 > car1_struct_car_price float 00004000 > car1_struct_car_color int8 00004004 > > How can I efficiently do this in Python ? Well using the pyparsing library, it's extremely easy to parse the C grammar. But that's not what you're asking. > > I do not have very clear which element of Python should I use > to store the struct list or class > > I would be very grateful if someone could give me some pointers. An un-intended C pun :) ? If you let the list know the use-case, then we might stand a chance of giving you some reference (C++ pun?) Jon.
|
Pages: 1 Prev: Python package to read .7z archives? Next: newbie problem with str.replace |