Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogdan Gheorghe2005-06-15 21:51:29 +0000
committerBogdan Gheorghe2005-06-15 21:51:29 +0000
commit3eb94cf34a94a734c3f7b7c95c2f7e7f1911e23b (patch)
tree362b3fa84107e31b544109cdef0500f5643dfcbb
parentbed6b31350e04a53c25600a510bdd19f30d71005 (diff)
downloadorg.eclipse.cdt-3eb94cf34a94a734c3f7b7c95c2f7e7f1911e23b.tar.gz
org.eclipse.cdt-3eb94cf34a94a734c3f7b7c95c2f7e7f1911e23b.tar.xz
org.eclipse.cdt-3eb94cf34a94a734c3f7b7c95c2f7e7f1911e23b.zip
Fix for Bug 100191
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java4
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java28
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java28
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java2
5 files changed, 61 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java
index c98efdc5214..4b415e7098a 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/ICSearchConstants.java
@@ -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 */
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
index e0263d039c3..85158166b8b 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
@@ -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 ){
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
index 88a53da7568..df73c8b86a8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchUtil.java
@@ -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 */
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java
index 77464c037b1..2c7906874d0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindAction.java
@@ -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();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java
index 9e3e9e33b84..18af6225c7c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/FindDeclarationsAction.java
@@ -68,6 +68,6 @@ public class FindDeclarationsAction extends FindAction {
*/
protected LimitTo getLimitTo() {
// TODO Auto-generated method stub
- return ICSearchConstants.DECLARATIONS;
+ return ICSearchConstants.DECLARATIONS_DEFINITIONS;
}
}

Back to the top