From 04b2ae06b55390b809ff53099011bb514fe4eb69 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Tue, 10 Aug 2004 20:40:14 +0000 Subject: [PATCH] Add IASTQualifiedNameElement.getFullyQualifiedNameCharArrays() and modify Search to take advantage of the IAST providing char[]s. --- .../parser/ast/IASTQualifiedNameElement.java | 1 + .../parser/ast/ASTQualifiedNamedElement.java | 4 +++ .../ast/complete/ASTClassSpecifier.java | 3 +++ .../complete/ASTElaboratedTypeSpecifier.java | 4 ++- .../ast/complete/ASTEnumerationSpecifier.java | 3 +++ .../core/parser/ast/complete/ASTFunction.java | 3 +++ .../ast/complete/ASTNamespaceDefinition.java | 3 +++ .../core/parser/ast/complete/ASTTypedef.java | 3 +++ .../core/parser/ast/complete/ASTVariable.java | 3 +++ .../ast/quick/ASTElaboratedTypeSpecifier.java | 3 +++ .../core/parser/ast/quick/ASTFunction.java | 3 +++ .../ast/quick/ASTNamespaceDefinition.java | 3 +++ .../ast/quick/ASTTypedefDeclaration.java | 3 +++ .../core/parser/ast/quick/ASTVariable.java | 3 +++ .../core/search/matching/CSearchPattern.java | 6 +++-- .../matching/ClassDeclarationPattern.java | 17 +++++------- .../search/matching/DerivedTypesPattern.java | 14 +++------- .../matching/FieldDeclarationPattern.java | 26 +++++-------------- .../core/search/matching/FriendPattern.java | 20 ++++++-------- .../matching/MacroDeclarationPattern.java | 4 +-- .../matching/MethodDeclarationPattern.java | 13 +++------- .../matching/NamespaceDeclarationPattern.java | 10 +++---- 22 files changed, 78 insertions(+), 74 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java index 0f79f068ae8..38b4c5a7a4f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTQualifiedNameElement.java @@ -17,4 +17,5 @@ package org.eclipse.cdt.core.parser.ast; public interface IASTQualifiedNameElement { public String[] getFullyQualifiedName(); + public char[][] getFullyQualifiedNameCharArrays(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTQualifiedNamedElement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTQualifiedNamedElement.java index 1ac45da0c27..0da5133db54 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTQualifiedNamedElement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTQualifiedNamedElement.java @@ -73,6 +73,10 @@ public class ASTQualifiedNamedElement implements IASTQualifiedNameElement } return result; } + + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedNames; + } private final char[][] qualifiedNames; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java index 0f33341e70f..3493a4aa46d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java @@ -212,6 +212,9 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTScopedElement#getOwnerScope() */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java index f65971d4226..18ac8e85972 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java @@ -109,7 +109,9 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora { return qualifiedName.getFullyQualifiedName(); } - + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } public List getReferences() { return references; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java index af201796bd4..81dbec31626 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java @@ -124,6 +124,9 @@ public class ASTEnumerationSpecifier { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier#freeReferences(org.eclipse.cdt.core.parser.ast.IReferenceManager) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java index 2be12217173..5cbafd63856 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java @@ -160,6 +160,9 @@ public class ASTFunction extends ASTScope implements IASTFunction { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java index 6b5cb7f0147..c4f2c019ed3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java @@ -108,6 +108,9 @@ public class ASTNamespaceDefinition { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } public Iterator getDeclarations() { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java index 84c2f61abd3..3ef439fe320 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java @@ -115,6 +115,9 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration#getFinalTypeSpecifier() diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java index 9502dd36ebb..f021d728da3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java @@ -144,6 +144,9 @@ public class ASTVariable extends ASTSymbol implements IASTVariable { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTScopedElement#getOwnerScope() */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java index 7a248e1c3b6..f020749e82b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java @@ -81,6 +81,9 @@ public class ASTElaboratedTypeSpecifier extends ASTNode implements IASTElaborate { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java index 3c01d244a9b..1050d97a7d9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java @@ -148,6 +148,9 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java index 6b387710b99..63df6cc4bdd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java @@ -74,6 +74,9 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp { return qualifiedNameElement.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedNameElement.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java index 626536f0098..128f3a865a2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java @@ -75,6 +75,9 @@ public class ASTTypedefDeclaration extends ASTDeclaration implements IASTTypedef { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java index 07135a3bc45..545f488436c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java @@ -147,6 +147,9 @@ public class ASTVariable extends ASTDeclaration implements IASTVariable { return qualifiedName.getFullyQualifiedName(); } + public char[][] getFullyQualifiedNameCharArrays(){ + return qualifiedName.getFullyQualifiedNameCharArrays(); + } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#accept(org.eclipse.cdt.core.parser.ISourceElementRequestor) */ 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 1e87f6d5d47..dc801f1f3cf 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 @@ -630,11 +630,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte } return false; } - protected boolean matchQualifications( char[][] qualifications, char[][] candidate ){ + return matchQualifications( qualifications, candidate, false ); + } + protected boolean matchQualifications( char[][] qualifications, char[][] candidate, boolean skipLastName ){ int qualLength = qualifications != null ? qualifications.length : 0; - int candidateLength = candidate != null ? candidate.length : 0; + int candidateLength = candidate != null ? candidate.length - ( skipLastName ? 1 : 0 ) : 0; if( qualLength == 0 ){ return true; diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java index 7d6136005d9..3538e945944 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java @@ -86,32 +86,27 @@ public class ClassDeclarationPattern extends CSearchPattern { if( ! canAccept( limit ) ) return IMPOSSIBLE_MATCH; - String nodeName = null; + char[] nodeName = null; if (node instanceof IASTElaboratedTypeSpecifier) { - nodeName = ((IASTElaboratedTypeSpecifier)node).getName(); + nodeName = ((IASTElaboratedTypeSpecifier)node).getNameCharArray(); } else if( node instanceof IASTOffsetableNamedElement ) { - nodeName = ((IASTOffsetableNamedElement)node).getName(); + nodeName = ((IASTOffsetableNamedElement)node).getNameCharArray(); } else { return IMPOSSIBLE_MATCH; } //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, nodeName.toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, nodeName ) ){ return IMPOSSIBLE_MATCH; } if( node instanceof IASTQualifiedNameElement ){ - //create char[][] out of full name, - String [] fullName = ((IASTQualifiedNameElement) node).getFullyQualifiedName(); - char [][] qualName = new char [ fullName.length - 1 ][]; - for( int i = 0; i < fullName.length - 1; i++ ){ - qualName[i] = fullName[i].toCharArray(); - } + char [][] qualName = ((IASTQualifiedNameElement) node).getFullyQualifiedNameCharArrays(); //check containing scopes - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ return IMPOSSIBLE_MATCH; } } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java index fcee19b8938..69ca402e0c6 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java @@ -86,24 +86,16 @@ public class DerivedTypesPattern extends ClassDeclarationPattern { } catch (ASTNotImplementedException e) {} if (typeSpec instanceof IASTClassSpecifier){ IASTClassSpecifier baseClassSpec = (IASTClassSpecifier) typeSpec; - String[] baseFullyQualifiedName = baseClassSpec.getFullyQualifiedName(); - //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, baseClassSpec.getName().toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, baseClassSpec.getNameCharArray() ) ){ continue; } - - - char [][] qualName = new char [ baseFullyQualifiedName.length - 1 ][]; - for( int j = 0; j < baseFullyQualifiedName.length - 1; j++ ){ - qualName[j] = baseFullyQualifiedName[j].toCharArray(); - } + char [][] qualName = baseClassSpec.getFullyQualifiedNameCharArrays(); //check containing scopes - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ continue; } - matchFlag = true; break; } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java index 2949fc47811..8e7c1eaebfc 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java @@ -75,42 +75,30 @@ public class FieldDeclarationPattern extends CSearchPattern { } else return IMPOSSIBLE_MATCH; - String nodeName = ((IASTOffsetableNamedElement)node).getName(); + char[] nodeName = ((IASTOffsetableNamedElement)node).getNameCharArray(); //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, nodeName.toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, nodeName ) ){ return IMPOSSIBLE_MATCH; } //check containing scopes //create char[][] out of full name, - String [] fullName = null; - + char [][] qualName = null; if( node instanceof IASTEnumerator ){ //Enumerators don't derive from IASTQualifiedElement, so make the fullName //from the enumerations name. // 7.2 - 10 : each enumerator declared by an enum-specifier is declared in the //scope that immediately contains the enum-specifier. IASTEnumerationSpecifier enumeration = ((IASTEnumerator)node).getOwnerEnumerationSpecifier(); - fullName = enumeration.getFullyQualifiedName(); - - String[] enumeratorFullName = new String[ fullName.length ]; - - System.arraycopy( fullName, 0, enumeratorFullName, 0, fullName.length); - enumeratorFullName[ fullName.length - 1 ] = nodeName; - - fullName = enumeratorFullName; + qualName = enumeration.getFullyQualifiedNameCharArrays(); } else if( node instanceof IASTQualifiedNameElement ){ - fullName = ((IASTQualifiedNameElement) node).getFullyQualifiedName(); + qualName = ((IASTQualifiedNameElement) node).getFullyQualifiedNameCharArrays(); } - if( fullName != null ){ - char [][] qualName = new char [ fullName.length - 1 ][]; - for( int i = 0; i < fullName.length - 1; i++ ){ - qualName[i] = fullName[i].toCharArray(); - } + if( qualName != null ){ //check containing scopes - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ return IMPOSSIBLE_MATCH; } } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java index af85f37f183..83ebc71881d 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java @@ -76,37 +76,33 @@ public class FriendPattern extends ClassDeclarationPattern { Iterator i = tempNode.getFriends(); boolean matchFlag=false; - String[] fullName=null; + while (i.hasNext()){ Object friend = i.next(); - String[] baseFullyQualifiedName = null; + char [][] qualName = null; if (friend instanceof IASTClassSpecifier) { IASTClassSpecifier classSpec = (IASTClassSpecifier) friend; - baseFullyQualifiedName = classSpec.getFullyQualifiedName(); + qualName = classSpec.getFullyQualifiedNameCharArrays(); //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, classSpec.getName().toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, classSpec.getNameCharArray() ) ){ continue; } } else if (friend instanceof IASTElaboratedTypeSpecifier ){ IASTElaboratedTypeSpecifier elabType = (IASTElaboratedTypeSpecifier) friend; - baseFullyQualifiedName = elabType.getFullyQualifiedName(); + qualName = elabType.getFullyQualifiedNameCharArrays(); //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, elabType.getName().toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, elabType.getNameCharArray() ) ){ continue; } } - if (baseFullyQualifiedName != null){ - char [][] qualName = new char [ baseFullyQualifiedName.length - 1 ][]; - for( int j = 0; j < baseFullyQualifiedName.length - 1; j++ ){ - qualName[j] = baseFullyQualifiedName[j].toCharArray(); - } + if (qualName!= null){ //check containing scopes - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ continue; } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MacroDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MacroDeclarationPattern.java index 3a9ecdc1ec9..6eb949a4e44 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MacroDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MacroDeclarationPattern.java @@ -54,10 +54,10 @@ public class MacroDeclarationPattern extends CSearchPattern { return IMPOSSIBLE_MATCH; } - String nodeName = ((IASTOffsetableNamedElement)node).getName(); + char[] nodeName = ((IASTOffsetableNamedElement)node).getNameCharArray(); //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, nodeName.toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, nodeName ) ){ return IMPOSSIBLE_MATCH; } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java index d097eedada2..5aa009f3b1a 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java @@ -74,23 +74,18 @@ public class MethodDeclarationPattern extends CSearchPattern { } IASTFunction function = (IASTFunction) node; - String nodeName = function.getName(); + char[] nodeName = function.getNameCharArray(); //check name, if simpleName == null, its treated the same as "*" - if( simpleName != null && !matchesName( simpleName, nodeName.toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, nodeName ) ){ return IMPOSSIBLE_MATCH; } if( node instanceof IASTQualifiedNameElement ){ //create char[][] out of full name, - String [] fullName = ((IASTQualifiedNameElement) node).getFullyQualifiedName(); - char [][] qualName = new char [ fullName.length - 1 ][]; - for( int i = 0; i < fullName.length - 1; i++ ){ - qualName[i] = fullName[i].toCharArray(); - } - + char [][] qualName = ((IASTQualifiedNameElement) node).getFullyQualifiedNameCharArrays(); //check containing scopes - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ return IMPOSSIBLE_MATCH; } } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java index 952ff562d6c..54249b25c15 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java @@ -57,18 +57,14 @@ public class NamespaceDeclarationPattern extends CSearchPattern { IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)node; - if( simpleName != null && !matchesName( simpleName, namespace.getName().toCharArray() ) ){ + if( simpleName != null && !matchesName( simpleName, namespace.getNameCharArray() ) ){ return IMPOSSIBLE_MATCH; } //create char[][] out of full name, - String [] fullName = namespace.getFullyQualifiedName(); - char [] [] qualName = new char [ fullName.length - 1 ][]; - for( int i = 0; i < fullName.length - 1; i++ ){ - qualName[i] = fullName[i].toCharArray(); - } + char [] [] qualName = namespace.getFullyQualifiedNameCharArrays(); - if( !matchQualifications( qualifications, qualName ) ){ + if( !matchQualifications( qualifications, qualName, true ) ){ return IMPOSSIBLE_MATCH; }