CPMethodOrField.java

  1. /*
  2.  *  Licensed to the Apache Software Foundation (ASF) under one or more
  3.  *  contributor license agreements.  See the NOTICE file distributed with
  4.  *  this work for additional information regarding copyright ownership.
  5.  *  The ASF licenses this file to You under the Apache License, Version 2.0
  6.  *  (the "License"); you may not use this file except in compliance with
  7.  *  the License.  You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  *  Unless required by applicable law or agreed to in writing, software
  12.  *  distributed under the License is distributed on an "AS IS" BASIS,
  13.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  *  See the License for the specific language governing permissions and
  15.  *  limitations under the License.
  16.  */
  17. package org.apache.commons.compress.harmony.pack200;

  18. /**
  19.  * Constant pool entry for a method or field.
  20.  */
  21. public class CPMethodOrField extends ConstantPoolEntry implements Comparable {

  22.     private final CPClass className;
  23.     private final CPNameAndType nameAndType;
  24.     private int indexInClass = -1;
  25.     private int indexInClassForConstructor = -1;

  26.     public CPMethodOrField(final CPClass className, final CPNameAndType nameAndType) {
  27.         this.className = className;
  28.         this.nameAndType = nameAndType;
  29.     }

  30.     @Override
  31.     public int compareTo(final Object obj) {
  32.         if (obj instanceof CPMethodOrField) {
  33.             final CPMethodOrField mof = (CPMethodOrField) obj;
  34.             final int compareName = className.compareTo(mof.className);
  35.             if (compareName == 0) {
  36.                 return nameAndType.compareTo(mof.nameAndType);
  37.             }
  38.             return compareName;
  39.         }
  40.         return 0;
  41.     }

  42.     public int getClassIndex() {
  43.         return className.getIndex();
  44.     }

  45.     public CPClass getClassName() {
  46.         return className;
  47.     }

  48.     public CPNameAndType getDesc() {
  49.         return nameAndType;
  50.     }

  51.     public int getDescIndex() {
  52.         return nameAndType.getIndex();
  53.     }

  54.     public int getIndexInClass() {
  55.         return indexInClass;
  56.     }

  57.     public int getIndexInClassForConstructor() {
  58.         return indexInClassForConstructor;
  59.     }

  60.     public void setIndexInClass(final int index) {
  61.         indexInClass = index;
  62.     }

  63.     public void setIndexInClassForConstructor(final int index) {
  64.         indexInClassForConstructor = index;
  65.     }

  66.     @Override
  67.     public String toString() {
  68.         return className + ": " + nameAndType;
  69.     }

  70. }