14a10645c70199c8d8567fbc46312158c419720abChris Lattner/*
27c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell * Copyright (C) 2011 The Android Open Source Project
37c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell *
47c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell * Licensed under the Apache License, Version 2.0 (the "License");
57c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell * you may not use this file except in compliance with the License.
67c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell * You may obtain a copy of the License at
77c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell *
87c0e022c5c4be4b11e199a53f73bbdd84e34aa80John Criswell *      http://www.apache.org/licenses/LICENSE-2.0
94a10645c70199c8d8567fbc46312158c419720abChris Lattner *
104a10645c70199c8d8567fbc46312158c419720abChris Lattner * Unless required by applicable law or agreed to in writing, software
114a10645c70199c8d8567fbc46312158c419720abChris Lattner * distributed under the License is distributed on an "AS IS" BASIS,
124a10645c70199c8d8567fbc46312158c419720abChris Lattner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134a10645c70199c8d8567fbc46312158c419720abChris Lattner * See the License for the specific language governing permissions and
144a10645c70199c8d8567fbc46312158c419720abChris Lattner * limitations under the License.
154a10645c70199c8d8567fbc46312158c419720abChris Lattner */
164a10645c70199c8d8567fbc46312158c419720abChris Lattner
174a10645c70199c8d8567fbc46312158c419720abChris Lattnerpackage com.android.dx.dex;
184a10645c70199c8d8567fbc46312158c419720abChris Lattner
194a10645c70199c8d8567fbc46312158c419720abChris Lattnerpublic final class SizeOf {
204a10645c70199c8d8567fbc46312158c419720abChris Lattner    private SizeOf() {}
215073336cd4da5df4ae13a167582d1dc90f32e4e0Misha Brukman
224a10645c70199c8d8567fbc46312158c419720abChris Lattner    public static final int UBYTE = 1;
234a10645c70199c8d8567fbc46312158c419720abChris Lattner    public static final int USHORT = 2;
244a10645c70199c8d8567fbc46312158c419720abChris Lattner    public static final int UINT = 4;
254a10645c70199c8d8567fbc46312158c419720abChris Lattner
26c648dabf65c67d20c208ed0b39b9622387e636c7Chris Lattner    public static final int SIGNATURE = UBYTE * 20;
2765f62790d6e3e7f7ceb9cd12a7a51a66d95a3b03Chris Lattner
28e49603d79d220a795bd50684c8b1f503ee40f97fMisha Brukman    /**
295de0bac111fc9d4e290b9a743a02b866154c12e5Chris Lattner     * magic ubyte[8]
304a10645c70199c8d8567fbc46312158c419720abChris Lattner     * checksum uint
31e1b52b765675015eee5ce9efdb1b81c6c3eaefb1Chris Lattner     * signature ubyte[20]
32d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke     * file_size uint
33d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke     * header_size uint
344a10645c70199c8d8567fbc46312158c419720abChris Lattner     * endian_tag uint
354a10645c70199c8d8567fbc46312158c419720abChris Lattner     * link_size uint
364a10645c70199c8d8567fbc46312158c419720abChris Lattner     * link_off uint
374a10645c70199c8d8567fbc46312158c419720abChris Lattner     * map_off uint
384a10645c70199c8d8567fbc46312158c419720abChris Lattner     * string_ids_size uint
39b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * string_ids_off uint
404a10645c70199c8d8567fbc46312158c419720abChris Lattner     * type_ids_size uint
414148556a9c767fdf3047ae8e004a759356b893ddMisha Brukman     * type_ids_off uint
424a10645c70199c8d8567fbc46312158c419720abChris Lattner     * proto_ids_size uint
434a10645c70199c8d8567fbc46312158c419720abChris Lattner     * proto_ids_off uint
44b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * field_ids_size uint
45b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * field_ids_off uint
465073336cd4da5df4ae13a167582d1dc90f32e4e0Misha Brukman     * method_ids_size uint
475073336cd4da5df4ae13a167582d1dc90f32e4e0Misha Brukman     * method_ids_off uint
485073336cd4da5df4ae13a167582d1dc90f32e4e0Misha Brukman     * class_defs_size uint
4925d66473c620b6b01e301b9cfabdbedace96608eChris Lattner     * class_defs_off uint
50b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * data_size uint
513c053a0a98e19f5ac8905011ad4c8238b08d6aeaChris Lattner     * data_off uint
52c5cad211d6ec50fe90a0a716dee701c6c4721385Brian Gaeke     */
53c5cad211d6ec50fe90a0a716dee701c6c4721385Brian Gaeke    public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
54c5cad211d6ec50fe90a0a716dee701c6c4721385Brian Gaeke
55c5cad211d6ec50fe90a0a716dee701c6c4721385Brian Gaeke    /**
56c5cad211d6ec50fe90a0a716dee701c6c4721385Brian Gaeke     * string_data_off uint
573c053a0a98e19f5ac8905011ad4c8238b08d6aeaChris Lattner     */
583c053a0a98e19f5ac8905011ad4c8238b08d6aeaChris Lattner    public static final int STRING_ID_ITEM = UINT;
593c053a0a98e19f5ac8905011ad4c8238b08d6aeaChris Lattner
607dac658792425c10274594782d6fcf10208a16f0Chris Lattner    /**
617dac658792425c10274594782d6fcf10208a16f0Chris Lattner     * descriptor_idx uint
627dac658792425c10274594782d6fcf10208a16f0Chris Lattner     */
637dac658792425c10274594782d6fcf10208a16f0Chris Lattner    public static final int TYPE_ID_ITEM = UINT;
647dac658792425c10274594782d6fcf10208a16f0Chris Lattner
654a10645c70199c8d8567fbc46312158c419720abChris Lattner    /**
664a10645c70199c8d8567fbc46312158c419720abChris Lattner     * type_idx ushort
67d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke     */
68fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner    public static final int TYPE_ITEM = USHORT;
69fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner
70fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner    /**
71fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner     * shorty_idx uint
72fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner     * return_type_idx uint
73fa76183e8e28985dfd17b1d6291c939dab4cbe1dChris Lattner     * return_type_idx uint
749d679cbc6cb5c7dc8cca87a1e1548c480fb056b8Misha Brukman     */
754a10645c70199c8d8567fbc46312158c419720abChris Lattner    public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
764a10645c70199c8d8567fbc46312158c419720abChris Lattner
774a10645c70199c8d8567fbc46312158c419720abChris Lattner    /**
784a10645c70199c8d8567fbc46312158c419720abChris Lattner     * class_idx ushort
794a10645c70199c8d8567fbc46312158c419720abChris Lattner     * type_idx/proto_idx ushort
804a10645c70199c8d8567fbc46312158c419720abChris Lattner     * name_idx uint
814a10645c70199c8d8567fbc46312158c419720abChris Lattner     */
824a10645c70199c8d8567fbc46312158c419720abChris Lattner    public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
834a10645c70199c8d8567fbc46312158c419720abChris Lattner
844a10645c70199c8d8567fbc46312158c419720abChris Lattner    /**
854148556a9c767fdf3047ae8e004a759356b893ddMisha Brukman     * class_idx uint
864148556a9c767fdf3047ae8e004a759356b893ddMisha Brukman     * access_flags uint
877bb11547e497d7b8fc87f61c1089eee808e3a1eeChris Lattner     * superclass_idx uint
884a10645c70199c8d8567fbc46312158c419720abChris Lattner     * interfaces_off uint
89cc876a7421f6dbcca98446058d5f0637092c6e1aChris Lattner     * source_file_idx uint
90b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * annotations_off uint
91b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * class_data_off uint
927bb11547e497d7b8fc87f61c1089eee808e3a1eeChris Lattner     * static_values_off uint
93b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     */
94b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke    public static final int CLASS_DEF_ITEM = 8 * UINT;
95b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke
96b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke    /**
97b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * type ushort
98b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * unused ushort
99b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * size uint
100b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     * offset uint
101b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke     */
102b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke    public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
103b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke}
104b5ee509be2ce78badc11fd649dda90ec78394d1aBrian Gaeke