1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fix for Bug 100191

This commit is contained in:
Bogdan Gheorghe 2005-06-15 21:51:29 +00:00
parent bed6b31350
commit 3eb94cf34a
5 changed files with 61 additions and 4 deletions

View file

@ -143,6 +143,10 @@ public interface ICSearchConstants {
*/
public static final LimitTo ALL_OCCURRENCES = new LimitTo( 3 );
/**
* The search result is a declaration or a definitoin
*/
public static final LimitTo DECLARATIONS_DEFINITIONS = new LimitTo( 4 );
/* Syntactic match modes */

View file

@ -175,6 +175,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
return orPattern;
}
if( limitTo == DECLARATIONS_DEFINITIONS ){
OrPattern orPattern = new OrPattern();
orPattern.addPattern( createNamespacePattern( patternString, DECLARATIONS, matchMode, caseSensitive ) );
orPattern.addPattern( createNamespacePattern( patternString, DEFINITIONS, matchMode, caseSensitive ) );
return orPattern;
}
char [] patternArray = patternString.toCharArray();
IScanner scanner = null;
@ -248,6 +255,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
return orPattern;
}
if( limitTo == DECLARATIONS_DEFINITIONS ){
OrPattern orPattern = new OrPattern();
orPattern.addPattern( createFieldPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
orPattern.addPattern( createFieldPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
return orPattern;
}
char [] patternArray = patternString.toCharArray();
Requestor callback = new Requestor( ParserMode.COMPLETE_PARSE );
IScanner scanner=null;
@ -286,7 +299,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
orPattern.addPattern( createMethodPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
return orPattern;
}
if( limitTo == DECLARATIONS_DEFINITIONS ){
OrPattern orPattern = new OrPattern();
orPattern.addPattern( createMethodPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
orPattern.addPattern( createMethodPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
return orPattern;
}
int index = patternString.indexOf( '(' );
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
@ -333,6 +352,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
orPattern.addPattern( createClassPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
orPattern.addPattern( createClassPattern( patternString, searchFor, REFERENCES, matchMode, caseSensitive ) );
return orPattern;
}
if ( limitTo == DECLARATIONS_DEFINITIONS ) {
OrPattern orPattern = new OrPattern();
orPattern.addPattern( createClassPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
orPattern.addPattern( createClassPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
return orPattern;
}
if( searchFor == CLASS_STRUCT ){

View file

@ -129,7 +129,8 @@ public class CSearchUtil {
case ICElement.C_UNION: searchFor = ICSearchConstants.UNION; break;
case ICElement.C_ENUMERATOR: /* fall through to FIELD */
case ICElement.C_ENUMERATOR:
searchFor = ICSearchConstants.ENUMTOR; break;
case ICElement.C_FIELD: searchFor = ICSearchConstants.FIELD; break;
case ICElement.C_TEMPLATE_METHOD : /*fall through to METHOD */

View file

@ -76,6 +76,7 @@ public abstract class FindAction extends SelectionParseAction {
return new DOMQuery(DOMSearchUtil.getSearchPattern(name), name, limitTo, scope);
}
/**
* This is a convenience method and is the same as invoking:
* createDOMSearchQueryForName( name, limitTo, scope, null );
@ -110,7 +111,7 @@ public abstract class FindAction extends SelectionParseAction {
ICElement element = (ICElement) obj;
CSearchQuery job = createSearchQuery( element.getElementName(), CSearchUtil.getSearchForFromElement(element));
CSearchQuery job = createSearchQuery( getFullyQualifiedName(element), CSearchUtil.getSearchForFromElement(element));
NewSearchUI.activateSearchResultView();
NewSearchUI.runQueryInBackground(job);
@ -292,6 +293,31 @@ public abstract class FindAction extends SelectionParseAction {
}
};
private String getFullyQualifiedName(ICElement element){
StringBuffer fullName = new StringBuffer(element.getElementName());
while (element.getElementType() != 0){
element = element.getParent();
//Keep going up CModel until we hit Translation Unit
//or Working Copy (both represented by C_UNIT) or hit a null
if (element.getElementType() == ICElement.C_UNIT ||
element == null){
fullName.insert(0,"::");
break;
}
else if (element.getElementType() != ICElement.C_ENUMERATION){
//get the parent name as long as it is not an enumeration - enumerators
//don't use the enumeration name as part of the fully qualified name
fullName.insert(0,"::");
fullName.insert(0,element.getElementName());
}
}
return fullName.toString();
}
abstract protected String getScopeDescription();
abstract protected ICSearchScope getScope();

View file

@ -68,6 +68,6 @@ public class FindDeclarationsAction extends FindAction {
*/
protected LimitTo getLimitTo() {
// TODO Auto-generated method stub
return ICSearchConstants.DECLARATIONS;
return ICSearchConstants.DECLARATIONS_DEFINITIONS;
}
}