content: /*
   * Copyright (C) 2011 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package com.taobao.atlas.dex;
  
  public final class SizeOf {
      private SizeOf() {}
  
      public static final int UBYTE = 1;
      public static final int USHORT = 2;
      public static final int UINT = 4;
  
      public static final int SIGNATURE = UBYTE * 20;
  
      /**
       * magic ubyte[8]
       * checksum uint
       * signature ubyte[20]
       * file_size uint
       * header_size uint
       * endian_tag uint
       * link_size uint
       * link_off uint
       * map_off uint
       * string_ids_size uint
       * string_ids_off uint
       * type_ids_size uint
       * type_ids_off uint
       * proto_ids_size uint
       * proto_ids_off uint
       * field_ids_size uint
       * field_ids_off uint
       * method_ids_size uint
       * method_ids_off uint
       * class_defs_size uint
       * class_defs_off uint
       * data_size uint
       * data_off uint
       */
      public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70
  
      /**
       * string_data_off uint
       */
      public static final int STRING_ID_ITEM = UINT;
  
      /**
       * descriptor_idx uint
       */
      public static final int TYPE_ID_ITEM = UINT;
  
      /**
       * type_idx ushort
       */
      public static final int TYPE_ITEM = USHORT;
  
      /**
       * shorty_idx uint
       * return_type_idx uint
       * return_type_idx uint
       */
      public static final int PROTO_ID_ITEM = UINT + UINT + UINT;
  
      /**
       * class_idx ushort
       * type_idx/proto_idx ushort
       * name_idx uint
       */
      public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT;
  
      /**
       * class_idx uint
       * access_flags uint
       * superclass_idx uint
       * interfaces_off uint
       * source_file_idx uint
       * annotations_off uint
       * class_data_off uint
       * static_values_off uint
       */
      public static final int CLASS_DEF_ITEM = 8 * UINT;
  
      /**
       * type ushort
       * unused ushort
       * size uint
       * offset uint
       */
      public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT;
  
      /**
       * start_addr uint
       * insn_count ushort
       * handler_off ushort
       */
      public static final int TRY_ITEM = UINT + USHORT + USHORT;
  }
  