diff options
Diffstat (limited to 'dx/src/com/android/dx/dex/file/Item.java')
-rw-r--r-- | dx/src/com/android/dx/dex/file/Item.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dx/src/com/android/dx/dex/file/Item.java b/dx/src/com/android/dx/dex/file/Item.java new file mode 100644 index 0000000..cf2b380 --- /dev/null +++ b/dx/src/com/android/dx/dex/file/Item.java @@ -0,0 +1,80 @@ +/* + * 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.dex.file; + +import com.android.dx.util.AnnotatedOutput; + +/** + * Base class for any structurally-significant and (potentially) + * repeated piece of a Dalvik file. + */ +public abstract class Item { + /** + * Constructs an instance. + */ + public Item() { + // This space intentionally left blank. + } + + /** + * Returns the item type for this instance. + * + * @return {@code non-null;} the item type + */ + public abstract ItemType itemType(); + + /** + * Returns the human name for the particular type of item this + * instance is. + * + * @return {@code non-null;} the name + */ + public final String typeName() { + return itemType().toHuman(); + } + + /** + * Gets the size of this instance when written, in bytes. + * + * @return {@code >= 0;} the write size + */ + public abstract int writeSize(); + + /** + * Populates a {@link DexFile} with items from within this instance. + * This will <i>not</i> add an item to the file for this instance itself + * (which should have been done by whatever refers to this instance). + * + * <p><b>Note:</b> Subclasses must override this to do something + * appropriate.</p> + * + * @param file {@code non-null;} the file to populate + */ + public abstract void addContents(DexFile file); + + /** + * Writes the representation of this instance to the given data section, + * using the given {@link DexFile} to look things up as needed. + * If this instance keeps track of its offset, then this method will + * note the written offset and will also throw an exception if this + * instance has already been written. + * + * @param file {@code non-null;} the file to use for reference + * @param out {@code non-null;} where to write to + */ + public abstract void writeTo(DexFile file, AnnotatedOutput out); +} |