12bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/*
22bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Copyright (C) 2011 The Android Open Source Project
32bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
42bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
52bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * you may not use this file except in compliance with the License.
62bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * You may obtain a copy of the License at
72bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
82bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
92bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Unless required by applicable law or agreed to in writing, software
112bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
122bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * See the License for the specific language governing permissions and
142bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * limitations under the License.
152bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */
162bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
172bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpackage com.android.dex;
182bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
192bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpublic final class SizeOf {
202bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    private SizeOf() {}
212bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
222bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int UBYTE = 1;
232bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int USHORT = 2;
242bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int UINT = 4;
252bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
262bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int SIGNATURE = UBYTE * 20;
272bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
282bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
292bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * magic ubyte[8]
302bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * checksum uint
312bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * signature ubyte[20]
322bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * file_size uint
332bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * header_size uint
342bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * endian_tag uint
352bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * link_size uint
362bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * link_off uint
372bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * map_off uint
382bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * string_ids_size uint
392bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * string_ids_off uint
402bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * type_ids_size uint
412bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * type_ids_off uint
422bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * proto_ids_size uint
432bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * proto_ids_off uint
442bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * field_ids_size uint
452bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * field_ids_off uint
462bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * method_ids_size uint
472bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * method_ids_off uint
482bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * class_defs_size uint
492bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * class_defs_off uint
502bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * data_size uint
512bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * data_off uint
522bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
532bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
542bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
552bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
562bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * string_data_off uint
572bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
582bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int STRING_ID_ITEM = UINT;
592bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
602bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
612bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * descriptor_idx uint
622bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
632bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int TYPE_ID_ITEM = UINT;
642bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
652bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
662bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * type_idx ushort
672bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
682bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int TYPE_ITEM = USHORT;
692bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
702bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
712bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * shorty_idx uint
722bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * return_type_idx uint
732bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * return_type_idx uint
742bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
752bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
762bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
772bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
782bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * class_idx ushort
792bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * type_idx/proto_idx ushort
802bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * name_idx uint
812bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
822bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
832bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
842bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
852bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * class_idx uint
862bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * access_flags uint
872bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * superclass_idx uint
882bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * interfaces_off uint
892bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * source_file_idx uint
902bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * annotations_off uint
912bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * class_data_off uint
922bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * static_values_off uint
932bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
942bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int CLASS_DEF_ITEM = 8 * UINT;
952bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
962bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    /**
972bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * type ushort
982bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * unused ushort
992bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * size uint
1002bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     * offset uint
1012bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson     */
1022bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
10300a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche
10400a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche    /**
10500a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche     * start_addr uint
10600a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche     * insn_count ushort
10700a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche     * handler_off ushort
10800a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche     */
10900a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche    public static final int TRY_ITEM = UINT + USHORT + USHORT;
1102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson}
111