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