Transforming Structures
The following small program contains a structure and the statements necessary to initialize it:
#include <stdio.h>
int main () {
struct stuff {
int month;
int day;
int year;
char * pName;
char * pStreet;
char CityState[30];
};
struct stuff info;
char my_name[] = "John Smith";
char my_street[] = "24 Prime Parkway, Suite 106";
char my_CityState[] = "Natick, MA 01760";
info.month = 6;
info.day = 20;
info.year = 2004;
info.pName = my_name;
info.pStreet = my_street;
strcpy(info.CityState, my_CityState);
printf("The year is %d\n", info.year);
}
Suppose that you do not want to see the month and day components. You can do this by creating a transformation that names just the elements you want to include:
::TV::TTF::RTF::build_struct_transform {
name {^struct stuff$}
members {
{ year { year } }
{ pName { * pName } }
{ pStreet { * pStreet } }
}
}
You can apply this transformation to your data in the following ways:
• After opening the program, use the Tools > Command Line command to open a CLI Window. Next, type this function call.
• If you write the function call into a file, use the Tcl source command. If the name of the file is stuff.tvd, enter the following command into a CLI Window:
source stuff.tvd
• You can place the transformation source file into the same directory as the executable, giving it the same root name as the executable. If the executable file has the name stuff, TotalView will automatically execute all commands within a file named stuff.tvd when it loads your executable.
After TotalView processes your transformation, it displays the Variable Window when you dive on the info structure: