The list that defines a member has a name component and sublist within the list. This sublist defines a type transformation expression. This expression tells TotalView what it needs to know to locate the member. The example in the previous section used two of the six possible expressions. The following list describes these expressions:Use the data whose location is an offset away from expr. This behaves just like pointer arithmetic in C and C++. The result is calculated based on the size of the type that expr points to:
result = expr + sizeof(*expr) * offsetNames a subelement in a structure accessed using a pointer. This is used in the same way as the -> operator in C and C++. You must type a space before and after the -> operator.
Figure 8:
Figure 9:
![]()
pmonth: The month member is added to the transformed structure without making any changes to the way TotalView displays its data. This member, however, changes the display name of the data element. That is, the name that TotalView uses to display a member within the remapped structure does not have to be the same as it is in the actual structure.
![]()
pName: The pName member is added. The transformation contains two operations. The first dereferences the pointer. In addition, as x1 is derived from xbase, you need to upcast the variable when you want to include it.
![]()
![]()
pVoid1: The v member is added. Because the application’s definition of the data is void *, casting tells TotalView how it should interpret the information. In this example, the data is being cast into a pointer to a string.
![]()
pVoid2: The q member is added. The transformation contains two operations. The first casts q into a pointer to the x2 class. The second dereferences the pointer.
Rogue Wave Software, Inc. |
Voice: (303) 473-9118 |
support@roguewave.com |