1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 01:45:33 +02:00

Templates, Linkage Specs & the start of DeclSpecifierSeq.

This commit is contained in:
John Camelon 2004-11-21 20:40:43 +00:00
parent b34fcf2fc9
commit ece695b022
25 changed files with 1098 additions and 498 deletions

View file

@ -19,6 +19,7 @@ public interface ICPPASTDeclSpecifier extends IASTDeclSpecifier {
// Extra storage class in C++
public static final int sc_mutable = IASTDeclSpecifier.sc_last + 1;
public static final int sc_last = sc_mutable;
// A declaration in C++ can be a friend declaration
public boolean isFriend();

View file

@ -0,0 +1,25 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
/**
* @author jcamelon
*/
public interface ICPPASTExplicitTemplateInstantiation extends IASTDeclaration {
public static final ASTNodeProperty OWNED_DECLARATION = new ASTNodeProperty( "Owned Declaration"); //$NON-NLS-1$
public IASTDeclaration getDeclaration();
public void setDeclaration( IASTDeclaration declaration );
}

View file

@ -0,0 +1,29 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
/**
* @author jcamelon
*/
public interface ICPPASTLinkageSpecification extends IASTDeclaration {
public String getLiteral();
public void setLiteral( String value );
public static final ASTNodeProperty OWNED_DECLARATION = new ASTNodeProperty( "Owned Declaration"); //$NON-NLS-1$
public List getDeclarations();
public void addDeclaration( IASTDeclaration declaration );
}

View file

@ -0,0 +1,21 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
/**
* @author jcamelon
*/
public interface ICPPASTParameterDeclaration extends ICPPASTTemplateParameter,
IASTParameterDeclaration {
}

View file

@ -0,0 +1,37 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
/**
* @author jcamelon
*/
public interface ICPPASTSimpleTypeTemplateParameter extends
ICPPASTTemplateParameter {
public static final int st_class = 1;
public static final int st_typename = 2;
public int getParameterType();
public void setParameterType( int value );
public static final ASTNodeProperty PARAMETER_NAME = new ASTNodeProperty( "Name" ); //$NON-NLS-1$
public IASTName getName();
public void setName( IASTName name );
public static final ASTNodeProperty DEFAULT_TYPE = new ASTNodeProperty( "Default Type"); //$NON-NLS-1$
public IASTTypeId getDefaultType();
public void setDefaultType( IASTTypeId typeId );
}

View file

@ -0,0 +1,33 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
/**
* @author jcamelon
*/
public interface ICPPASTTemplateDeclaration extends IASTDeclaration {
public boolean isExported();
public void setExported( boolean value );
public static final ASTNodeProperty OWNED_DECLARATION = new ASTNodeProperty( "Owned Declaration"); //$NON-NLS-1$
public IASTDeclaration getDeclaration();
public void setDeclaration( IASTDeclaration declaration );
public static final ASTNodeProperty PARAMETER = new ASTNodeProperty( "Template Parameter"); //$NON-NLS-1$
public List getTemplateParameters();
public void addTemplateParamter( ICPPASTTemplateParameter parm );
}

View file

@ -0,0 +1,20 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.IASTNode;
/**
* @author jcamelon
*/
public interface ICPPASTTemplateParameter extends IASTNode {
}

View file

@ -0,0 +1,25 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
/**
* @author jcamelon
*/
public interface ICPPASTTemplateSpecialization extends IASTDeclaration {
public static final ASTNodeProperty OWNED_DECLARATION = new ASTNodeProperty( "Owned Declaration"); //$NON-NLS-1$
public IASTDeclaration getDeclaration();
public void setDeclaration( IASTDeclaration declaration );
}

View file

@ -0,0 +1,36 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTName;
/**
* @author jcamelon
*/
public interface ICPPASTTemplatedTypeTemplateParameter extends
ICPPASTTemplateParameter {
public static final ASTNodeProperty PARAMETER = new ASTNodeProperty( "Template Parameter"); //$NON-NLS-1$
public List getTemplateParameters();
public void addTemplateParamter( ICPPASTTemplateParameter parm );
public static final ASTNodeProperty PARAMETER_NAME = new ASTNodeProperty( "Name" ); //$NON-NLS-1$
public IASTName getName();
public void setName( IASTName name );
public static final ASTNodeProperty DEFAULT_VALUE = new ASTNodeProperty( "Default Value"); //$NON-NLS-1$
public IASTExpression getDefaultValue();
public void setDefaultValue( IASTExpression expression );
}

View file

@ -0,0 +1,25 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.gnu.cpp;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
/**
* @author jcamelon
*/
public interface IGPPASTDeclSpecifier extends IASTDeclSpecifier {
// Extra type qualifier in C
public boolean isRestrict();
public void setRestrict( boolean value );
}

View file

@ -0,0 +1,27 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.gnu.cpp;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
/**
* @author jcamelon
*/
public interface IGPPASTExplicitTemplateInstantiation extends
ICPPASTExplicitTemplateInstantiation {
public static final int ti_static = 1;
public static final int ti_inline = 2;
public static final int ti_extern = 3;
public int getModifier();
public void setModifier( int value );
}

View file

@ -0,0 +1,25 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.core.dom.ast.gnu.cpp;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
/**
* @author jcamelon
*/
public interface IGPPASTSimpleDeclSpecifier extends IGPPASTDeclSpecifier,
ICPPASTSimpleDeclSpecifier {
public static final int t_Complex = ICPPASTSimpleDeclSpecifier.t_last + 1;
public static final int t_Imaginary = ICPPASTSimpleDeclSpecifier.t_last + 2;
public static final int t_last = t_Imaginary;
}

View file

@ -58,7 +58,6 @@ import org.eclipse.cdt.core.parser.ParseError;
import org.eclipse.cdt.core.parser.ParserMode;
import org.eclipse.cdt.internal.core.parser.ParserProblemFactory;
import org.eclipse.cdt.internal.core.parser.problem.IProblemFactory;
import org.eclipse.cdt.internal.core.parser.token.TokenFactory;
import org.eclipse.cdt.internal.core.parser2.c.CASTASMDeclaration;
import org.eclipse.cdt.internal.core.parser2.c.CASTBreakStatement;
import org.eclipse.cdt.internal.core.parser2.c.CASTCaseStatement;
@ -967,18 +966,6 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
return compoundStatement();
}
/**
* @param sdw
* @param typeNameBegin
* @param typeNameEnd
*/
protected void setTypeName(DeclarationWrapper sdw, IToken typeNameBegin,
IToken typeNameEnd) {
if (typeNameBegin != null)
sdw.setTypeName(TokenFactory.createTokenDuple(typeNameBegin,
typeNameEnd));
}
/**
* @param flags
* input flags that are used to make our decision

View file

@ -56,12 +56,8 @@ public class CASTSimpleDeclaration extends CASTNode implements
declarators[i] = old[i];
}
declarators[ currentIndex++ ] = d;
}
/**
* @param decls2
*/
private void removeNullDeclarators() {
int nullCount = 0;
for( int i = 0; i < declarators.length; ++i )

View file

@ -57,5 +57,19 @@ public class ANSICPPParserExtensionConfiguration implements
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser2.cpp.ICPPParserExtensionConfiguration#supportComplexNumbers()
*/
public boolean supportComplexNumbers() {
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser2.cpp.ICPPParserExtensionConfiguration#supportRestrictKeyword()
*/
public boolean supportRestrictKeyword() {
return false;
}
}

View file

@ -0,0 +1,38 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
/**
* @author jcamelon
*/
public class CPPASTExplicitTemplateInstantiation extends CPPASTNode implements
ICPPASTExplicitTemplateInstantiation {
private IASTDeclaration declaration;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation#getDeclaration()
*/
public IASTDeclaration getDeclaration() {
return declaration;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation#setDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
*/
public void setDeclaration(IASTDeclaration declaration) {
this.declaration = declaration;
}
}

View file

@ -0,0 +1,87 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
/**
* @author jcamelon
*/
public class CPPASTLinkageSpecification extends CPPASTNode implements
ICPPASTLinkageSpecification {
private String literal;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification#getLiteral()
*/
public String getLiteral() {
return literal;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification#setLiteral(java.lang.String)
*/
public void setLiteral(String value) {
this.literal = value;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification#getDeclarations()
*/
public List getDeclarations() {
if( declarations == null ) return Collections.EMPTY_LIST;
removeNullDeclarations();
return Arrays.asList( declarations );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification#addDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
*/
public void addDeclaration(IASTDeclaration declaration) {
if( declarations == null )
{
declarations = new IASTDeclaration[ DEFAULT_DECLARATIONS_LIST_SIZE ];
currentIndex = 0;
}
if( declarations.length == currentIndex )
{
IASTDeclaration [] old = declarations;
declarations = new IASTDeclaration[ old.length * 2 ];
for( int i = 0; i < old.length; ++i )
declarations[i] = old[i];
}
declarations[ currentIndex++ ] = declaration;
}
private void removeNullDeclarations() {
int nullCount = 0;
for( int i = 0; i < declarations.length; ++i )
if( declarations[i] == null )
++nullCount;
if( nullCount == 0 ) return;
IASTDeclaration [] old = declarations;
int newSize = old.length - nullCount;
declarations = new IASTDeclaration[ newSize ];
for( int i = 0; i < newSize; ++i )
declarations[i] = old[i];
currentIndex = newSize;
}
private int currentIndex = 0;
private IASTDeclaration [] declarations = null;
private static final int DEFAULT_DECLARATIONS_LIST_SIZE = 4;
}

View file

@ -0,0 +1,68 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter;
/**
* @author jcamelon
*/
public class CPPASTSimpleTypeTemplateParameter extends CPPASTNode implements
ICPPASTSimpleTypeTemplateParameter {
private int type;
private IASTName name;
private IASTTypeId typeId;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#getParameterType()
*/
public int getParameterType() {
return type;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#setParameterType(int)
*/
public void setParameterType(int value) {
this.type = value;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#getName()
*/
public IASTName getName() {
return name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#setName(org.eclipse.cdt.core.dom.ast.IASTName)
*/
public void setName(IASTName name) {
this.name = name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#getDefaultType()
*/
public IASTTypeId getDefaultType() {
return typeId;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter#setDefaultType(org.eclipse.cdt.core.dom.ast.IASTTypeId)
*/
public void setDefaultType(IASTTypeId typeId) {
this.typeId = typeId;
}
}

View file

@ -0,0 +1,103 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
/**
* @author jcamelon
*/
public class CPPASTTemplateDeclaration extends CPPASTNode implements
ICPPASTTemplateDeclaration {
private boolean exported;
private IASTDeclaration declaration;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#isExported()
*/
public boolean isExported() {
return exported;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#setExported(boolean)
*/
public void setExported(boolean value) {
exported = value;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#getDeclaration()
*/
public IASTDeclaration getDeclaration() {
return declaration;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#setDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
*/
public void setDeclaration(IASTDeclaration declaration) {
this.declaration = declaration;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#getTemplateParameters()
*/
public List getTemplateParameters() {
if( parameters == null ) return Collections.EMPTY_LIST;
removeNullParameters();
return Arrays.asList( parameters );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration#addTemplateParamter(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter)
*/
public void addTemplateParamter(ICPPASTTemplateParameter parm) {
if( parameters == null )
{
parameters = new ICPPASTTemplateParameter[ DEFAULT_PARMS_LIST_SIZE ];
currentIndex = 0;
}
if( parameters.length == currentIndex )
{
ICPPASTTemplateParameter [] old = parameters;
parameters = new ICPPASTTemplateParameter[ old.length * 2 ];
for( int i = 0; i < old.length; ++i )
parameters[i] = old[i];
}
parameters[ currentIndex++ ] = parm;
}
private void removeNullParameters() {
int nullCount = 0;
for( int i = 0; i < parameters.length; ++i )
if( parameters[i] == null )
++nullCount;
if( nullCount == 0 ) return;
ICPPASTTemplateParameter[] old = parameters;
int newSize = old.length - nullCount;
parameters = new ICPPASTTemplateParameter[ newSize ];
for( int i = 0; i < newSize; ++i )
parameters[i] = old[i];
currentIndex = newSize;
}
private int currentIndex = 0;
private ICPPASTTemplateParameter [] parameters = null;
private static final int DEFAULT_PARMS_LIST_SIZE = 4;
}

View file

@ -0,0 +1,38 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization;
/**
* @author jcamelon
*/
public class CPPASTTemplateSpecialization extends CPPASTNode implements
ICPPASTTemplateSpecialization {
private IASTDeclaration declaration;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization#getDeclaration()
*/
public IASTDeclaration getDeclaration() {
return declaration;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization#setDeclaration(org.eclipse.cdt.core.dom.ast.IASTDeclaration)
*/
public void setDeclaration(IASTDeclaration declaration) {
this.declaration = declaration;
}
}

View file

@ -0,0 +1,97 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter;
/**
* @author jcamelon
*/
public class CPPASTTemplatedTypeTemplateParameter extends CPPASTNode implements
ICPPASTTemplatedTypeTemplateParameter {
public List getTemplateParameters() {
if( parameters == null ) return Collections.EMPTY_LIST;
removeNullParameters();
return Arrays.asList( parameters );
}
public void addTemplateParamter(ICPPASTTemplateParameter parm) {
if( parameters == null )
{
parameters = new ICPPASTTemplateParameter[ DEFAULT_PARMS_LIST_SIZE ];
currentIndex = 0;
}
if( parameters.length == currentIndex )
{
ICPPASTTemplateParameter [] old = parameters;
parameters = new ICPPASTTemplateParameter[ old.length * 2 ];
for( int i = 0; i < old.length; ++i )
parameters[i] = old[i];
}
parameters[ currentIndex++ ] = parm;
}
private void removeNullParameters() {
int nullCount = 0;
for( int i = 0; i < parameters.length; ++i )
if( parameters[i] == null )
++nullCount;
if( nullCount == 0 ) return;
ICPPASTTemplateParameter[] old = parameters;
int newSize = old.length - nullCount;
parameters = new ICPPASTTemplateParameter[ newSize ];
for( int i = 0; i < newSize; ++i )
parameters[i] = old[i];
currentIndex = newSize;
}
private int currentIndex = 0;
private ICPPASTTemplateParameter [] parameters = null;
private static final int DEFAULT_PARMS_LIST_SIZE = 4;
private IASTName name;
private IASTExpression defaultValue;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter#getName()
*/
public IASTName getName() {
return name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter#setName(org.eclipse.cdt.core.dom.ast.IASTName)
*/
public void setName(IASTName name) {
this.name =name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter#getDefaultValue()
*/
public IASTExpression getDefaultValue() {
return defaultValue;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter#setDefaultValue(org.eclipse.cdt.core.dom.ast.IASTExpression)
*/
public void setDefaultValue(IASTExpression expression) {
this.defaultValue = expression;
}
}

View file

@ -57,4 +57,18 @@ public class GNUCPPParserExtensionConfiguration implements
return true;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser2.cpp.ICPPParserExtensionConfiguration#supportComplexNumbers()
*/
public boolean supportComplexNumbers() {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser2.cpp.ICPPParserExtensionConfiguration#supportRestrictKeyword()
*/
public boolean supportRestrictKeyword() {
return true;
}
}

View file

@ -0,0 +1,38 @@
/**********************************************************************
* Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.internal.core.parser2.cpp;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
/**
* @author jcamelon
*/
public class GPPASTExplicitTemplateInstantiation extends
CPPASTExplicitTemplateInstantiation implements
IGPPASTExplicitTemplateInstantiation {
private int mod;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation#getModifier()
*/
public int getModifier() {
return mod;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation#setModifier(int)
*/
public void setModifier(int value) {
this.mod = value;
}
}

View file

@ -25,6 +25,7 @@ public interface ICPPParserExtensionConfiguration {
public boolean supportExtendedTemplateSyntax();
public boolean supportMinAndMaxOperators();
public boolean supportStatementsInExpressions();
public boolean supportComplexNumbers();
public boolean supportRestrictKeyword();
}