/*******************************************************************************
 * Copyright (c) 2009 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.equinox.p2.internal.repository.comparator;

public class ConstantPoolEntry {

	private int kind;
	private int classInfoNameIndex;
	private int classIndex;
	private int nameAndTypeIndex;
	private int stringIndex;
	private char[] stringValue;
	private int integerValue;
	private float floatValue;
	private double doubleValue;
	private long longValue;
	private int nameAndTypeDescriptorIndex;
	private int nameAndTypeNameIndex;
	private char[] className;
	private char[] fieldName;
	private char[] methodName;
	private char[] fieldDescriptor;
	private char[] methodDescriptor;
	private char[] utf8Value;
	private int utf8Length;
	private char[] classInfoName;

	public ConstantPoolEntry() {
		this.classInfoNameIndex = -1;
		this.classIndex = -1;
		this.nameAndTypeIndex = -1;
		this.stringIndex = -1;
		this.stringValue = null;
		this.integerValue = -1;
		this.floatValue = -0.0f;
		this.doubleValue = -0 - 0;
		this.longValue = -1;
		this.nameAndTypeDescriptorIndex = -1;
		this.nameAndTypeNameIndex = -1;
		this.className = null;
		this.fieldName = null;
		this.methodName = null;
		this.fieldDescriptor = null;
		this.methodDescriptor = null;
		this.utf8Value = null;
		this.utf8Length = -1;
		this.classInfoName = null;
	}

	/*
	 * @see IConstantPoolEntry#getKind()
	 */
	public int getKind() {
		return this.kind;
	}

	/*
	 * Sets the kind.
	 * @param kind The kind to set
	 */
	public void setKind(int kind) {
		this.kind = kind;
	}

	/*
	 * @see IConstantPoolEntry#getClassInfoNameIndex()
	 */
	public int getClassInfoNameIndex() {
		return this.classInfoNameIndex;
	}

	/*
	 * @see IConstantPoolEntry#getClassIndex()
	 */
	public int getClassIndex() {
		return this.classIndex;
	}

	/*
	 * @see IConstantPoolEntry#getNameAndTypeIndex()
	 */
	public int getNameAndTypeIndex() {
		return this.nameAndTypeIndex;
	}

	/*
	 * @see IConstantPoolEntry#getStringIndex()
	 */
	public int getStringIndex() {
		return this.stringIndex;
	}

	/*
	 * @see IConstantPoolEntry#getStringValue()
	 */
	public String getStringValue() {
		return new String(this.stringValue);
	}

	/*
	 * @see IConstantPoolEntry#getIntegerValue()
	 */
	public int getIntegerValue() {
		return this.integerValue;
	}

	/*
	 * @see IConstantPoolEntry#getFloatValue()
	 */
	public float getFloatValue() {
		return this.floatValue;
	}

	/*
	 * @see IConstantPoolEntry#getDoubleValue()
	 */
	public double getDoubleValue() {
		return this.doubleValue;
	}

	/*
	 * @see IConstantPoolEntry#getLongValue()
	 */
	public long getLongValue() {
		return this.longValue;
	}

	/*
	 * @see IConstantPoolEntry#getNameAndTypeInfoDescriptorIndex()
	 */
	public int getNameAndTypeInfoDescriptorIndex() {
		return this.nameAndTypeDescriptorIndex;
	}

	/*
	 * @see IConstantPoolEntry#getNameAndTypeInfoNameIndex()
	 */
	public int getNameAndTypeInfoNameIndex() {
		return this.nameAndTypeNameIndex;
	}

	/*
	 * @see IConstantPoolEntry#getClassName()
	 */
	public char[] getClassName() {
		return this.className;
	}

	/*
	 * @see IConstantPoolEntry#getFieldName()
	 */
	public char[] getFieldName() {
		return this.fieldName;
	}

	/*
	 * @see IConstantPoolEntry#getMethodName()
	 */
	public char[] getMethodName() {
		return this.methodName;
	}

	/*
	 * @see IConstantPoolEntry#getFieldDescriptor()
	 */
	public char[] getFieldDescriptor() {
		return this.fieldDescriptor;
	}

	/*
	 * @see IConstantPoolEntry#getMethodDescriptor()
	 */
	public char[] getMethodDescriptor() {
		return this.methodDescriptor;
	}

	/*
	 * @see IConstantPoolEntry#getUtf8Value()
	 */
	public char[] getUtf8Value() {
		return this.utf8Value;
	}

	/*
	 * @see IConstantPoolEntry#getClassInfoName()
	 */
	public char[] getClassInfoName() {
		return this.classInfoName;
	}

	/*
	 * Sets the classInfoNameIndex.
	 * @param classInfoNameIndex The classInfoNameIndex to set
	 */
	public void setClassInfoNameIndex(int classInfoNameIndex) {
		this.classInfoNameIndex = classInfoNameIndex;
	}

	/*
	 * Sets the classIndex.
	 * @param classIndex The classIndex to set
	 */
	public void setClassIndex(int classIndex) {
		this.classIndex = classIndex;
	}

	/*
	 * Sets the nameAndTypeIndex.
	 * @param nameAndTypeIndex The nameAndTypeIndex to set
	 */
	public void setNameAndTypeIndex(int nameAndTypeIndex) {
		this.nameAndTypeIndex = nameAndTypeIndex;
	}

	/*
	 * Sets the stringIndex.
	 * @param stringIndex The stringIndex to set
	 */
	public void setStringIndex(int stringIndex) {
		this.stringIndex = stringIndex;
	}

	/*
	 * Sets the stringValue.
	 * @param stringValue The stringValue to set
	 */
	public void setStringValue(char[] stringValue) {
		this.stringValue = stringValue;
	}

	/*
	 * Sets the integerValue.
	 * @param integerValue The integerValue to set
	 */
	public void setIntegerValue(int integerValue) {
		this.integerValue = integerValue;
	}

	/*
	 * Sets the floatValue.
	 * @param floatValue The floatValue to set
	 */
	public void setFloatValue(float floatValue) {
		this.floatValue = floatValue;
	}

	/*
	 * Sets the doubleValue.
	 * @param doubleValue The doubleValue to set
	 */
	public void setDoubleValue(double doubleValue) {
		this.doubleValue = doubleValue;
	}

	/*
	 * Sets the longValue.
	 * @param longValue The longValue to set
	 */
	public void setLongValue(long longValue) {
		this.longValue = longValue;
	}

	/*
	 * Gets the nameAndTypeDescriptorIndex.
	 * @return Returns a int
	 */
	public int getNameAndTypeDescriptorIndex() {
		return this.nameAndTypeDescriptorIndex;
	}

	/*
	 * Sets the nameAndTypeDescriptorIndex.
	 * @param nameAndTypeDescriptorIndex The nameAndTypeDescriptorIndex to set
	 */
	public void setNameAndTypeDescriptorIndex(int nameAndTypeDescriptorIndex) {
		this.nameAndTypeDescriptorIndex = nameAndTypeDescriptorIndex;
	}

	/*
	 * Gets the nameAndTypeNameIndex.
	 * @return Returns a int
	 */
	public int getNameAndTypeNameIndex() {
		return this.nameAndTypeNameIndex;
	}

	/*
	 * Sets the nameAndTypeNameIndex.
	 * @param nameAndTypeNameIndex The nameAndTypeNameIndex to set
	 */
	public void setNameAndTypeNameIndex(int nameAndTypeNameIndex) {
		this.nameAndTypeNameIndex = nameAndTypeNameIndex;
	}

	/*
	 * Sets the className.
	 * @param className The className to set
	 */
	public void setClassName(char[] className) {
		this.className = className;
	}

	/*
	 * Sets the fieldName.
	 * @param fieldName The fieldName to set
	 */
	public void setFieldName(char[] fieldName) {
		this.fieldName = fieldName;
	}

	/*
	 * Sets the methodName.
	 * @param methodName The methodName to set
	 */
	public void setMethodName(char[] methodName) {
		this.methodName = methodName;
	}

	/*
	 * Sets the fieldDescriptor.
	 * @param fieldDescriptor The fieldDescriptor to set
	 */
	public void setFieldDescriptor(char[] fieldDescriptor) {
		this.fieldDescriptor = fieldDescriptor;
	}

	/*
	 * Sets the methodDescriptor.
	 * @param methodDescriptor The methodDescriptor to set
	 */
	public void setMethodDescriptor(char[] methodDescriptor) {
		this.methodDescriptor = methodDescriptor;
	}

	/*
	 * Sets the utf8Value.
	 * @param utf8Value The utf8Value to set
	 */
	public void setUtf8Value(char[] utf8Value) {
		this.utf8Value = utf8Value;
	}

	/*
	 * Sets the classInfoName.
	 * @param classInfoName The classInfoName to set
	 */
	public void setClassInfoName(char[] classInfoName) {
		this.classInfoName = classInfoName;
	}

	/*
	 * @see IConstantPoolEntry#getUtf8Length()
	 */
	public int getUtf8Length() {
		return this.utf8Length;
	}

	/*
	 * Sets the utf8Length.
	 * @param utf8Length The utf8Length to set
	 */
	public void setUtf8Length(int utf8Length) {
		this.utf8Length = utf8Length;
	}

	public void reset() {
		this.kind = 0;
		this.classInfoNameIndex = 0;
		this.classIndex = 0;
		this.nameAndTypeIndex = 0;
		this.stringIndex = 0;
		this.stringValue = null;
		this.integerValue = 0;
		this.floatValue = 0.0f;
		this.doubleValue = 0.0;
		this.longValue = 0L;
		this.nameAndTypeDescriptorIndex = 0;
		this.nameAndTypeNameIndex = 0;
		this.className = null;
		this.fieldName = null;
		this.methodName = null;
		this.fieldDescriptor = null;
		this.methodDescriptor = null;
		this.utf8Value = null;
		this.utf8Length = 0;
		this.classInfoName = null;
	}
}
