/*******************************************************************************
* Copyright (c) 2000, 2011 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.che.ide.ext.java.jdt.internal.corext.refactoring.types;
public final class PrimitiveType extends TType {
/** Type code for the primitive type "int". */
public static final int INT = 0;
/** Type code for the primitive type "char". */
public static final int CHAR = 1;
/** Type code for the primitive type "boolean". */
public static final int BOOLEAN = 2;
/** Type code for the primitive type "short". */
public static final int SHORT = 3;
/** Type code for the primitive type "long". */
public static final int LONG = 4;
/** Type code for the primitive type "float". */
public static final int FLOAT = 5;
/** Type code for the primitive type "double". */
public static final int DOUBLE = 6;
/** Type code for the primitive type "byte". */
public static final int BYTE = 7;
static final String[] NAMES = {"int", //$NON-NLS-1$
"char", //$NON-NLS-1$
"boolean", //$NON-NLS-1$
"short", //$NON-NLS-1$
"long", //$NON-NLS-1$
"float", //$NON-NLS-1$
"double", //$NON-NLS-1$
"byte"}; //$NON-NLS-1$
private int fId;
protected PrimitiveType(TypeEnvironment environment, int id, String signature) {
super(environment, signature);
fId = id;
}
public int getId() {
return fId;
}
@Override
public int getKind() {
return PRIMITIVE_TYPE;
}
@Override
protected boolean doEquals(TType type) {
return fId == ((PrimitiveType)type).fId;
}
@Override
public int hashCode() {
return fId;
}
@Override
protected boolean doCanAssignTo(TType lhs) {
if (lhs.getKind() != PRIMITIVE_TYPE) {
if (lhs.getKind() == STANDARD_TYPE) {
// IJavaProject javaProject = ((StandardType)lhs).getJavaElementType().getJavaProject();
return getEnvironment().createBoxed(this).canAssignTo(lhs);
// return false;
}
return false;
}
switch (((PrimitiveType)lhs).fId) {
case BOOLEAN:
case BYTE:
case CHAR:
return false;
case DOUBLE:
switch (fId) {
case BYTE:
case CHAR:
case SHORT:
case INT:
case LONG:
case FLOAT:
return true;
default:
return false;
}
case FLOAT:
switch (fId) {
case BYTE:
case CHAR:
case SHORT:
case INT:
case LONG:
return true;
default:
return false;
}
case LONG:
switch (fId) {
case BYTE:
case CHAR:
case SHORT:
case INT:
return true;
default:
return false;
}
case INT:
switch (fId) {
case BYTE:
case CHAR:
case SHORT:
return true;
default:
return false;
}
case SHORT:
return (fId == BYTE);
}
return false;
}
@Override
public String getName() {
return NAMES[fId];
}
@Override
protected String getPlainPrettySignature() {
return NAMES[fId];
}
}