blob: 52d217edf0e1c609adb68bc530919bd34108f8c8 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2002,2003 Rational Software Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Rational Software - Initial API and implementation
***********************************************************************/
package org.eclipse.cdt.internal.core.parser.ast.complete;
import java.util.List;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
import org.eclipse.cdt.internal.core.parser.pst.TypeInfo;
/**
* @author jcamelon
*
*/
public class ASTSimpleTypeSpecifier extends ASTNode implements IASTSimpleTypeSpecifier
{
private final List refs;
private ISymbol symbol;
private final boolean isTypename;
private final String name;
/**
* @param s
* @param b
* @param string
*/
public ASTSimpleTypeSpecifier(ISymbol s, boolean b, String string, List references )
{
this.symbol = s;
this.isTypename = b;
this.name = string;
this.refs = references;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#getType()
*/
public Type getType()
{
if( symbol.getType() == TypeInfo.t_int )
return IASTSimpleTypeSpecifier.Type.INT;
if( symbol.getType() == TypeInfo.t_double )
return IASTSimpleTypeSpecifier.Type.DOUBLE;
if( symbol.getType() == TypeInfo.t_float )
return IASTSimpleTypeSpecifier.Type.FLOAT;
if( symbol.getType() == TypeInfo.t_bool )
return IASTSimpleTypeSpecifier.Type.BOOL;
if( symbol.getType() == TypeInfo.t_type )
return IASTSimpleTypeSpecifier.Type.CLASS_OR_TYPENAME;
if( symbol.getType() == TypeInfo.t_char )
return IASTSimpleTypeSpecifier.Type.CHAR;
if( symbol.getType() == TypeInfo.t_void )
return IASTSimpleTypeSpecifier.Type.VOID;
if( symbol.getType() == TypeInfo.t_wchar_t)
return IASTSimpleTypeSpecifier.Type.WCHAR_T;
if( symbol.getType() == TypeInfo.t__Bool )
return IASTSimpleTypeSpecifier.Type._BOOL;
return IASTSimpleTypeSpecifier.Type.UNSPECIFIED;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#getTypename()
*/
public String getTypename()
{
return name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isLong()
*/
public boolean isLong()
{
return symbol.getTypeInfo().checkBit( TypeInfo.isLong );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isShort()
*/
public boolean isShort()
{
return symbol.getTypeInfo().checkBit( TypeInfo.isShort );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isSigned()
*/
public boolean isSigned()
{
return ! symbol.getTypeInfo().checkBit( TypeInfo.isUnsigned);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isUnsigned()
*/
public boolean isUnsigned()
{
return symbol.getTypeInfo().checkBit( TypeInfo.isUnsigned );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isTypename()
*/
public boolean isTypename()
{
return isTypename;
}
/**
* @return
*/
public ISymbol getSymbol()
{
return symbol;
}
public List getReferences()
{
return refs;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#getTypeSpecifier()
*/
public IASTTypeSpecifier getTypeSpecifier() throws ASTNotImplementedException
{
return (IASTTypeSpecifier)getSymbol().getTypeSymbol().getASTExtension().getPrimaryDeclaration();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isComplex()
*/
public boolean isComplex()
{
return symbol.getTypeInfo().checkBit( TypeInfo.isComplex );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier#isImaginary()
*/
public boolean isImaginary()
{
return symbol.getTypeInfo().checkBit( TypeInfo.isImaginary );
}
}