annotate agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50TypeIterator.java @ 17524:89152779163c

Merge with jdk8-b132
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 15 Oct 2014 11:59:32 +0200
parents c18cbe5936b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
2 * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 package sun.jvm.hotspot.debugger.win32.coff;
a61af66fc99e Initial load
duke
parents:
diff changeset
26
a61af66fc99e Initial load
duke
parents:
diff changeset
27 import java.util.NoSuchElementException;
a61af66fc99e Initial load
duke
parents:
diff changeset
28
a61af66fc99e Initial load
duke
parents:
diff changeset
29 /** <p> Provides iteration-style access to the types in the
a61af66fc99e Initial load
duke
parents:
diff changeset
30 sstGlobalTypes subsection of the VC++ 5.0 debug
a61af66fc99e Initial load
duke
parents:
diff changeset
31 information. Clients should walk down these platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
32 types and transform them into the platform-independent interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
33 described in the package sun.jvm.hotspot.debugger.csym. </p>
a61af66fc99e Initial load
duke
parents:
diff changeset
34
a61af66fc99e Initial load
duke
parents:
diff changeset
35 <p> This iterator is a "two-dimensional" iterator; it iterates not
a61af66fc99e Initial load
duke
parents:
diff changeset
36 only over all of the types in the type table, but also iterates
a61af66fc99e Initial load
duke
parents:
diff changeset
37 over the leaf types in the current type string. This structure was
a61af66fc99e Initial load
duke
parents:
diff changeset
38 chosen to avoid constructing a new type iterator for each type in
a61af66fc99e Initial load
duke
parents:
diff changeset
39 the type table because of the expected large number of types. </p>
a61af66fc99e Initial load
duke
parents:
diff changeset
40 */
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 public interface DebugVC50TypeIterator {
a61af66fc99e Initial load
duke
parents:
diff changeset
43 //
a61af66fc99e Initial load
duke
parents:
diff changeset
44 // Iteration through type table
a61af66fc99e Initial load
duke
parents:
diff changeset
45 //
a61af66fc99e Initial load
duke
parents:
diff changeset
46
a61af66fc99e Initial load
duke
parents:
diff changeset
47 /** Indicates whether the iteration through the type table is
a61af66fc99e Initial load
duke
parents:
diff changeset
48 complete. */
a61af66fc99e Initial load
duke
parents:
diff changeset
49 public boolean done();
a61af66fc99e Initial load
duke
parents:
diff changeset
50
a61af66fc99e Initial load
duke
parents:
diff changeset
51 /** Go to the next type in the type table. NOTE that the iterator is
a61af66fc99e Initial load
duke
parents:
diff changeset
52 pointing at the first type initially, so one should use a while
a61af66fc99e Initial load
duke
parents:
diff changeset
53 (!iter.done()) { ... iter.next(); } construct.
a61af66fc99e Initial load
duke
parents:
diff changeset
54
a61af66fc99e Initial load
duke
parents:
diff changeset
55 @throw NoSuchElementException if the iterator is already done
a61af66fc99e Initial load
duke
parents:
diff changeset
56 and next() is called. */
a61af66fc99e Initial load
duke
parents:
diff changeset
57 public void next() throws NoSuchElementException;
a61af66fc99e Initial load
duke
parents:
diff changeset
58
a61af66fc99e Initial load
duke
parents:
diff changeset
59 /** Gets the length, in bytes, of the current type record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
60 public short getLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
61
a61af66fc99e Initial load
duke
parents:
diff changeset
62 /** Gets the type index of the current type. This number is
a61af66fc99e Initial load
duke
parents:
diff changeset
63 compatible with type references in symbols and type records. */
a61af66fc99e Initial load
duke
parents:
diff changeset
64 public int getTypeIndex();
a61af66fc99e Initial load
duke
parents:
diff changeset
65
a61af66fc99e Initial load
duke
parents:
diff changeset
66 /** Debugging support only */
a61af66fc99e Initial load
duke
parents:
diff changeset
67 public int getNumTypes();
a61af66fc99e Initial load
duke
parents:
diff changeset
68
a61af66fc99e Initial load
duke
parents:
diff changeset
69 //
a61af66fc99e Initial load
duke
parents:
diff changeset
70 // Iteration through type strings
a61af66fc99e Initial load
duke
parents:
diff changeset
71 //
a61af66fc99e Initial load
duke
parents:
diff changeset
72
a61af66fc99e Initial load
duke
parents:
diff changeset
73 /** Indicates whether iteration through the current type string is
a61af66fc99e Initial load
duke
parents:
diff changeset
74 complete. */
a61af66fc99e Initial load
duke
parents:
diff changeset
75 public boolean typeStringDone();
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77 /** Goes to the next element in the current type string. NOTE that
a61af66fc99e Initial load
duke
parents:
diff changeset
78 the iterator is pointing at the first type initially, so one
a61af66fc99e Initial load
duke
parents:
diff changeset
79 should use a while (!iter.typeStringDone()) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
80 iter.typeStringNext(); } construct.
a61af66fc99e Initial load
duke
parents:
diff changeset
81
a61af66fc99e Initial load
duke
parents:
diff changeset
82 @throw NoSuchElementException if the iterator is already done
a61af66fc99e Initial load
duke
parents:
diff changeset
83 and typeStringNext() is called. */
a61af66fc99e Initial load
duke
parents:
diff changeset
84 public void typeStringNext() throws NoSuchElementException;
a61af66fc99e Initial load
duke
parents:
diff changeset
85
a61af66fc99e Initial load
duke
parents:
diff changeset
86 /** Return the leaf index (see {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
87 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeLeafIndices})
a61af66fc99e Initial load
duke
parents:
diff changeset
88 for the current element of the current type string. */
a61af66fc99e Initial load
duke
parents:
diff changeset
89 public int typeStringLeaf();
a61af66fc99e Initial load
duke
parents:
diff changeset
90
a61af66fc99e Initial load
duke
parents:
diff changeset
91 /** For debugging: returns the file offset of the current type
a61af66fc99e Initial load
duke
parents:
diff changeset
92 string leaf. */
a61af66fc99e Initial load
duke
parents:
diff changeset
93 public int typeStringOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
94
a61af66fc99e Initial load
duke
parents:
diff changeset
95 //
a61af66fc99e Initial load
duke
parents:
diff changeset
96 // Leaf Indices Referenced from Symbols
a61af66fc99e Initial load
duke
parents:
diff changeset
97 //
a61af66fc99e Initial load
duke
parents:
diff changeset
98
a61af66fc99e Initial load
duke
parents:
diff changeset
99 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
100 // LF_MODIFIER accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
101 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 // This record is used to indicate the const,r volatile and
a61af66fc99e Initial load
duke
parents:
diff changeset
104 // unaligned properties for any particular type.
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106 /** Type index of the modified type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
107 public int getModifierIndex();
a61af66fc99e Initial load
duke
parents:
diff changeset
108
a61af66fc99e Initial load
duke
parents:
diff changeset
109 /** Attributes specified in MODIFIER_ enums in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
110 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
111 public short getModifierAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
112
a61af66fc99e Initial load
duke
parents:
diff changeset
113 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
114 // LF_POINTER accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
115 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
116
a61af66fc99e Initial load
duke
parents:
diff changeset
117 /** Type index of object pointed to. */
a61af66fc99e Initial load
duke
parents:
diff changeset
118 public int getPointerType();
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 /** Pointer attributes. Consists of seven bit fields whose
a61af66fc99e Initial load
duke
parents:
diff changeset
121 enumerants are in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
122 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}:
a61af66fc99e Initial load
duke
parents:
diff changeset
123 PTRTYPE, PTRMODE, ISFLAT32, VOLATILE, CONST, UNALIGNED, and
a61af66fc99e Initial load
duke
parents:
diff changeset
124 RESTRICT. */
a61af66fc99e Initial load
duke
parents:
diff changeset
125 public int getPointerAttributes();
a61af66fc99e Initial load
duke
parents:
diff changeset
126
a61af66fc99e Initial load
duke
parents:
diff changeset
127 /** Only valid if the pointer type is BASED_ON_TYPE; retrieves index
a61af66fc99e Initial load
duke
parents:
diff changeset
128 of type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
129 public int getPointerBasedOnTypeIndex();
a61af66fc99e Initial load
duke
parents:
diff changeset
130
a61af66fc99e Initial load
duke
parents:
diff changeset
131 /** Only valid if the pointer type is BASED_ON_TYPE; retrieves name
a61af66fc99e Initial load
duke
parents:
diff changeset
132 of type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
133 public String getPointerBasedOnTypeName();
a61af66fc99e Initial load
duke
parents:
diff changeset
134
a61af66fc99e Initial load
duke
parents:
diff changeset
135 /** Only valid if the pointer mode is either PTR_TO_DATA_MEMBER or
a61af66fc99e Initial load
duke
parents:
diff changeset
136 PTR_TO_METHOD; retrieves the type index of the containing
a61af66fc99e Initial load
duke
parents:
diff changeset
137 class. */
a61af66fc99e Initial load
duke
parents:
diff changeset
138 public int getPointerToMemberClass();
a61af66fc99e Initial load
duke
parents:
diff changeset
139
a61af66fc99e Initial load
duke
parents:
diff changeset
140 /** Only valid if the pointer mode is either PTR_TO_DATA_MEMBER or
a61af66fc99e Initial load
duke
parents:
diff changeset
141 PTR_TO_METHOD; retrieves the data format of the pointer in
a61af66fc99e Initial load
duke
parents:
diff changeset
142 memory. See the PTR_FORMAT enum in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
143 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
144 public short getPointerToMemberFormat();
a61af66fc99e Initial load
duke
parents:
diff changeset
145
a61af66fc99e Initial load
duke
parents:
diff changeset
146 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
147 // LF_ARRAY accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
148 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
149
a61af66fc99e Initial load
duke
parents:
diff changeset
150 /** Type index of each array element. */
a61af66fc99e Initial load
duke
parents:
diff changeset
151 public int getArrayElementType();
a61af66fc99e Initial load
duke
parents:
diff changeset
152
a61af66fc99e Initial load
duke
parents:
diff changeset
153 /** Type index of indexing variable. */
a61af66fc99e Initial load
duke
parents:
diff changeset
154 public int getArrayIndexType();
a61af66fc99e Initial load
duke
parents:
diff changeset
155
a61af66fc99e Initial load
duke
parents:
diff changeset
156 /** Length of the array in bytes. */
a61af66fc99e Initial load
duke
parents:
diff changeset
157 public int getArrayLength() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
158
a61af66fc99e Initial load
duke
parents:
diff changeset
159 /** Length-prefixed name of array. */
a61af66fc99e Initial load
duke
parents:
diff changeset
160 public String getArrayName();
a61af66fc99e Initial load
duke
parents:
diff changeset
161
a61af66fc99e Initial load
duke
parents:
diff changeset
162 /////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
163 // LF_CLASS and LF_STRUCTURE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
164 /////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
165
a61af66fc99e Initial load
duke
parents:
diff changeset
166 /** Number of elements in the class or structure. This count
a61af66fc99e Initial load
duke
parents:
diff changeset
167 includes direct, virtual, and indirect virtual bases, and
a61af66fc99e Initial load
duke
parents:
diff changeset
168 methods including overloads, data members, static data members,
a61af66fc99e Initial load
duke
parents:
diff changeset
169 friends, and so on. */
a61af66fc99e Initial load
duke
parents:
diff changeset
170 public short getClassCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
171
a61af66fc99e Initial load
duke
parents:
diff changeset
172 /** Property bit field; see PROPERTY_ enumeration in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
173 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
174 public short getClassProperty();
a61af66fc99e Initial load
duke
parents:
diff changeset
175
a61af66fc99e Initial load
duke
parents:
diff changeset
176 /** Type index of the field list for this class. */
a61af66fc99e Initial load
duke
parents:
diff changeset
177 public int getClassFieldList();
a61af66fc99e Initial load
duke
parents:
diff changeset
178
a61af66fc99e Initial load
duke
parents:
diff changeset
179 /** Get new iterator pointing at the field list of this class. */
a61af66fc99e Initial load
duke
parents:
diff changeset
180 public DebugVC50TypeIterator getClassFieldListIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
181
a61af66fc99e Initial load
duke
parents:
diff changeset
182 /** Type index of the derivation list. This is output by the
a61af66fc99e Initial load
duke
parents:
diff changeset
183 compiler as 0x0000 and is filled in by the CVPACK utility to a
a61af66fc99e Initial load
duke
parents:
diff changeset
184 LF_DERIVED record containing the type indices of those classes
a61af66fc99e Initial load
duke
parents:
diff changeset
185 which immediately inherit the current class. A zero index
a61af66fc99e Initial load
duke
parents:
diff changeset
186 indicates that no derivation information is available. A LF_NULL
a61af66fc99e Initial load
duke
parents:
diff changeset
187 index indicates that the class is not inherited by other
a61af66fc99e Initial load
duke
parents:
diff changeset
188 classes. */
a61af66fc99e Initial load
duke
parents:
diff changeset
189 public int getClassDerivationList();
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 /** Type index of the virtual function table shape descriptor. */
a61af66fc99e Initial load
duke
parents:
diff changeset
192 public int getClassVShape();
a61af66fc99e Initial load
duke
parents:
diff changeset
193
a61af66fc99e Initial load
duke
parents:
diff changeset
194 /** Numeric leaf specifying size in bytes of the structure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
195 public int getClassSize() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
196
a61af66fc99e Initial load
duke
parents:
diff changeset
197 /** Length-prefixed name of this type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
198 public String getClassName();
a61af66fc99e Initial load
duke
parents:
diff changeset
199
a61af66fc99e Initial load
duke
parents:
diff changeset
200 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
201 // LF_UNION accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
202 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 /** Number of fields in the union. */
a61af66fc99e Initial load
duke
parents:
diff changeset
205 public short getUnionCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
206
a61af66fc99e Initial load
duke
parents:
diff changeset
207 /** Property bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
208 public short getUnionProperty();
a61af66fc99e Initial load
duke
parents:
diff changeset
209
a61af66fc99e Initial load
duke
parents:
diff changeset
210 /** Type index of field list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
211 public int getUnionFieldList();
a61af66fc99e Initial load
duke
parents:
diff changeset
212
a61af66fc99e Initial load
duke
parents:
diff changeset
213 /** Get new iterator pointing at the field list of this union. */
a61af66fc99e Initial load
duke
parents:
diff changeset
214 public DebugVC50TypeIterator getUnionFieldListIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 /** Numeric leaf specifying size in bytes of the union. */
a61af66fc99e Initial load
duke
parents:
diff changeset
217 public int getUnionSize() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
218
a61af66fc99e Initial load
duke
parents:
diff changeset
219 /** Length-prefixed name of union. */
a61af66fc99e Initial load
duke
parents:
diff changeset
220 public String getUnionName();
a61af66fc99e Initial load
duke
parents:
diff changeset
221
a61af66fc99e Initial load
duke
parents:
diff changeset
222 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
223 // LF_ENUM accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
224 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
225
a61af66fc99e Initial load
duke
parents:
diff changeset
226 /** Number of enumerates. */
a61af66fc99e Initial load
duke
parents:
diff changeset
227 public short getEnumCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
228
a61af66fc99e Initial load
duke
parents:
diff changeset
229 /** Property bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
230 public short getEnumProperty();
a61af66fc99e Initial load
duke
parents:
diff changeset
231
a61af66fc99e Initial load
duke
parents:
diff changeset
232 /** Index of underlying type of enum. */
a61af66fc99e Initial load
duke
parents:
diff changeset
233 public int getEnumType();
a61af66fc99e Initial load
duke
parents:
diff changeset
234
a61af66fc99e Initial load
duke
parents:
diff changeset
235 /** Type index of field list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
236 public int getEnumFieldList();
a61af66fc99e Initial load
duke
parents:
diff changeset
237
a61af66fc99e Initial load
duke
parents:
diff changeset
238 /** Get new iterator pointing at the field list of this enum. */
a61af66fc99e Initial load
duke
parents:
diff changeset
239 public DebugVC50TypeIterator getEnumFieldListIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
240
a61af66fc99e Initial load
duke
parents:
diff changeset
241 /** Length-prefixed name of enum. */
a61af66fc99e Initial load
duke
parents:
diff changeset
242 public String getEnumName();
a61af66fc99e Initial load
duke
parents:
diff changeset
243
a61af66fc99e Initial load
duke
parents:
diff changeset
244 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
245 // LF_PROCEDURE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
246 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
247
a61af66fc99e Initial load
duke
parents:
diff changeset
248 /** Type index of the value returned by the procedure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
249 public int getProcedureReturnType();
a61af66fc99e Initial load
duke
parents:
diff changeset
250
a61af66fc99e Initial load
duke
parents:
diff changeset
251 /** Calling convention of the procedure; see CALLCONV_ enumeration
a61af66fc99e Initial load
duke
parents:
diff changeset
252 in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
253 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
254 public byte getProcedureCallingConvention();
a61af66fc99e Initial load
duke
parents:
diff changeset
255
a61af66fc99e Initial load
duke
parents:
diff changeset
256 /** Number of parameters. */
a61af66fc99e Initial load
duke
parents:
diff changeset
257 public short getProcedureNumberOfParameters();
a61af66fc99e Initial load
duke
parents:
diff changeset
258
a61af66fc99e Initial load
duke
parents:
diff changeset
259 /** Type index of argument list type record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
260 public int getProcedureArgumentList();
a61af66fc99e Initial load
duke
parents:
diff changeset
261
a61af66fc99e Initial load
duke
parents:
diff changeset
262 /** Get new iterator pointing at the argument list of this procedure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
263 public DebugVC50TypeIterator getProcedureArgumentListIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
264
a61af66fc99e Initial load
duke
parents:
diff changeset
265 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
266 // LF_MFUNCTION accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
267 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
268
a61af66fc99e Initial load
duke
parents:
diff changeset
269 /** Type index of the value returned by the procedure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
270 public int getMFunctionReturnType();
a61af66fc99e Initial load
duke
parents:
diff changeset
271
a61af66fc99e Initial load
duke
parents:
diff changeset
272 /** Type index of the containing class of the function. */
a61af66fc99e Initial load
duke
parents:
diff changeset
273 public int getMFunctionContainingClass();
a61af66fc99e Initial load
duke
parents:
diff changeset
274
a61af66fc99e Initial load
duke
parents:
diff changeset
275 /** Type index of the <b>this</b> parameter of the member function.
a61af66fc99e Initial load
duke
parents:
diff changeset
276 A type of void indicates that the member function is static and
a61af66fc99e Initial load
duke
parents:
diff changeset
277 has no <b>this</b> parameter. */
a61af66fc99e Initial load
duke
parents:
diff changeset
278 public int getMFunctionThis();
a61af66fc99e Initial load
duke
parents:
diff changeset
279
a61af66fc99e Initial load
duke
parents:
diff changeset
280 /** Calling convention of the procedure; see CALLCONV_ enumeration
a61af66fc99e Initial load
duke
parents:
diff changeset
281 in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
282 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
283 public byte getMFunctionCallingConvention();
a61af66fc99e Initial load
duke
parents:
diff changeset
284
a61af66fc99e Initial load
duke
parents:
diff changeset
285 /** Number of parameters. This count does not include the
a61af66fc99e Initial load
duke
parents:
diff changeset
286 <b>this</b> parameter. */
a61af66fc99e Initial load
duke
parents:
diff changeset
287 public short getMFunctionNumberOfParameters();
a61af66fc99e Initial load
duke
parents:
diff changeset
288
a61af66fc99e Initial load
duke
parents:
diff changeset
289 /** List of parameter specifiers. This list does not include the
a61af66fc99e Initial load
duke
parents:
diff changeset
290 <b>this</b> parameter. */
a61af66fc99e Initial load
duke
parents:
diff changeset
291 public int getMFunctionArgumentList();
a61af66fc99e Initial load
duke
parents:
diff changeset
292
a61af66fc99e Initial load
duke
parents:
diff changeset
293 /** Get new iterator pointing at the argument list of this member function. */
a61af66fc99e Initial load
duke
parents:
diff changeset
294 public DebugVC50TypeIterator getMFunctionArgumentListIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
295
a61af66fc99e Initial load
duke
parents:
diff changeset
296 /** Logical <b>this</b> adjustor for the method. Whenever a class
a61af66fc99e Initial load
duke
parents:
diff changeset
297 element is referenced via the <b>this</b> pointer, thisadjust
a61af66fc99e Initial load
duke
parents:
diff changeset
298 will be added to the resultant offset before referencing the
a61af66fc99e Initial load
duke
parents:
diff changeset
299 element. */
a61af66fc99e Initial load
duke
parents:
diff changeset
300 public int getMFunctionThisAdjust();
a61af66fc99e Initial load
duke
parents:
diff changeset
301
a61af66fc99e Initial load
duke
parents:
diff changeset
302 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
303 // LF_VTSHAPE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
304 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
305
a61af66fc99e Initial load
duke
parents:
diff changeset
306 // This record describes the format of a virtual function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
307 // This record is accessed via the vfunctabptr in the member list of
a61af66fc99e Initial load
duke
parents:
diff changeset
308 // the class which introduces the virtual function. The vfunctabptr
a61af66fc99e Initial load
duke
parents:
diff changeset
309 // is defined either by the LF_VFUNCTAB or LF_VFUNCOFF member
a61af66fc99e Initial load
duke
parents:
diff changeset
310 // record. If LF_VFUNCTAB record is used, then vfunctabptr is at the
a61af66fc99e Initial load
duke
parents:
diff changeset
311 // address point of the class. If LF_VFUNCOFF record is used, then
a61af66fc99e Initial load
duke
parents:
diff changeset
312 // vfunctabptr is at the specified offset from the class address
a61af66fc99e Initial load
duke
parents:
diff changeset
313 // point. The underlying type of the pointer is a VTShape type
a61af66fc99e Initial load
duke
parents:
diff changeset
314 // record. This record describes how to interpret the memory at the
a61af66fc99e Initial load
duke
parents:
diff changeset
315 // location pointed to by the virtual function table pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
316
a61af66fc99e Initial load
duke
parents:
diff changeset
317 /** Number of descriptors. */
a61af66fc99e Initial load
duke
parents:
diff changeset
318 public short getVTShapeCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
319
a61af66fc99e Initial load
duke
parents:
diff changeset
320 /** Fetch the <i>i</i>th descriptor (0..getVTShapeCount() - 1). Each
a61af66fc99e Initial load
duke
parents:
diff changeset
321 descriptor is a 4-bit (half-byte) value described by the
a61af66fc99e Initial load
duke
parents:
diff changeset
322 VTENTRY_ enumeration in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
323 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
324 public int getVTShapeDescriptor(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
325
a61af66fc99e Initial load
duke
parents:
diff changeset
326 //
a61af66fc99e Initial load
duke
parents:
diff changeset
327 // NOTE: LF_COBOL0, LF_COBOL1 accessors elided (FIXME)
a61af66fc99e Initial load
duke
parents:
diff changeset
328 //
a61af66fc99e Initial load
duke
parents:
diff changeset
329
a61af66fc99e Initial load
duke
parents:
diff changeset
330 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
331 // LF_BARRAY accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
332 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
333
a61af66fc99e Initial load
duke
parents:
diff changeset
334 /** Type of each element of the array. */
a61af66fc99e Initial load
duke
parents:
diff changeset
335 public int getBasicArrayType();
a61af66fc99e Initial load
duke
parents:
diff changeset
336
a61af66fc99e Initial load
duke
parents:
diff changeset
337 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
338 // LF_LABEL accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
339 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
340
a61af66fc99e Initial load
duke
parents:
diff changeset
341 /** Addressing mode of the label, described by LABEL_ADDR_MODE_ enum
a61af66fc99e Initial load
duke
parents:
diff changeset
342 in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
343 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
344 public short getLabelAddressMode();
a61af66fc99e Initial load
duke
parents:
diff changeset
345
a61af66fc99e Initial load
duke
parents:
diff changeset
346 //
a61af66fc99e Initial load
duke
parents:
diff changeset
347 // LF_NULL, LF_NOTTRANS have no data
a61af66fc99e Initial load
duke
parents:
diff changeset
348 //
a61af66fc99e Initial load
duke
parents:
diff changeset
349
a61af66fc99e Initial load
duke
parents:
diff changeset
350 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
351 // LF_DIMARRAY accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
352 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
353
a61af66fc99e Initial load
duke
parents:
diff changeset
354 /** Underlying type of the array. */
a61af66fc99e Initial load
duke
parents:
diff changeset
355 public int getDimArrayType();
a61af66fc99e Initial load
duke
parents:
diff changeset
356
a61af66fc99e Initial load
duke
parents:
diff changeset
357 /** Index of the type record containing the dimension information. */
a61af66fc99e Initial load
duke
parents:
diff changeset
358 public int getDimArrayDimInfo();
a61af66fc99e Initial load
duke
parents:
diff changeset
359
a61af66fc99e Initial load
duke
parents:
diff changeset
360 /** Length-prefixed name of the array. */
a61af66fc99e Initial load
duke
parents:
diff changeset
361 public String getDimArrayName();
a61af66fc99e Initial load
duke
parents:
diff changeset
362
a61af66fc99e Initial load
duke
parents:
diff changeset
363 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
364 // LF_VFTPATH accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
365 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
366
a61af66fc99e Initial load
duke
parents:
diff changeset
367 /** Count of number of bases in the path to the virtual function
a61af66fc99e Initial load
duke
parents:
diff changeset
368 table. */
a61af66fc99e Initial load
duke
parents:
diff changeset
369 public int getVFTPathCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
370
a61af66fc99e Initial load
duke
parents:
diff changeset
371 /** Type indices of the base classes in the path
a61af66fc99e Initial load
duke
parents:
diff changeset
372 (0..getVFTPathCount() - 1). */
a61af66fc99e Initial load
duke
parents:
diff changeset
373 public int getVFTPathBase(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
374
a61af66fc99e Initial load
duke
parents:
diff changeset
375 //
a61af66fc99e Initial load
duke
parents:
diff changeset
376 // NOTE: LF_PRECOMP and LF_ENDPRECOMP accessors elided because the
a61af66fc99e Initial load
duke
parents:
diff changeset
377 // signature contained within is extremely compiler-specific and is
a61af66fc99e Initial load
duke
parents:
diff changeset
378 // left undefined in the specification, so is not useful. (FIXME)
a61af66fc99e Initial load
duke
parents:
diff changeset
379 //
a61af66fc99e Initial load
duke
parents:
diff changeset
380
a61af66fc99e Initial load
duke
parents:
diff changeset
381 //
a61af66fc99e Initial load
duke
parents:
diff changeset
382 // NOTE: LF_OEM accessors elided because we will not need to parse
a61af66fc99e Initial load
duke
parents:
diff changeset
383 // vendor-specific debug information (yet). (FIXME)
a61af66fc99e Initial load
duke
parents:
diff changeset
384 //
a61af66fc99e Initial load
duke
parents:
diff changeset
385
a61af66fc99e Initial load
duke
parents:
diff changeset
386 //
a61af66fc99e Initial load
duke
parents:
diff changeset
387 // NOTE: LF_TYPESERVER accessors elided because we will not be using
a61af66fc99e Initial load
duke
parents:
diff changeset
388 // this library in conjunction with a program database. (FIXME)
a61af66fc99e Initial load
duke
parents:
diff changeset
389 //
a61af66fc99e Initial load
duke
parents:
diff changeset
390
a61af66fc99e Initial load
duke
parents:
diff changeset
391 //
a61af66fc99e Initial load
duke
parents:
diff changeset
392 // Type Records Referenced from Type Records
a61af66fc99e Initial load
duke
parents:
diff changeset
393 //
a61af66fc99e Initial load
duke
parents:
diff changeset
394
a61af66fc99e Initial load
duke
parents:
diff changeset
395 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
396 // LF_SKIP accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
397 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
398
a61af66fc99e Initial load
duke
parents:
diff changeset
399 /** In processing $$TYPES, the index counter is advanced to index
a61af66fc99e Initial load
duke
parents:
diff changeset
400 count, skipping all intermediate indices. This is the next valid
a61af66fc99e Initial load
duke
parents:
diff changeset
401 index. */
a61af66fc99e Initial load
duke
parents:
diff changeset
402 public int getSkipIndex();
a61af66fc99e Initial load
duke
parents:
diff changeset
403
a61af66fc99e Initial load
duke
parents:
diff changeset
404 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
405 // LF_ARGLIST accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
406 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
407
a61af66fc99e Initial load
duke
parents:
diff changeset
408 /** Count of number of indices in list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
409 public int getArgListCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
410
a61af66fc99e Initial load
duke
parents:
diff changeset
411 /** List of type indices (0..getArgListCount() - 1) for describing
a61af66fc99e Initial load
duke
parents:
diff changeset
412 the formal parameters to a function or method. */
a61af66fc99e Initial load
duke
parents:
diff changeset
413 public int getArgListType(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
414
a61af66fc99e Initial load
duke
parents:
diff changeset
415 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
416 // LF_DEFARG accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
417 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
418
a61af66fc99e Initial load
duke
parents:
diff changeset
419 /** Type index of resulting expression. */
a61af66fc99e Initial load
duke
parents:
diff changeset
420 public int getDefaultArgType();
a61af66fc99e Initial load
duke
parents:
diff changeset
421
a61af66fc99e Initial load
duke
parents:
diff changeset
422 /** Length-prefixed string of supplied default expression. */
a61af66fc99e Initial load
duke
parents:
diff changeset
423 public String getDefaultArgExpression();
a61af66fc99e Initial load
duke
parents:
diff changeset
424
a61af66fc99e Initial load
duke
parents:
diff changeset
425 //
a61af66fc99e Initial load
duke
parents:
diff changeset
426 // Field list accessors (LF_FIELDLIST)
a61af66fc99e Initial load
duke
parents:
diff changeset
427 //
a61af66fc99e Initial load
duke
parents:
diff changeset
428 // No explicit accessors for the field list. The field list is
a61af66fc99e Initial load
duke
parents:
diff changeset
429 // structured similarly to most type strings; it is a series of
a61af66fc99e Initial load
duke
parents:
diff changeset
430 // leaves. LF_INDEX leaves are used to split the field list if it
a61af66fc99e Initial load
duke
parents:
diff changeset
431 // gets long enough that it will cross a 48K boundary; LF_PAD leaves
a61af66fc99e Initial load
duke
parents:
diff changeset
432 // are used to enforce proper alignment. Both of these leaves, and
a61af66fc99e Initial load
duke
parents:
diff changeset
433 // their lengths, are understood by this iterator, and LF_INDEX
a61af66fc99e Initial load
duke
parents:
diff changeset
434 // leaves have an accessor for reaching the target type record.
a61af66fc99e Initial load
duke
parents:
diff changeset
435 //
a61af66fc99e Initial load
duke
parents:
diff changeset
436
a61af66fc99e Initial load
duke
parents:
diff changeset
437 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
438 // LF_DERIVED accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
439 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
440
a61af66fc99e Initial load
duke
parents:
diff changeset
441 // This type record specifies all of the classes that are directly
a61af66fc99e Initial load
duke
parents:
diff changeset
442 // derived from the class that references this type record.
a61af66fc99e Initial load
duke
parents:
diff changeset
443
a61af66fc99e Initial load
duke
parents:
diff changeset
444 /** Number of types in the list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
445 public int getDerivedCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
446
a61af66fc99e Initial load
duke
parents:
diff changeset
447 /** Fetch <i>i</i>th derived type (0..getDerivedCount() - 1). */
a61af66fc99e Initial load
duke
parents:
diff changeset
448 public int getDerivedType(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
449
a61af66fc99e Initial load
duke
parents:
diff changeset
450 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
451 // LF_BITFIELD accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
452 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
453
a61af66fc99e Initial load
duke
parents:
diff changeset
454 // Bit fields are represented by an entry in the field list that
a61af66fc99e Initial load
duke
parents:
diff changeset
455 // indexes a bit field type definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
456
a61af66fc99e Initial load
duke
parents:
diff changeset
457 /** Type index of the field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
458 public int getBitfieldFieldType();
a61af66fc99e Initial load
duke
parents:
diff changeset
459
a61af66fc99e Initial load
duke
parents:
diff changeset
460 /** The length in bits of the object. */
a61af66fc99e Initial load
duke
parents:
diff changeset
461 public byte getBitfieldLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
462
a61af66fc99e Initial load
duke
parents:
diff changeset
463 /** Starting position (from bit 0) of the object in the word. */
a61af66fc99e Initial load
duke
parents:
diff changeset
464 public byte getBitfieldPosition();
a61af66fc99e Initial load
duke
parents:
diff changeset
465
a61af66fc99e Initial load
duke
parents:
diff changeset
466 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
467 // LF_MLIST accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
468 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
469
a61af66fc99e Initial load
duke
parents:
diff changeset
470 // This record is typically used to describe overloaded methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
471 // though it can also be used (inefficiently) to describe a single
a61af66fc99e Initial load
duke
parents:
diff changeset
472 // method. It is referenced from the LF_METHOD record. The "count"
a61af66fc99e Initial load
duke
parents:
diff changeset
473 // is not really contained in this record; it is contained within
a61af66fc99e Initial load
duke
parents:
diff changeset
474 // the LF_METHOD record which points to this one. However, it seems
a61af66fc99e Initial load
duke
parents:
diff changeset
475 // it can be inferred from the length of this type string as the
a61af66fc99e Initial load
duke
parents:
diff changeset
476 // only repeated portion of the record is the type of each
a61af66fc99e Initial load
duke
parents:
diff changeset
477 // overloaded variant.
a61af66fc99e Initial load
duke
parents:
diff changeset
478 //
a61af66fc99e Initial load
duke
parents:
diff changeset
479 // Once a method has been found in this list, its symbol is found by
a61af66fc99e Initial load
duke
parents:
diff changeset
480 // qualifying the method name with its class (T::name) and then
a61af66fc99e Initial load
duke
parents:
diff changeset
481 // searching the symbol table for a symbol by that name with the
a61af66fc99e Initial load
duke
parents:
diff changeset
482 // correct type index. Note that the number of repeats is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
483 // by the subleaf of the field list that references this LF_MLIST
a61af66fc99e Initial load
duke
parents:
diff changeset
484 // record.
a61af66fc99e Initial load
duke
parents:
diff changeset
485
a61af66fc99e Initial load
duke
parents:
diff changeset
486 /** Attribute of the member function; see {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
487 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums} and {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
488 sun.jvm.hotspot.debugger.win32.coff.DebugVC50MemberAttributes}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
489 public short getMListAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
490
a61af66fc99e Initial load
duke
parents:
diff changeset
491 /** Number of types corresponding to this overloaded method. FIXME:
a61af66fc99e Initial load
duke
parents:
diff changeset
492 must verify this can be inferred solely from this record's
a61af66fc99e Initial load
duke
parents:
diff changeset
493 length. */
a61af66fc99e Initial load
duke
parents:
diff changeset
494 public int getMListLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
495
a61af66fc99e Initial load
duke
parents:
diff changeset
496 /** Type index of the procedure record for the <i>i</i>th occurrence
a61af66fc99e Initial load
duke
parents:
diff changeset
497 of the function (0..getMListLength() - 1). */
a61af66fc99e Initial load
duke
parents:
diff changeset
498 public int getMListType(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
499
a61af66fc99e Initial load
duke
parents:
diff changeset
500 /** Convenience routine indicating whether this member function is
a61af66fc99e Initial load
duke
parents:
diff changeset
501 introducing virtual. */
a61af66fc99e Initial load
duke
parents:
diff changeset
502 public boolean isMListIntroducingVirtual();
a61af66fc99e Initial load
duke
parents:
diff changeset
503
a61af66fc99e Initial load
duke
parents:
diff changeset
504 /** Present only when property attribute is introducing virtual
a61af66fc99e Initial load
duke
parents:
diff changeset
505 (optional). Offset in vtable of the class which contains the
a61af66fc99e Initial load
duke
parents:
diff changeset
506 pointer to the function. (FIXME: is this on a per-method or
a61af66fc99e Initial load
duke
parents:
diff changeset
507 per-method list basis? If the latter, will have to provide an
a61af66fc99e Initial load
duke
parents:
diff changeset
508 iterator for this record.) */
a61af66fc99e Initial load
duke
parents:
diff changeset
509 public int getMListVtabOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
510
a61af66fc99e Initial load
duke
parents:
diff changeset
511 //
a61af66fc99e Initial load
duke
parents:
diff changeset
512 // NOTE: LF_DIMCONU, LF_DIMCONLU, LF_DIMVARU, and LF_DIMVARLU
a61af66fc99e Initial load
duke
parents:
diff changeset
513 // accessors elided as these are very likely Fortran-specific
a61af66fc99e Initial load
duke
parents:
diff changeset
514 // (FIXME?)
a61af66fc99e Initial load
duke
parents:
diff changeset
515 //
a61af66fc99e Initial load
duke
parents:
diff changeset
516
a61af66fc99e Initial load
duke
parents:
diff changeset
517 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
518 // LF_REFSYM accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
519 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
520
a61af66fc99e Initial load
duke
parents:
diff changeset
521 // This record is used to describe a symbol that is referenced by a
a61af66fc99e Initial load
duke
parents:
diff changeset
522 // type record. The record is defined because type records cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
523 // reference symbols or locations in the $$SYMBOLS table because
a61af66fc99e Initial load
duke
parents:
diff changeset
524 // global symbol compaction will move symbols.
a61af66fc99e Initial load
duke
parents:
diff changeset
525
a61af66fc99e Initial load
duke
parents:
diff changeset
526 /** Create a new SymbolIterator pointing at the copy of the symbol
a61af66fc99e Initial load
duke
parents:
diff changeset
527 this record contains. */
a61af66fc99e Initial load
duke
parents:
diff changeset
528 public DebugVC50SymbolIterator getRefSym();
a61af66fc99e Initial load
duke
parents:
diff changeset
529
a61af66fc99e Initial load
duke
parents:
diff changeset
530 //
a61af66fc99e Initial load
duke
parents:
diff changeset
531 // Subfields of complex lists
a61af66fc99e Initial load
duke
parents:
diff changeset
532 //
a61af66fc99e Initial load
duke
parents:
diff changeset
533
a61af66fc99e Initial load
duke
parents:
diff changeset
534 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
535 // LF_BCLASS accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
536 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
537
a61af66fc99e Initial load
duke
parents:
diff changeset
538 // This leaf specifies a real base class. If a class inherits real
a61af66fc99e Initial load
duke
parents:
diff changeset
539 // base classes, the corresponding REAL Base Class records will
a61af66fc99e Initial load
duke
parents:
diff changeset
540 // precede all other member records in the field list of that
a61af66fc99e Initial load
duke
parents:
diff changeset
541 // class. Base class records are emitted in left to right
a61af66fc99e Initial load
duke
parents:
diff changeset
542 // declaration order for real bases.
a61af66fc99e Initial load
duke
parents:
diff changeset
543
a61af66fc99e Initial load
duke
parents:
diff changeset
544 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
545 public short getBClassAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
546
a61af66fc99e Initial load
duke
parents:
diff changeset
547 /** Index to type record of the class. The class name can be
a61af66fc99e Initial load
duke
parents:
diff changeset
548 obtained from this record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
549 public int getBClassType();
a61af66fc99e Initial load
duke
parents:
diff changeset
550
a61af66fc99e Initial load
duke
parents:
diff changeset
551 /** Offset of subobject that represents the base class within the
a61af66fc99e Initial load
duke
parents:
diff changeset
552 structure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
553 public int getBClassOffset() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
554
a61af66fc99e Initial load
duke
parents:
diff changeset
555 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
556 // LF_VBCLASS accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
557 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
558
a61af66fc99e Initial load
duke
parents:
diff changeset
559 // This leaf specifies a directly inherited virtual base class. If a
a61af66fc99e Initial load
duke
parents:
diff changeset
560 // class directly inherits virtual base classes, the corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
561 // Direct Virtual BaseClass records will follow all Real Base Class
a61af66fc99e Initial load
duke
parents:
diff changeset
562 // member records and precede all other member records in the field
a61af66fc99e Initial load
duke
parents:
diff changeset
563 // list of that class. Direct Virtual Base class records are emitted
a61af66fc99e Initial load
duke
parents:
diff changeset
564 // in bottommost left-to-right inheritance order for directly
a61af66fc99e Initial load
duke
parents:
diff changeset
565 // inherited virtual bases.
a61af66fc99e Initial load
duke
parents:
diff changeset
566
a61af66fc99e Initial load
duke
parents:
diff changeset
567 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
568 public short getVBClassAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
569
a61af66fc99e Initial load
duke
parents:
diff changeset
570 /** Index to type record of the direct or indirect virtual base
a61af66fc99e Initial load
duke
parents:
diff changeset
571 class. The class name can be obtained from this record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
572 public int getVBClassBaseClassType();
a61af66fc99e Initial load
duke
parents:
diff changeset
573
a61af66fc99e Initial load
duke
parents:
diff changeset
574 /** Type index of the virtual base pointer for this base. */
a61af66fc99e Initial load
duke
parents:
diff changeset
575 public int getVBClassVirtualBaseClassType();
a61af66fc99e Initial load
duke
parents:
diff changeset
576
a61af66fc99e Initial load
duke
parents:
diff changeset
577 /** Numeric leaf specifying the offset of the virtual base pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
578 from the address point of the class for this virtual base. */
a61af66fc99e Initial load
duke
parents:
diff changeset
579 public int getVBClassVBPOff() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
580
a61af66fc99e Initial load
duke
parents:
diff changeset
581 /** Numeric leaf specifying the index into the virtual base
a61af66fc99e Initial load
duke
parents:
diff changeset
582 displacement table of the entry that contains the displacement
a61af66fc99e Initial load
duke
parents:
diff changeset
583 of the virtual base. The displacement is relative to the address
a61af66fc99e Initial load
duke
parents:
diff changeset
584 point of the class plus vbpoff. */
a61af66fc99e Initial load
duke
parents:
diff changeset
585 public int getVBClassVBOff() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
586
a61af66fc99e Initial load
duke
parents:
diff changeset
587 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
588 // LF_IVBCLASS accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
589 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
590
a61af66fc99e Initial load
duke
parents:
diff changeset
591 // This leaf specifies indirectly inherited virtual base class. If a
a61af66fc99e Initial load
duke
parents:
diff changeset
592 // class indirectly inherits virtual base classes, the corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
593 // Indirect Virtual Base Class records will follow all Real Base
a61af66fc99e Initial load
duke
parents:
diff changeset
594 // Class and Direct Virtual Base Class member records and precede
a61af66fc99e Initial load
duke
parents:
diff changeset
595 // all other member records in the field list of that class. Direct
a61af66fc99e Initial load
duke
parents:
diff changeset
596 // Virtual Base class records are emitted in bottommost
a61af66fc99e Initial load
duke
parents:
diff changeset
597 // left-to-right inheritance order for virtual bases.
a61af66fc99e Initial load
duke
parents:
diff changeset
598
a61af66fc99e Initial load
duke
parents:
diff changeset
599 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
600 public short getIVBClassAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
601
a61af66fc99e Initial load
duke
parents:
diff changeset
602 /** Index to type record of the direct or indirect virtual base
a61af66fc99e Initial load
duke
parents:
diff changeset
603 class. The class name can be obtained from this record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
604 public int getIVBClassBType();
a61af66fc99e Initial load
duke
parents:
diff changeset
605
a61af66fc99e Initial load
duke
parents:
diff changeset
606 /** Type index of the virtual base pointer for this base. */
a61af66fc99e Initial load
duke
parents:
diff changeset
607 public int getIVBClassVBPType();
a61af66fc99e Initial load
duke
parents:
diff changeset
608
a61af66fc99e Initial load
duke
parents:
diff changeset
609 /** Numeric leaf specifying the offset of the virtual base pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
610 from the address point of the class for this virtual base. */
a61af66fc99e Initial load
duke
parents:
diff changeset
611 public int getIVBClassVBPOff() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
612
a61af66fc99e Initial load
duke
parents:
diff changeset
613 /** Numeric leaf specifying the index into the virtual base
a61af66fc99e Initial load
duke
parents:
diff changeset
614 displacement table of the entry that contains the displacement
a61af66fc99e Initial load
duke
parents:
diff changeset
615 of the virtual base. The displacement is relative to the address
a61af66fc99e Initial load
duke
parents:
diff changeset
616 point of the class plus vbpoff. */
a61af66fc99e Initial load
duke
parents:
diff changeset
617 public int getIVBClassVBOff() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
618
a61af66fc99e Initial load
duke
parents:
diff changeset
619 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
620 // LF_ENUMERATE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
621 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
622
a61af66fc99e Initial load
duke
parents:
diff changeset
623 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
624 public short getEnumerateAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
625
a61af66fc99e Initial load
duke
parents:
diff changeset
626 /** Numeric leaf specifying the value of enumerate. */
a61af66fc99e Initial load
duke
parents:
diff changeset
627 public long getEnumerateValue() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
628
a61af66fc99e Initial load
duke
parents:
diff changeset
629 /** Length-prefixed name of the member field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
630 public String getEnumerateName();
a61af66fc99e Initial load
duke
parents:
diff changeset
631
a61af66fc99e Initial load
duke
parents:
diff changeset
632 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
633 // LF_FRIENDFCN accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
634 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
635
a61af66fc99e Initial load
duke
parents:
diff changeset
636 /** Index to type record of the friend function. */
a61af66fc99e Initial load
duke
parents:
diff changeset
637 public int getFriendFcnType();
a61af66fc99e Initial load
duke
parents:
diff changeset
638
a61af66fc99e Initial load
duke
parents:
diff changeset
639 /** Length prefixed name of friend function. */
a61af66fc99e Initial load
duke
parents:
diff changeset
640 public String getFriendFcnName();
a61af66fc99e Initial load
duke
parents:
diff changeset
641
a61af66fc99e Initial load
duke
parents:
diff changeset
642 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
643 // LF_INDEX accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
644 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
645
a61af66fc99e Initial load
duke
parents:
diff changeset
646 /** Type index. This field is emitted by the compiler when a complex
a61af66fc99e Initial load
duke
parents:
diff changeset
647 list needs to be split during writing. */
a61af66fc99e Initial load
duke
parents:
diff changeset
648 public int getIndexValue();
a61af66fc99e Initial load
duke
parents:
diff changeset
649
a61af66fc99e Initial load
duke
parents:
diff changeset
650 /** Create a new type iterator starting at the above index. */
a61af66fc99e Initial load
duke
parents:
diff changeset
651 public DebugVC50TypeIterator getIndexIterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
652
a61af66fc99e Initial load
duke
parents:
diff changeset
653 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
654 // LF_MEMBER accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
655 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
656
a61af66fc99e Initial load
duke
parents:
diff changeset
657 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
658 public short getMemberAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
659
a61af66fc99e Initial load
duke
parents:
diff changeset
660 /** Index to type record for field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
661 public int getMemberType();
a61af66fc99e Initial load
duke
parents:
diff changeset
662
a61af66fc99e Initial load
duke
parents:
diff changeset
663 /** Numeric leaf specifying the offset of field in the structure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
664 public int getMemberOffset() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
665
a61af66fc99e Initial load
duke
parents:
diff changeset
666 /** Length-prefixed name of the member field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
667 public String getMemberName();
a61af66fc99e Initial load
duke
parents:
diff changeset
668
a61af66fc99e Initial load
duke
parents:
diff changeset
669 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
670 // LF_STMEMBER accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
671 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
672
a61af66fc99e Initial load
duke
parents:
diff changeset
673 // This leaf specifies a static data member of a class. Once a
a61af66fc99e Initial load
duke
parents:
diff changeset
674 // static data member has been found in this list, its symbol is
a61af66fc99e Initial load
duke
parents:
diff changeset
675 // found by qualifying the name with its class (T::name) and then
a61af66fc99e Initial load
duke
parents:
diff changeset
676 // searching the symbol table for a symbol by that name with the
a61af66fc99e Initial load
duke
parents:
diff changeset
677 // correct type index.
a61af66fc99e Initial load
duke
parents:
diff changeset
678
a61af66fc99e Initial load
duke
parents:
diff changeset
679 /** Member attribute bit field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
680 public short getStaticAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
681
a61af66fc99e Initial load
duke
parents:
diff changeset
682 /** Index to type record for field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
683 public int getStaticType();
a61af66fc99e Initial load
duke
parents:
diff changeset
684
a61af66fc99e Initial load
duke
parents:
diff changeset
685 /** Length-prefixed name of the member field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
686 public String getStaticName();
a61af66fc99e Initial load
duke
parents:
diff changeset
687
a61af66fc99e Initial load
duke
parents:
diff changeset
688 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
689 // LF_METHOD accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
690 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
691
a61af66fc99e Initial load
duke
parents:
diff changeset
692 // This leaf specifies the overloaded member functions of a class.
a61af66fc99e Initial load
duke
parents:
diff changeset
693 // This type record can also be used to specify a non-overloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
694 // method but is inefficient. The LF_ONEMETHOD record should be used
a61af66fc99e Initial load
duke
parents:
diff changeset
695 // for non-overloaded methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
696
a61af66fc99e Initial load
duke
parents:
diff changeset
697 /** Number of occurrences of function within the class. If the
a61af66fc99e Initial load
duke
parents:
diff changeset
698 function is overloaded then there will be multiple entries in
a61af66fc99e Initial load
duke
parents:
diff changeset
699 the method list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
700 public short getMethodCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
701
a61af66fc99e Initial load
duke
parents:
diff changeset
702 /** Type index of method list. */
a61af66fc99e Initial load
duke
parents:
diff changeset
703 public int getMethodList();
a61af66fc99e Initial load
duke
parents:
diff changeset
704
a61af66fc99e Initial load
duke
parents:
diff changeset
705 /** Length-prefixed name of method. */
a61af66fc99e Initial load
duke
parents:
diff changeset
706 public String getMethodName();
a61af66fc99e Initial load
duke
parents:
diff changeset
707
a61af66fc99e Initial load
duke
parents:
diff changeset
708 /////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
709 // LF_NESTEDTYPE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
710 /////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
711
a61af66fc99e Initial load
duke
parents:
diff changeset
712 /** Type index of nested type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
713 public int getNestedType();
a61af66fc99e Initial load
duke
parents:
diff changeset
714
a61af66fc99e Initial load
duke
parents:
diff changeset
715 /** Length-prefixed name of type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
716 public String getNestedName();
a61af66fc99e Initial load
duke
parents:
diff changeset
717
a61af66fc99e Initial load
duke
parents:
diff changeset
718 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
719 // LF_VFUNCTAB accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
720 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
721
a61af66fc99e Initial load
duke
parents:
diff changeset
722 // This leaf specifies virtual table pointers within the class. It
a61af66fc99e Initial load
duke
parents:
diff changeset
723 // is a requirement that this record be emitted in the field list
a61af66fc99e Initial load
duke
parents:
diff changeset
724 // before any virtual functions are emitted to the field list.
a61af66fc99e Initial load
duke
parents:
diff changeset
725
a61af66fc99e Initial load
duke
parents:
diff changeset
726 /** Index to the pointer record describing the pointer. The pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
727 will in turn have a LF_VTSHAPE type record as the underlying
a61af66fc99e Initial load
duke
parents:
diff changeset
728 type. Note that the offset of the virtual function table pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
729 from the address point of the class is always zero. */
a61af66fc99e Initial load
duke
parents:
diff changeset
730 public int getVFuncTabType();
a61af66fc99e Initial load
duke
parents:
diff changeset
731
a61af66fc99e Initial load
duke
parents:
diff changeset
732 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
733 // LF_FRIENDCLS accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
734 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
735
a61af66fc99e Initial load
duke
parents:
diff changeset
736 /** Index to type record of the friend class. The name of the class
a61af66fc99e Initial load
duke
parents:
diff changeset
737 can be obtained from the referenced record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
738 public int getFriendClsType();
a61af66fc99e Initial load
duke
parents:
diff changeset
739
a61af66fc99e Initial load
duke
parents:
diff changeset
740 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
741 // LF_ONEMETHOD accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
742 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
743
a61af66fc99e Initial load
duke
parents:
diff changeset
744 /** Method attribute; see {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
745 sun.jvm.hotspot.debugger.win32.coff.DebugVC50TypeEnums} and
a61af66fc99e Initial load
duke
parents:
diff changeset
746 {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
747 sun.jvm.hotspot.debugger.win32.coff.DebugVC50MemberAttributes}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
748 public short getOneMethodAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
749
a61af66fc99e Initial load
duke
parents:
diff changeset
750 /** Type index of method. */
a61af66fc99e Initial load
duke
parents:
diff changeset
751 public int getOneMethodType();
a61af66fc99e Initial load
duke
parents:
diff changeset
752
a61af66fc99e Initial load
duke
parents:
diff changeset
753 /** Convenience routine indicating whether this method is
a61af66fc99e Initial load
duke
parents:
diff changeset
754 introducing virtual. */
a61af66fc99e Initial load
duke
parents:
diff changeset
755 public boolean isOneMethodIntroducingVirtual();
a61af66fc99e Initial load
duke
parents:
diff changeset
756
a61af66fc99e Initial load
duke
parents:
diff changeset
757 /** Offset in virtual function table if introducing virtual method.
a61af66fc99e Initial load
duke
parents:
diff changeset
758 If the method is not an introducing virtual, then this field is
a61af66fc99e Initial load
duke
parents:
diff changeset
759 not present. */
a61af66fc99e Initial load
duke
parents:
diff changeset
760 public int getOneMethodVBaseOff();
a61af66fc99e Initial load
duke
parents:
diff changeset
761
a61af66fc99e Initial load
duke
parents:
diff changeset
762 /** Length prefixed name of method. */
a61af66fc99e Initial load
duke
parents:
diff changeset
763 public String getOneMethodName();
a61af66fc99e Initial load
duke
parents:
diff changeset
764
a61af66fc99e Initial load
duke
parents:
diff changeset
765 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
766 // LF_VFUNCOFF accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
767 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
768
a61af66fc99e Initial load
duke
parents:
diff changeset
769 // This record is used to specify a virtual function table pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
770 // at a non-zero offset relative to the address point of a class.
a61af66fc99e Initial load
duke
parents:
diff changeset
771
a61af66fc99e Initial load
duke
parents:
diff changeset
772 /** Type index of virtual function table pointer. */
a61af66fc99e Initial load
duke
parents:
diff changeset
773 public int getVFuncOffType();
a61af66fc99e Initial load
duke
parents:
diff changeset
774
a61af66fc99e Initial load
duke
parents:
diff changeset
775 /** Offset of virtual function table pointer relative to address
a61af66fc99e Initial load
duke
parents:
diff changeset
776 point of class. */
a61af66fc99e Initial load
duke
parents:
diff changeset
777 public int getVFuncOffOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
778
a61af66fc99e Initial load
duke
parents:
diff changeset
779 ///////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
780 // LF_NESTEDTYPEEX accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
781 ///////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
782
a61af66fc99e Initial load
duke
parents:
diff changeset
783 // This leaf specifies nested type definition with classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
784 // structures, unions, or enums and includes the protection
a61af66fc99e Initial load
duke
parents:
diff changeset
785 // attributes that are missing in LF_NESTEDTYPE.
a61af66fc99e Initial load
duke
parents:
diff changeset
786
a61af66fc99e Initial load
duke
parents:
diff changeset
787 /** Nested type attribute (protection fields are valid). */
a61af66fc99e Initial load
duke
parents:
diff changeset
788 public short getNestedExAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
789
a61af66fc99e Initial load
duke
parents:
diff changeset
790 /** Type index of nested type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
791 public int getNestedExType();
a61af66fc99e Initial load
duke
parents:
diff changeset
792
a61af66fc99e Initial load
duke
parents:
diff changeset
793 /** Length-prefixed name of type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
794 public String getNestedExName();
a61af66fc99e Initial load
duke
parents:
diff changeset
795
a61af66fc99e Initial load
duke
parents:
diff changeset
796 ///////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
797 // LF_MEMBERMODIFY accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
798 ///////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
799
a61af66fc99e Initial load
duke
parents:
diff changeset
800 /** New protection attributes. */
a61af66fc99e Initial load
duke
parents:
diff changeset
801 public short getMemberModifyAttribute();
a61af66fc99e Initial load
duke
parents:
diff changeset
802
a61af66fc99e Initial load
duke
parents:
diff changeset
803 /** Type index of base class that introduced the member. */
a61af66fc99e Initial load
duke
parents:
diff changeset
804 public int getMemberModifyType();
a61af66fc99e Initial load
duke
parents:
diff changeset
805
a61af66fc99e Initial load
duke
parents:
diff changeset
806 /** Length-prefixed name of member. */
a61af66fc99e Initial load
duke
parents:
diff changeset
807 public String getMemberModifyName();
a61af66fc99e Initial load
duke
parents:
diff changeset
808
a61af66fc99e Initial load
duke
parents:
diff changeset
809 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
810 // Numeric Leaf accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
811 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
812
a61af66fc99e Initial load
duke
parents:
diff changeset
813 /** Fetch the two-byte type (or data, for short integer numeric
a61af66fc99e Initial load
duke
parents:
diff changeset
814 leaves) of the numeric leaf at the given offset, in bytes, from
a61af66fc99e Initial load
duke
parents:
diff changeset
815 the start of the current leaf. */
a61af66fc99e Initial load
duke
parents:
diff changeset
816 public short getNumericTypeAt(int byteOffset);
a61af66fc99e Initial load
duke
parents:
diff changeset
817
a61af66fc99e Initial load
duke
parents:
diff changeset
818 /** The size in bytes of the numeric leaf at the given offset, in
a61af66fc99e Initial load
duke
parents:
diff changeset
819 bytes, from the start of the current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
820
a61af66fc99e Initial load
duke
parents:
diff changeset
821 @throw DebugVC50WrongNumericTypeException if there is no numeric
a61af66fc99e Initial load
duke
parents:
diff changeset
822 leaf at the specified byte offset. */
a61af66fc99e Initial load
duke
parents:
diff changeset
823 public int getNumericLengthAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
824 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
825
a61af66fc99e Initial load
duke
parents:
diff changeset
826 /** Fetch the value of the integer numeric leaf at the given offset,
a61af66fc99e Initial load
duke
parents:
diff changeset
827 in bytes, from the start of the current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
828
a61af66fc99e Initial load
duke
parents:
diff changeset
829 @throw DebugVC50WrongNumericTypeException if the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
830 numeric leaf is not of integer type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
831 public int getNumericIntAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
832 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
833
a61af66fc99e Initial load
duke
parents:
diff changeset
834 /** Fetch the value of the long or integer numeric leaf at the given
a61af66fc99e Initial load
duke
parents:
diff changeset
835 offset, in bytes, from the start of the current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
836
a61af66fc99e Initial load
duke
parents:
diff changeset
837 @throw DebugVC50WrongNumericTypeException if the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
838 numeric leaf is not of long or integer type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
839 public long getNumericLongAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
840 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
841
a61af66fc99e Initial load
duke
parents:
diff changeset
842 /** Fetch the value of the single-precision floating-point numeric
a61af66fc99e Initial load
duke
parents:
diff changeset
843 leaf at the given offset, in bytes, from the start of the
a61af66fc99e Initial load
duke
parents:
diff changeset
844 current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
845
a61af66fc99e Initial load
duke
parents:
diff changeset
846 @throw DebugVC50WrongNumericTypeException if the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
847 numeric leaf is not of 32-bit float type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
848 public float getNumericFloatAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
849 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
850
a61af66fc99e Initial load
duke
parents:
diff changeset
851 /** Fetch the value of the double-precision floating-point numeric
a61af66fc99e Initial load
duke
parents:
diff changeset
852 leaf at the given offset, in bytes, from the start of the
a61af66fc99e Initial load
duke
parents:
diff changeset
853 current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
854
a61af66fc99e Initial load
duke
parents:
diff changeset
855 @throw DebugVC50WrongNumericTypeException if the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
856 numeric leaf is not of 64-bit float type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
857 public double getNumericDoubleAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
858 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
859
a61af66fc99e Initial load
duke
parents:
diff changeset
860 /** Fetch the raw bytes, including LF_ prefix (if any), of the
a61af66fc99e Initial load
duke
parents:
diff changeset
861 numeric leaf at the given offset, in bytes, from the start of
a61af66fc99e Initial load
duke
parents:
diff changeset
862 the current leaf.
a61af66fc99e Initial load
duke
parents:
diff changeset
863
a61af66fc99e Initial load
duke
parents:
diff changeset
864 @throw DebugVC50WrongNumericTypeException if there is no numeric
a61af66fc99e Initial load
duke
parents:
diff changeset
865 leaf at the specified byte offset. */
a61af66fc99e Initial load
duke
parents:
diff changeset
866 public byte[] getNumericDataAt(int byteOffset)
a61af66fc99e Initial load
duke
parents:
diff changeset
867 throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
868 }