blob: e8b0d1b5d50de763bd045e692e9335debfc08257 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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.jdt.internal.corext.refactoring.typeconstraints.types;
import org.eclipse.jdt.core.IJavaProject;
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;
}
public int getKind() {
return PRIMITIVE_TYPE;
}
protected boolean doEquals(TType type) {
return fId == ((PrimitiveType)type).fId;
}
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, javaProject).canAssignTo(lhs);
}
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;
}
public String getName() {
return NAMES[fId];
}
protected String getPlainPrettySignature() {
return NAMES[fId];
}
}