1081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson/*
2081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * Copyright (C) 2011 The Android Open Source Project
3081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson *
4081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
5081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * you may not use this file except in compliance with the License.
6081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * You may obtain a copy of the License at
7081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson *
8081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
9081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson *
10081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * Unless required by applicable law or agreed to in writing, software
11081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
12081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * See the License for the specific language governing permissions and
14081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson * limitations under the License.
15081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson */
16081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
17081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilsonpackage com.android.dx.dex;
18081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
19081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilsonpublic final class SizeOf {
20081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    private SizeOf() {}
21081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
22081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int UBYTE = 1;
23081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int USHORT = 2;
24081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int UINT = 4;
25081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
26081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int SIGNATURE = UBYTE * 20;
27081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
28081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
29081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * magic ubyte[8]
30081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * checksum uint
31081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * signature ubyte[20]
32081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * file_size uint
33081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * header_size uint
34081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * endian_tag uint
35081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * link_size uint
36081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * link_off uint
37081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * map_off uint
38081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * string_ids_size uint
39081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * string_ids_off uint
40081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * type_ids_size uint
41081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * type_ids_off uint
42081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * proto_ids_size uint
43081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * proto_ids_off uint
44081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * field_ids_size uint
45081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * field_ids_off uint
46081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * method_ids_size uint
47081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * method_ids_off uint
48081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * class_defs_size uint
49081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * class_defs_off uint
50081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * data_size uint
51081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * data_off uint
52081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
53081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
54081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
55081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
56081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * string_data_off uint
57081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
58081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int STRING_ID_ITEM = UINT;
59081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
60081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
61081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * descriptor_idx uint
62081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
63081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int TYPE_ID_ITEM = UINT;
64081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
65081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
66081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * type_idx ushort
67081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
68081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int TYPE_ITEM = USHORT;
69081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
70081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
71081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * shorty_idx uint
72081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * return_type_idx uint
73081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * return_type_idx uint
74081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
75081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
76081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
77081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
78081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * class_idx ushort
79081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * type_idx/proto_idx ushort
80081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * name_idx uint
81081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
82081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
83081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
84081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
85081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * class_idx uint
86081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * access_flags uint
87081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * superclass_idx uint
88081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * interfaces_off uint
89081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * source_file_idx uint
90081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * annotations_off uint
91081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * class_data_off uint
92081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * static_values_off uint
93081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
94081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int CLASS_DEF_ITEM = 8 * UINT;
95081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson
96081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    /**
97081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * type ushort
98081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * unused ushort
99081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * size uint
100081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     * offset uint
101081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson     */
102081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson    public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
103081c7142b29ccd6e1744b26e097b6a4d7c12f2bdJesse Wilson}
104