| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.dx.rop.type; |
| |
| import com.android.dx.util.ToHuman; |
| |
| /** |
| * Object which has an associated type, possibly itself. |
| */ |
| public interface TypeBearer |
| extends ToHuman { |
| /** |
| * Gets the type associated with this instance. |
| * |
| * @return {@code non-null;} the type |
| */ |
| public Type getType(); |
| |
| /** |
| * Gets the frame type corresponding to this type. This method returns |
| * {@code this}, except if {@link Type#isIntlike} on the underlying |
| * type returns {@code true} but the underlying type is not in |
| * fact {@link Type#INT}, in which case this method returns an instance |
| * whose underlying type <i>is</i> {@code INT}. |
| * |
| * @return {@code non-null;} the frame type for this instance |
| */ |
| public TypeBearer getFrameType(); |
| |
| /** |
| * Gets the basic type corresponding to this instance. |
| * |
| * @return the basic type; one of the {@code BT_*} constants |
| * defined by {@link Type} |
| */ |
| public int getBasicType(); |
| |
| /** |
| * Gets the basic type corresponding to this instance's frame type. This |
| * is equivalent to {@code getFrameType().getBasicType()}, and |
| * is the same as calling {@code getFrameType()} unless this |
| * instance is an int-like type, in which case this method returns |
| * {@code BT_INT}. |
| * |
| * @see #getBasicType |
| * @see #getFrameType |
| * |
| * @return the basic frame type; one of the {@code BT_*} constants |
| * defined by {@link Type} |
| */ |
| public int getBasicFrameType(); |
| |
| /** |
| * Returns whether this instance represents a constant value. |
| * |
| * @return {@code true} if this instance represents a constant value |
| * and {@code false} if not |
| */ |
| public boolean isConstant(); |
| } |