001/*
002 *  Licensed to the Apache Software Foundation (ASF) under one or more
003 *  contributor license agreements.  See the NOTICE file distributed with
004 *  this work for additional information regarding copyright ownership.
005 *  The ASF licenses this file to You under the Apache License, Version 2.0
006 *  (the "License"); you may not use this file except in compliance with
007 *  the License.  You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 *  Unless required by applicable law or agreed to in writing, software
012 *  distributed under the License is distributed on an "AS IS" BASIS,
013 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 *  See the License for the specific language governing permissions and
015 *  limitations under the License.
016 */
017package org.apache.commons.compress.harmony.pack200;
018
019/**
020 * Constant pool entry for a name and type pair.
021 */
022public class CPNameAndType extends ConstantPoolEntry implements Comparable {
023
024    private final CPUTF8 name;
025    private final CPSignature signature;
026
027    public CPNameAndType(final CPUTF8 name, final CPSignature signature) {
028        this.name = name;
029        this.signature = signature;
030    }
031
032    @Override
033    public int compareTo(final Object obj) {
034        if (obj instanceof CPNameAndType) {
035            final CPNameAndType nat = (CPNameAndType) obj;
036            final int compareSignature = signature.compareTo(nat.signature);
037            if (compareSignature == 0) {
038                return name.compareTo(nat.name);
039            }
040            return compareSignature;
041        }
042        return 0;
043    }
044
045    public String getName() {
046        return name.getUnderlyingString();
047    }
048
049    public int getNameIndex() {
050        return name.getIndex();
051    }
052
053    public int getTypeIndex() {
054        return signature.getIndex();
055    }
056
057    @Override
058    public String toString() {
059        return name + ":" + signature;
060    }
061
062}