1579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson/*
2579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Copyright (C) 2011 The Android Open Source Project
3579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson *
4579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
5579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * you may not use this file except in compliance with the License.
6579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * You may obtain a copy of the License at
7579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson *
8579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
9579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson *
10579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Unless required by applicable law or agreed to in writing, software
11579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
12579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * See the License for the specific language governing permissions and
14579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * limitations under the License.
15579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson */
16579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
17579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonpackage com.android.dx.dex;
18579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
19579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonpublic final class SizeOf {
20579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    private SizeOf() {}
21579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
22579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int UBYTE = 1;
23579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int USHORT = 2;
24579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int UINT = 4;
25579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
26579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int SIGNATURE = UBYTE * 20;
27579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
28579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
29579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * magic ubyte[8]
30579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * checksum uint
31579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * signature ubyte[20]
32579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * file_size uint
33579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * header_size uint
34579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * endian_tag uint
35579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * link_size uint
36579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * link_off uint
37579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * map_off uint
38579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * string_ids_size uint
39579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * string_ids_off uint
40579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * type_ids_size uint
41579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * type_ids_off uint
42579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * proto_ids_size uint
43579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * proto_ids_off uint
44579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * field_ids_size uint
45579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * field_ids_off uint
46579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * method_ids_size uint
47579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * method_ids_off uint
48579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * class_defs_size uint
49579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * class_defs_off uint
50579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * data_size uint
51579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * data_off uint
52579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
53579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
54579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
55579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
56579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * string_data_off uint
57579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
58579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int STRING_ID_ITEM = UINT;
59579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
60579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
61579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * descriptor_idx uint
62579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
63579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int TYPE_ID_ITEM = UINT;
64579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
65579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
66579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * type_idx ushort
67579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
68579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int TYPE_ITEM = USHORT;
69579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
70579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
71579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * shorty_idx uint
72579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * return_type_idx uint
73579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * return_type_idx uint
74579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
75579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
76579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
77579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
78579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * class_idx ushort
79579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * type_idx/proto_idx ushort
80579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * name_idx uint
81579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
82579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
83579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
84579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
85579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * class_idx uint
86579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * access_flags uint
87579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * superclass_idx uint
88579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * interfaces_off uint
89579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * source_file_idx uint
90579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * annotations_off uint
91579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * class_data_off uint
92579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * static_values_off uint
93579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
94579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int CLASS_DEF_ITEM = 8 * UINT;
95579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson
96579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    /**
97579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * type ushort
98579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * unused ushort
99579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * size uint
100579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     * offset uint
101579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson     */
102579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson    public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
103579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson}
104