/*
|
* Copyright (C) 2011 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.dex;
|
|
public final class SizeOf {
|
private SizeOf() {}
|
|
public static final int UBYTE = 1;
|
public static final int USHORT = 2;
|
public static final int UINT = 4;
|
|
public static final int SIGNATURE = UBYTE * 20;
|
|
/**
|
* magic ubyte[8]
|
* checksum uint
|
* signature ubyte[20]
|
* file_size uint
|
* header_size uint
|
* endian_tag uint
|
* link_size uint
|
* link_off uint
|
* map_off uint
|
* string_ids_size uint
|
* string_ids_off uint
|
* type_ids_size uint
|
* type_ids_off uint
|
* proto_ids_size uint
|
* proto_ids_off uint
|
* field_ids_size uint
|
* field_ids_off uint
|
* method_ids_size uint
|
* method_ids_off uint
|
* class_defs_size uint
|
* class_defs_off uint
|
* data_size uint
|
* data_off uint
|
*/
|
public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
|
|
/**
|
* string_data_off uint
|
*/
|
public static final int STRING_ID_ITEM = UINT;
|
|
/**
|
* descriptor_idx uint
|
*/
|
public static final int TYPE_ID_ITEM = UINT;
|
|
/**
|
* type_idx ushort
|
*/
|
public static final int TYPE_ITEM = USHORT;
|
|
/**
|
* shorty_idx uint
|
* return_type_idx uint
|
* return_type_idx uint
|
*/
|
public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
|
|
/**
|
* class_idx ushort
|
* type_idx/proto_idx ushort
|
* name_idx uint
|
*/
|
public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
|
|
/**
|
* class_idx uint
|
* access_flags uint
|
* superclass_idx uint
|
* interfaces_off uint
|
* source_file_idx uint
|
* annotations_off uint
|
* class_data_off uint
|
* static_values_off uint
|
*/
|
public static final int CLASS_DEF_ITEM = 8 * UINT;
|
|
/**
|
* type ushort
|
* unused ushort
|
* size uint
|
* offset uint
|
*/
|
public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
|
|
/**
|
* start_addr uint
|
* insn_count ushort
|
* handler_off ushort
|
*/
|
public static final int TRY_ITEM = UINT + USHORT + USHORT;
|
|
/**
|
* call_site_off uint
|
*/
|
public static final int CALL_SITE_ID_ITEM = UINT;
|
|
/**
|
* method_handle_type ushort
|
* unused ushort
|
* field_or_method_id ushort
|
* unused ushort
|
*/
|
public static final int METHOD_HANDLE_ITEM = USHORT + USHORT + USHORT + USHORT;
|
}
|