1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00
John Camelon 2004-05-03 19:47:42 +00:00
parent daf8e95a4e
commit fb0d913699
9 changed files with 47 additions and 26 deletions

View file

@ -16,7 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
* @author jcamelon * @author jcamelon
* *
*/ */
public interface IASTEnumerator extends IASTOffsetableNamedElement, ISourceElementCallbackDelegate { public interface IASTEnumerator extends IASTOffsetableNamedElement, IASTNode, ISourceElementCallbackDelegate {
public IASTEnumerationSpecifier getOwnerEnumerationSpecifier(); public IASTEnumerationSpecifier getOwnerEnumerationSpecifier();
public IASTExpression getInitialValue(); public IASTExpression getInitialValue();

View file

@ -107,7 +107,7 @@ public interface IASTFactory
String name, String name,
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException; int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException;
public void addEnumerator( public IASTEnumerator addEnumerator(
IASTEnumerationSpecifier enumeration, IASTEnumerationSpecifier enumeration,
String string, String string,
int startingOffset, int startingOffset,

View file

@ -36,6 +36,7 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTDesignator; import org.eclipse.cdt.core.parser.ast.IASTDesignator;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause; import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification; import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
@ -2449,13 +2450,14 @@ public abstract class Parser extends ExpressionParser implements IParser
{ {
try try
{ {
astFactory.addEnumerator( IASTEnumerator enumerator = astFactory.addEnumerator(
enumeration, enumeration,
enumeratorIdentifier.getImage(), enumeratorIdentifier.getImage(),
enumeratorIdentifier.getOffset(), enumeratorIdentifier.getOffset(),
enumeratorIdentifier.getLineNumber(), enumeratorIdentifier.getLineNumber(),
enumeratorIdentifier.getOffset(), enumeratorIdentifier.getEndOffset(), enumeratorIdentifier.getOffset(), enumeratorIdentifier.getEndOffset(),
enumeratorIdentifier.getLineNumber(), lastToken.getEndOffset(), lastToken.getLineNumber(), initialValue); enumeratorIdentifier.getLineNumber(), lastToken.getEndOffset(), lastToken.getLineNumber(), initialValue);
endEnumerator(enumerator);
} }
catch (ASTSemanticException e1) catch (ASTSemanticException e1)
{ {
@ -2474,12 +2476,13 @@ public abstract class Parser extends ExpressionParser implements IParser
} }
try try
{ {
astFactory.addEnumerator( IASTEnumerator enumerator = astFactory.addEnumerator(
enumeration, enumeration,
enumeratorIdentifier.getImage(), enumeratorIdentifier.getImage(),
enumeratorIdentifier.getOffset(), enumeratorIdentifier.getOffset(),
enumeratorIdentifier.getLineNumber(), enumeratorIdentifier.getLineNumber(),
enumeratorIdentifier.getOffset(), enumeratorIdentifier.getEndOffset(), enumeratorIdentifier.getLineNumber(), lastToken.getEndOffset(), lastToken.getLineNumber(), initialValue); enumeratorIdentifier.getOffset(), enumeratorIdentifier.getEndOffset(), enumeratorIdentifier.getLineNumber(), lastToken.getEndOffset(), lastToken.getLineNumber(), initialValue);
endEnumerator(enumerator);
} }
catch (ASTSemanticException e1) catch (ASTSemanticException e1)
{ {
@ -3134,7 +3137,13 @@ public abstract class Parser extends ExpressionParser implements IParser
{ {
cleanupLastToken(); cleanupLastToken();
if( declaration instanceof IASTOffsetableNamedElement ) if( declaration instanceof IASTOffsetableNamedElement )
handleNode( (IASTOffsetableNamedElement) declaration ); handleOffsetableNamedElement( (IASTOffsetableNamedElement) declaration );
}
protected void endEnumerator( IASTEnumerator enumerator ) throws EndOfFileException
{
cleanupLastToken();
handleOffsetableNamedElement(enumerator);
} }
/** /**
@ -3155,6 +3164,6 @@ public abstract class Parser extends ExpressionParser implements IParser
/** /**
* @param expression * @param expression
*/ */
protected void handleNode(IASTOffsetableNamedElement node ) { protected void handleOffsetableNamedElement(IASTOffsetableNamedElement node ) {
} }
} }

View file

@ -25,6 +25,7 @@ import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration; import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTNode; import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
@ -274,7 +275,7 @@ public class SelectionParser extends ContextualParser {
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.Parser#handleNode(org.eclipse.cdt.core.parser.ast.IASTNode) * @see org.eclipse.cdt.internal.core.parser.Parser#handleNode(org.eclipse.cdt.core.parser.ast.IASTNode)
*/ */
protected void handleNode(IASTOffsetableNamedElement node) { protected void handleOffsetableNamedElement(IASTOffsetableNamedElement node) {
if( node != null ) if( node != null )
nodeTable.put( node, new Integer( getCurrentFileIndex()) ); nodeTable.put( node, new Integer( getCurrentFileIndex()) );
} }
@ -306,4 +307,16 @@ public class SelectionParser extends ContextualParser {
} }
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.Parser#endEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerator)
*/
protected void endEnumerator(IASTEnumerator enumerator) throws EndOfFileException {
if( ! tokenDupleCompleted() )
super.endEnumerator(enumerator);
else
{
contextNode = enumerator;
throw new EndOfFileException();
}
}
} }

View file

@ -1006,7 +1006,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int, org.eclipse.cdt.core.parser.ast.IASTExpression) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int, org.eclipse.cdt.core.parser.ast.IASTExpression)
*/ */
public void addEnumerator( public IASTEnumerator addEnumerator(
IASTEnumerationSpecifier enumeration, IASTEnumerationSpecifier enumeration,
String name, String name,
int startingOffset, int startingOffset,
@ -1029,7 +1029,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue ); ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator ); ((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator );
attachSymbolExtension( enumeratorSymbol, enumerator, true ); attachSymbolExtension( enumeratorSymbol, enumerator, true );
return enumerator;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExpression(org.eclipse.cdt.core.parser.ast.IASTExpression.Kind, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTExpression, java.lang.String, java.lang.String, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExpression(org.eclipse.cdt.core.parser.ast.IASTExpression.Kind, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTExpression, java.lang.String, java.lang.String, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor)

View file

@ -33,6 +33,7 @@ import org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer;
import org.eclipse.cdt.core.parser.ast.IASTDesignator; import org.eclipse.cdt.core.parser.ast.IASTDesignator;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification; import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTFactory; import org.eclipse.cdt.core.parser.ast.IASTFactory;
@ -339,7 +340,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
* java.lang.String, int, int, int, int, int, int, int, * java.lang.String, int, int, int, int, int, int, int,
* org.eclipse.cdt.core.parser.ast.IASTExpression) * org.eclipse.cdt.core.parser.ast.IASTExpression)
*/ */
public void addEnumerator( public IASTEnumerator addEnumerator(
IASTEnumerationSpecifier enumeration, IASTEnumerationSpecifier enumeration,
String string, String string,
int startingOffset, int startingOffset,
@ -351,7 +352,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int endLine, int endLine,
IASTExpression initialValue) IASTExpression initialValue)
throws ASTSemanticException { throws ASTSemanticException {
// TODO Auto-generated method stub return null;
} }

View file

@ -16,12 +16,13 @@ import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTExpression; import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets; import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
import org.eclipse.cdt.internal.core.parser.ast.complete.ASTNode;
/** /**
* @author jcamelon * @author jcamelon
* *
*/ */
public class ASTEnumerator public class ASTEnumerator extends ASTNode
implements IASTEnumerator, IASTOffsetableNamedElement implements IASTEnumerator, IASTOffsetableNamedElement
{ {
private final IASTExpression initialValue; private final IASTExpression initialValue;

View file

@ -148,10 +148,11 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int) * @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int)
*/ */
public void addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue) public IASTEnumerator addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue)
{ {
IASTEnumerator enumerator = new ASTEnumerator( enumeration, string, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue ); IASTEnumerator enumerator = new ASTEnumerator( enumeration, string, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator ); ((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator );
return enumerator;
} }
/* (non-Javadoc) /* (non-Javadoc)

View file

@ -15,10 +15,10 @@ import java.io.FileNotFoundException;
import java.io.FileReader; import java.io.FileReader;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICLogConstants; import org.eclipse.cdt.core.ICLogConstants;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.parser.IParser; import org.eclipse.cdt.core.parser.IParser;
import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoProvider; import org.eclipse.cdt.core.parser.IScannerInfoProvider;
@ -40,6 +40,7 @@ import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition; import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTNode; import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement; import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTVariable; import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.search.ICSearchConstants; import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope; import org.eclipse.cdt.core.search.ICSearchScope;
@ -47,20 +48,16 @@ import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.core.search.ICSearchConstants.SearchFor; import org.eclipse.cdt.core.search.ICSearchConstants.SearchFor;
import org.eclipse.cdt.internal.ui.editor.CEditor; import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.search.CSearchMessages; import org.eclipse.cdt.internal.ui.search.CSearchMessages;
import org.eclipse.cdt.internal.ui.search.CSearchOperation;
import org.eclipse.cdt.internal.ui.search.CSearchQuery; import org.eclipse.cdt.internal.ui.search.CSearchQuery;
import org.eclipse.cdt.internal.ui.search.CSearchResultCollector; import org.eclipse.cdt.internal.ui.search.CSearchResultCollector;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action; import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.search.ui.NewSearchUI; import org.eclipse.search.ui.NewSearchUI;
import org.eclipse.search.ui.SearchUI;
import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.IWorkbenchSite;
@ -92,7 +89,7 @@ public abstract class FindAction extends Action {
} }
//C or CPP? //C or CPP?
ParserLanguage language = CoreModel.getDefault().hasCCNature(currentProject) ? ParserLanguage.CPP : ParserLanguage.C; ParserLanguage language = CoreModel.hasCCNature(currentProject) ? ParserLanguage.CPP : ParserLanguage.C;
IParser parser = null; IParser parser = null;
FileReader reader = null; FileReader reader = null;
@ -153,8 +150,6 @@ public abstract class FindAction extends Action {
} }
public void run(IStructuredSelection sel){ public void run(IStructuredSelection sel){
ICElement tempElement = null;
IEditorPart temp = fSite.getPage().getActiveEditor(); IEditorPart temp = fSite.getPage().getActiveEditor();
CEditor cTemp = null; CEditor cTemp = null;
if (temp instanceof CEditor){ if (temp instanceof CEditor){
@ -205,13 +200,13 @@ public abstract class FindAction extends Action {
return; return;
} }
CSearchQuery job = createSearchQuery(selectedText.getText(),getSearchForFromNode((IASTNode)node)); CSearchQuery job = createSearchQuery(selectedText.getText(),getSearchForFromNode(node));
NewSearchUI.activateSearchResultView(); NewSearchUI.activateSearchResultView();
NewSearchUI.runQuery(job); NewSearchUI.runQuery(job);
} }
private SearchFor getSearchForFromNode(IASTNode node){ private SearchFor getSearchForFromNode(IASTOffsetableNamedElement node){
SearchFor searchFor = null; SearchFor searchFor = null;
if (node instanceof IASTClassSpecifier){ if (node instanceof IASTClassSpecifier){
@ -242,12 +237,13 @@ public abstract class FindAction extends Action {
else if (node instanceof IASTEnumerationSpecifier){ else if (node instanceof IASTEnumerationSpecifier){
searchFor = ICSearchConstants.ENUM; searchFor = ICSearchConstants.ENUM;
} }
else if (node instanceof IASTEnumerator){
searchFor = ICSearchConstants.FIELD;
}
else if (node instanceof IASTNamespaceDefinition){ else if (node instanceof IASTNamespaceDefinition){
searchFor = ICSearchConstants.NAMESPACE; searchFor = ICSearchConstants.NAMESPACE;
} }
else if( node instanceof IASTTypedefDeclaration)
searchFor = ICSearchConstants.TYPEDEF;
else if( node instanceof IASTEnumerator )
searchFor = ICSearchConstants.ENUMTOR;
return searchFor; return searchFor;
} }