1/* 2 * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25package sun.jvm.hotspot.debugger.cdbg; 26 27import sun.jvm.hotspot.debugger.*; 28 29/** Models a C or C++ type. Symbols have an associated Type. */ 30 31public interface Type { 32 public String getName(); 33 /** Size of the type in bytes */ 34 public int getSize(); 35 36 public BitType asBit(); 37 public IntType asInt(); 38 public EnumType asEnum(); 39 public FloatType asFloat(); 40 public DoubleType asDouble(); 41 public PointerType asPointer(); 42 public ArrayType asArray(); 43 public RefType asRef(); 44 public CompoundType asCompound(); 45 public FunctionType asFunction(); 46 public MemberFunctionType asMemberFunction(); 47 public VoidType asVoid(); 48 49 public boolean isBit(); 50 public boolean isInt(); 51 public boolean isEnum(); 52 public boolean isFloat(); 53 public boolean isDouble(); 54 public boolean isPointer(); 55 public boolean isArray(); 56 public boolean isRef(); 57 public boolean isCompound(); 58 public boolean isFunction(); 59 public boolean isMemberFunction(); 60 public boolean isVoid(); 61 62 public boolean isConst(); 63 public boolean isVolatile(); 64 65 /** Visit an object of this type at the given address with the 66 specified visitor */ 67 public void iterateObject(Address a, ObjectVisitor v); 68 69 /** Alternate visitor which allows end user to specify the 70 FieldIdentifier associated with this type (typically for 71 visiting locals in a frame) */ 72 public void iterateObject(Address a, ObjectVisitor v, FieldIdentifier f); 73 74 /** Returns getName() unless a subclass can return something more 75 appropriate */ 76 public String toString(); 77 78 /* 79 // Kinds of types 80 81 // Primitive types 82 private static final int BIT; // Specialized integer type with bit offset and size 83 private static final int INT; // Integer type of any size and signedness 84 private static final int FLOAT; // Single-precision floating-point 85 private static final int DOUBLE; // Double-precision floating-point 86 87 // Pointer and related types 88 private static final int PTR; // Any pointer type 89 private static final int ARRAY; // Array type with known size 90 private static final int REF; // C++ references 91 92 // Compound types 93 private static final int COMPOUND; 94 95 // Function type 96 private static final int FUNC; 97 98 // Template types 99 private static final int TEMPLATE_CLASS; 100 private static final int TEMPLATE_STRUCT; 101 private static final int TEMPLATE_UNION; 102 private static final int TEMPLATE_FUNCTION; 103 */ 104} 105