mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Patch for Andrew Niefer
This patch is for the search. No new things can be searched yet, but this brings more things closer to being able to be searched. - Implemented decodeIndexEntry & matchIndexEntry for all patterns - changed MatchLocator to use a COMPLETE_PARSE. - added TYPE_ALL, FUNCTION_ALL, METHOD_ALL, NAMESPACE_ALL, FIELD_ALL constants to IIndexConstants - modified AbstractIndexer prefix functions to properly handle searching for all occurences
This commit is contained in:
parent
bcbcf4266c
commit
e312c1724b
12 changed files with 296 additions and 95 deletions
|
@ -1,4 +1,8 @@
|
||||||
2003-07-24 Andrew Niefer
|
2003-07-24 Andrew Niefer
|
||||||
|
- added TYPE_ALL, FUNCTION_ALL, METHOD_ALL, NAMESPACE_ALL, FIELD_ALL constants to IIndexConstants
|
||||||
|
- modified AbstractIndexer prefix functions to properly handle searching for all occurences
|
||||||
|
|
||||||
|
2003-07-23 Andrew Niefer
|
||||||
Modified
|
Modified
|
||||||
*index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java
|
*index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java
|
||||||
-changed so that the index prefixes contain the qualified names of the
|
-changed so that the index prefixes contain the qualified names of the
|
||||||
|
|
|
@ -244,11 +244,20 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
* Current encoding is optimized for queries: all classes
|
* Current encoding is optimized for queries: all classes
|
||||||
*/
|
*/
|
||||||
public static final char[] bestTypePrefix( LimitTo limitTo, char[] typeName, char[][] containingTypes, ASTClassKind classKind, int matchMode, boolean isCaseSensitive) {
|
public static final char[] bestTypePrefix( LimitTo limitTo, char[] typeName, char[][] containingTypes, ASTClassKind classKind, int matchMode, boolean isCaseSensitive) {
|
||||||
|
char [] prefix = null;
|
||||||
|
if( limitTo == DECLARATIONS ){
|
||||||
|
prefix = TYPE_DECL;
|
||||||
|
} else if( limitTo == REFERENCES ){
|
||||||
|
prefix = TYPE_REF;
|
||||||
|
} else {
|
||||||
|
return TYPE_ALL;
|
||||||
|
}
|
||||||
|
|
||||||
//Class kind not provided, best we can do
|
//Class kind not provided, best we can do
|
||||||
if (classKind == null){
|
if (classKind == null){
|
||||||
return TYPE_DECL;
|
return prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
char classType=CLASS_SUFFIX;
|
char classType=CLASS_SUFFIX;
|
||||||
if (classKind == ASTClassKind.STRUCT){
|
if (classKind == ASTClassKind.STRUCT){
|
||||||
classType = STRUCT_SUFFIX;
|
classType = STRUCT_SUFFIX;
|
||||||
|
@ -260,22 +269,19 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
classType = ENUM_SUFFIX;
|
classType = ENUM_SUFFIX;
|
||||||
}
|
}
|
||||||
|
|
||||||
char [] prefix = null;
|
|
||||||
if( limitTo == DECLARATIONS ){
|
|
||||||
prefix = TYPE_DECL;
|
|
||||||
} else if( limitTo == REFERENCES ){
|
|
||||||
prefix = TYPE_REF;
|
|
||||||
}
|
|
||||||
|
|
||||||
return bestPrefix( prefix, classType, typeName, containingTypes, matchMode, isCaseSensitive );
|
return bestPrefix( prefix, classType, typeName, containingTypes, matchMode, isCaseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final char[] bestNamespacePrefix(LimitTo limitTo, char[] namespaceName, char[][] containingTypes, int matchMode, boolean isCaseSensitive) {
|
public static final char[] bestNamespacePrefix(LimitTo limitTo, char[] namespaceName, char[][] containingTypes, int matchMode, boolean isCaseSensitive) {
|
||||||
char [] prefix = null;
|
char [] prefix = null;
|
||||||
if( limitTo == REFERENCES ){
|
if( limitTo == REFERENCES ){
|
||||||
prefix = NAMESPACE_REF;
|
prefix = NAMESPACE_REF;
|
||||||
} else {
|
} else if ( limitTo == DECLARATIONS ) {
|
||||||
prefix = NAMESPACE_DECL;
|
prefix = NAMESPACE_DECL;
|
||||||
|
} else {
|
||||||
|
return NAMESPACE_ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return bestPrefix( prefix, (char) 0, namespaceName, containingTypes, matchMode, isCaseSensitive );
|
return bestPrefix( prefix, (char) 0, namespaceName, containingTypes, matchMode, isCaseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,8 +289,10 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
char [] prefix = null;
|
char [] prefix = null;
|
||||||
if( limitTo == REFERENCES ){
|
if( limitTo == REFERENCES ){
|
||||||
prefix = TYPE_REF;
|
prefix = TYPE_REF;
|
||||||
} else {
|
} else if( limitTo == DECLARATIONS ){
|
||||||
prefix = TYPE_DECL;
|
prefix = TYPE_DECL;
|
||||||
|
} else {
|
||||||
|
return TYPE_ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return bestPrefix( prefix, VAR_SUFFIX, varName, null, matchMode, isCaseSenstive );
|
return bestPrefix( prefix, VAR_SUFFIX, varName, null, matchMode, isCaseSenstive );
|
||||||
|
@ -294,9 +302,12 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
char [] prefix = null;
|
char [] prefix = null;
|
||||||
if( limitTo == REFERENCES ){
|
if( limitTo == REFERENCES ){
|
||||||
prefix = FIELD_REF;
|
prefix = FIELD_REF;
|
||||||
} else {
|
} else if( limitTo == DECLARATIONS ){
|
||||||
prefix = FIELD_DECL;
|
prefix = FIELD_DECL;
|
||||||
}
|
} else {
|
||||||
|
return FIELD_ALL;
|
||||||
|
}
|
||||||
|
|
||||||
return bestPrefix( prefix, (char)0, fieldName, containingTypes, matchMode, isCaseSensitive );
|
return bestPrefix( prefix, (char)0, fieldName, containingTypes, matchMode, isCaseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,9 +315,15 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
char [] prefix = null;
|
char [] prefix = null;
|
||||||
if( limitTo == REFERENCES ){
|
if( limitTo == REFERENCES ){
|
||||||
prefix = METHOD_REF;
|
prefix = METHOD_REF;
|
||||||
} else {
|
} else if( limitTo == DECLARATIONS ){
|
||||||
prefix = METHOD_DECL;
|
prefix = METHOD_DECL;
|
||||||
}
|
} else if( limitTo == DEFINITIONS ){
|
||||||
|
//TODO prefix = METHOD_DEF;
|
||||||
|
return METHOD_ALL;
|
||||||
|
} else {
|
||||||
|
return METHOD_ALL;
|
||||||
|
}
|
||||||
|
|
||||||
return bestPrefix( prefix, (char)0, methodName, containingTypes, matchMode, isCaseSensitive );
|
return bestPrefix( prefix, (char)0, methodName, containingTypes, matchMode, isCaseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,9 +331,14 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
|
||||||
char [] prefix = null;
|
char [] prefix = null;
|
||||||
if( limitTo == REFERENCES ){
|
if( limitTo == REFERENCES ){
|
||||||
prefix = FUNCTION_REF;
|
prefix = FUNCTION_REF;
|
||||||
} else {
|
} else if( limitTo == DECLARATIONS ){
|
||||||
prefix = FUNCTION_DECL;
|
prefix = FUNCTION_DECL;
|
||||||
}
|
} else if ( limitTo == DEFINITIONS ){
|
||||||
|
//TODO prefix = FUNCTION_DEF;
|
||||||
|
return FUNCTION_ALL;
|
||||||
|
} else {
|
||||||
|
return FUNCTION_ALL;
|
||||||
|
}
|
||||||
return bestPrefix( prefix, (char)0, functionName, null, matchMode, isCaseSensitive );
|
return bestPrefix( prefix, (char)0, functionName, null, matchMode, isCaseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,25 +20,31 @@ public interface IIndexConstants {
|
||||||
|
|
||||||
char[] TYPE_REF= "typeRef/".toCharArray(); //$NON-NLS-1$
|
char[] TYPE_REF= "typeRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] TYPE_DECL = "typeDecl/".toCharArray(); //$NON-NLS-1$
|
char[] TYPE_DECL = "typeDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
char[] TYPE_ALL = "type".toCharArray(); //$NON-NLS-1$
|
||||||
int TYPE_DECL_LENGTH = 9;
|
int TYPE_DECL_LENGTH = 9;
|
||||||
|
|
||||||
char[] FUNCTION_REF= "functionRef/".toCharArray(); //$NON-NLS-1$
|
char[] FUNCTION_REF= "functionRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] FUNCTION_DECL= "functionDecl/".toCharArray(); //$NON-NLS-1$
|
char[] FUNCTION_DECL= "functionDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
char[] FUNCTION_ALL= "function".toCharArray(); //$NON-NLS-1$
|
||||||
int FUNCTION_DECL_LENGTH = 13;
|
int FUNCTION_DECL_LENGTH = 13;
|
||||||
|
|
||||||
char[] CONSTRUCTOR_REF= "constructorRef/".toCharArray(); //$NON-NLS-1$
|
char[] CONSTRUCTOR_REF= "constructorRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] CONSTRUCTOR_DECL= "constructorDecl/".toCharArray(); //$NON-NLS-1$
|
char[] CONSTRUCTOR_DECL= "constructorDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
|
||||||
char[] NAMESPACE_REF= "namespaceRef/".toCharArray(); //$NON-NLS-1$
|
char[] NAMESPACE_REF= "namespaceRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] NAMESPACE_DECL= "namespaceDecl/".toCharArray(); //$NON-NLS-1$
|
char[] NAMESPACE_DECL= "namespaceDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
char[] NAMESPACE_ALL = "namespace".toCharArray(); //$NON-NLS-1$
|
||||||
int NAMESPACE_DECL_LENGTH = 14;
|
int NAMESPACE_DECL_LENGTH = 14;
|
||||||
|
|
||||||
|
|
||||||
char[] FIELD_REF= "fieldRef/".toCharArray(); //$NON-NLS-1$
|
char[] FIELD_REF= "fieldRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] FIELD_DECL= "fieldDecl/".toCharArray(); //$NON-NLS-1$
|
char[] FIELD_DECL= "fieldDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
char[] FIELD_ALL= "field".toCharArray(); //$NON-NLS-1$
|
||||||
int FIELD_DECL_LENGTH = 10;
|
int FIELD_DECL_LENGTH = 10;
|
||||||
|
|
||||||
char[] METHOD_REF= "methodRef/".toCharArray(); //$NON-NLS-1$
|
char[] METHOD_REF= "methodRef/".toCharArray(); //$NON-NLS-1$
|
||||||
char[] METHOD_DECL= "methodDecl/".toCharArray(); //$NON-NLS-1$
|
char[] METHOD_DECL= "methodDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
char[] METHOD_ALL= "method".toCharArray(); //$NON-NLS-1$
|
||||||
int METHOD_DECL_LENGTH = 11;
|
int METHOD_DECL_LENGTH = 11;
|
||||||
|
|
||||||
char[] TYPEDEF_DECL = "typedefDecl/".toCharArray(); //$NON-NLS-1$
|
char[] TYPEDEF_DECL = "typedefDecl/".toCharArray(); //$NON-NLS-1$
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2003-07-24 Andrew Niefer
|
||||||
|
- Implemented decodeIndexEntry & matchIndexEntry for all patterns
|
||||||
|
- changed MatchLocator to use a COMPLETE_PARSE.
|
||||||
|
|
||||||
2003-07-23 Andrew Niefer
|
2003-07-23 Andrew Niefer
|
||||||
-Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate
|
-Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate
|
||||||
-Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate
|
-Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate
|
||||||
|
|
|
@ -354,25 +354,25 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean matchQualifications( char[][] qualifications, String [] fullyQualifiedName ){
|
protected boolean matchQualifications( char[][] qualifications, char[][] candidate ){
|
||||||
|
|
||||||
int qualLen = qualifications != null ? qualifications.length : 0;
|
int qualLength = qualifications != null ? qualifications.length : 0;
|
||||||
int fullLen = fullyQualifiedName != null ? fullyQualifiedName.length : 0;
|
int candidateLength = candidate != null ? candidate.length : 0;
|
||||||
|
|
||||||
if( qualLen == 0 ){
|
if( qualLength == 0 ){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int root = ( qualifications[0].length == 0 ) ? 1 : 0;
|
int root = ( qualifications[0].length == 0 ) ? 1 : 0;
|
||||||
|
|
||||||
if( (root == 1 && fullLen - 1 != qualLen - 1 ) ||
|
if( (root == 1 && candidateLength != qualLength - 1 ) ||
|
||||||
(root == 0 && fullLen - 1 < qualLen ) )
|
(root == 0 && candidateLength < qualLength ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( int i = 1; i <= qualLen - root; i++ ){
|
for( int i = 1; i <= qualLength - root; i++ ){
|
||||||
if( !matchesName( qualifications[ qualLen - i - root ], fullyQualifiedName[ fullLen - i - 1 ].toCharArray() ) ){
|
if( !matchesName( qualifications[ qualLength - i - root ], candidate[ candidateLength - i ] ) ){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,17 +45,16 @@ public class ClassDeclarationPattern extends CSearchPattern {
|
||||||
|
|
||||||
simpleName = caseSensitive ? name : CharOperation.toLowerCase( name );
|
simpleName = caseSensitive ? name : CharOperation.toLowerCase( name );
|
||||||
if( caseSensitive || containers == null ){
|
if( caseSensitive || containers == null ){
|
||||||
containingTypes = containers;
|
qualifications = containers;
|
||||||
} else {
|
} else {
|
||||||
int len = containers.length;
|
int len = containers.length;
|
||||||
this.containingTypes = new char[ len ][];
|
this.qualifications = new char[ len ][];
|
||||||
for( int i = 0; i < len; i++ ){
|
for( int i = 0; i < len; i++ ){
|
||||||
this.containingTypes[i] = CharOperation.toLowerCase( containers[i] );
|
this.qualifications[i] = CharOperation.toLowerCase( containers[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
classKind = kind;
|
classKind = kind;
|
||||||
limitTo = limit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int matchLevel( ISourceElementCallbackDelegate node ){
|
public int matchLevel( ISourceElementCallbackDelegate node ){
|
||||||
|
@ -70,10 +69,14 @@ public class ClassDeclarationPattern extends CSearchPattern {
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
String [] fullyQualifiedName = ((IASTQualifiedNameElement) node).getFullyQualifiedName();
|
//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();
|
||||||
|
}
|
||||||
//check containing scopes
|
//check containing scopes
|
||||||
if( !matchQualifications( containingTypes, fullyQualifiedName ) ){
|
if( !matchQualifications( qualifications, qualName ) ){
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,16 +97,15 @@ public class ClassDeclarationPattern extends CSearchPattern {
|
||||||
return simpleName;
|
return simpleName;
|
||||||
}
|
}
|
||||||
public char[] [] getContainingTypes () {
|
public char[] [] getContainingTypes () {
|
||||||
return containingTypes;
|
return qualifications;
|
||||||
}
|
}
|
||||||
public ASTClassKind getKind(){
|
public ASTClassKind getKind(){
|
||||||
return classKind;
|
return classKind;
|
||||||
}
|
}
|
||||||
|
|
||||||
private char[] simpleName;
|
private char[] simpleName;
|
||||||
private char[][] containingTypes;
|
private char[][] qualifications;
|
||||||
private ASTClassKind classKind;
|
private ASTClassKind classKind;
|
||||||
private LimitTo limitTo;
|
|
||||||
|
|
||||||
protected char[] decodedSimpleName;
|
protected char[] decodedSimpleName;
|
||||||
private char[][] decodedContainingTypes;
|
private char[][] decodedContainingTypes;
|
||||||
|
@ -129,26 +131,30 @@ public class ClassDeclarationPattern extends CSearchPattern {
|
||||||
protected void decodeIndexEntry(IEntryResult entryResult) {
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
char[] word = entryResult.getWord();
|
char[] word = entryResult.getWord();
|
||||||
int size = word.length;
|
int size = word.length;
|
||||||
|
|
||||||
this.decodedType = word[TYPE_DECL_LENGTH];
|
|
||||||
int oldSlash = TYPE_DECL_LENGTH+1;
|
|
||||||
int slash = CharOperation.indexOf(SEPARATOR, word, oldSlash+1);
|
|
||||||
|
|
||||||
this.decodedSimpleName = CharOperation.subarray(word, oldSlash+1, slash);
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
this.decodedType = word[ firstSlash + 1 ];
|
||||||
|
firstSlash += 2;
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf( SEPARATOR, word, firstSlash + 1 );
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray( word, firstSlash + 1, slash );
|
||||||
|
|
||||||
if (slash != -1){
|
if( slash != -1 && slash+1 < size ){
|
||||||
if (slash+1 < size){
|
char [][] temp = CharOperation.splitOn('/', CharOperation.subarray( word, slash + 1, size ));
|
||||||
this.decodedContainingTypes = CharOperation.splitOn('/', CharOperation.subarray(word, slash+1, size));
|
this.decodedContainingTypes = new char [ temp.length ][];
|
||||||
|
for( int i = 0; i < temp.length; i++ ){
|
||||||
|
this.decodedContainingTypes[ i ] = temp[ temp.length - i - 1 ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public char[] indexEntryPrefix() {
|
public char[] indexEntryPrefix() {
|
||||||
return AbstractIndexer.bestTypePrefix(
|
return AbstractIndexer.bestTypePrefix(
|
||||||
limitTo,
|
getLimitTo(),
|
||||||
simpleName,
|
simpleName,
|
||||||
containingTypes,
|
qualifications,
|
||||||
classKind,
|
classKind,
|
||||||
_matchMode,
|
_matchMode,
|
||||||
_caseSensitive
|
_caseSensitive
|
||||||
|
@ -156,36 +162,41 @@ public class ClassDeclarationPattern extends CSearchPattern {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
|
//check type matches
|
||||||
//TODO: BOG PUT QUALIFIER CHECKING BACK IN
|
if( classKind == null ){
|
||||||
// if (containingTypes != null){
|
//don't match variable entries
|
||||||
// // empty char[][] means no enclosing type (in which case, the decoded one is the empty char array)
|
if( decodedType == VAR_SUFFIX ){
|
||||||
// if (containingTypes.length == 0){
|
return false;
|
||||||
// if (decodedContainingTypes != CharOperation.NO_CHAR_CHAR) return false;
|
}
|
||||||
// } else {
|
} else if( classKind == ASTClassKind.CLASS ) {
|
||||||
// if (!CharOperation.equals(containingTypes, decodedContainingTypes, _caseSensitive)) return false;
|
if( decodedType != CLASS_SUFFIX ){
|
||||||
// }
|
return false;
|
||||||
// }
|
}
|
||||||
|
} else if ( classKind == ASTClassKind.STRUCT ) {
|
||||||
/* check simple name matches */
|
if( decodedType != STRUCT_SUFFIX ){
|
||||||
if (simpleName != null){
|
return false;
|
||||||
switch(_matchMode){
|
}
|
||||||
case EXACT_MATCH :
|
} else if ( classKind == ASTClassKind.UNION ) {
|
||||||
if (!CharOperation.equals(simpleName, decodedSimpleName, _caseSensitive)){
|
if( decodedType != UNION_SUFFIX ){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
} else if ( classKind == ASTClassKind.ENUM ) {
|
||||||
case PREFIX_MATCH :
|
if( decodedType != ENUM_SUFFIX ) {
|
||||||
if (!CharOperation.prefixEquals(simpleName, decodedSimpleName, _caseSensitive)){
|
return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PATTERN_MATCH :
|
|
||||||
if (!CharOperation.match(simpleName, decodedSimpleName, _caseSensitive)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check simple name matches */
|
||||||
|
if (simpleName != null){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !matchQualifications( qualifications, decodedContainingTypes ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ package org.eclipse.cdt.internal.core.search.matching;
|
||||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTField;
|
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
|
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
||||||
|
import org.eclipse.cdt.internal.core.search.CharOperation;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,8 +52,14 @@ public class FieldDeclarationPattern extends VariableDeclarationPattern {
|
||||||
}
|
}
|
||||||
|
|
||||||
//check containing scopes
|
//check containing scopes
|
||||||
String [] fullyQualifiedName = ((IASTQualifiedNameElement) node).getFullyQualifiedName();
|
//create char[][] out of full name,
|
||||||
if( !matchQualifications( qualifications, fullyQualifiedName ) ){
|
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();
|
||||||
|
}
|
||||||
|
//check containing scopes
|
||||||
|
if( !matchQualifications( qualifications, qualName ) ){
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,9 +70,40 @@ public class FieldDeclarationPattern extends VariableDeclarationPattern {
|
||||||
return AbstractIndexer.bestFieldPrefix( _limitTo, simpleName, qualifications, _matchMode, _caseSensitive );
|
return AbstractIndexer.bestFieldPrefix( _limitTo, simpleName, qualifications, _matchMode, _caseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
|
char[] word = entryResult.getWord();
|
||||||
|
int size = word.length;
|
||||||
|
|
||||||
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf(SEPARATOR, word, firstSlash + 1);
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray(word, firstSlash + 1, slash);
|
||||||
|
|
||||||
|
if( slash != -1 && slash+1 < size ){
|
||||||
|
char [][] temp = CharOperation.splitOn('/', CharOperation.subarray(word, slash+1, size));
|
||||||
|
this.decodedQualifications = new char [ temp.length ][];
|
||||||
|
for( int i = 0; i < temp.length; i++ ){
|
||||||
|
this.decodedQualifications[ i ] = temp[ temp.length - i - 1 ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
|
/* check simple name matches */
|
||||||
|
if (simpleName != null){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !matchQualifications( qualifications, decodedQualifications ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private char [][] qualifications;
|
private char [][] qualifications;
|
||||||
|
private char [][] decodedQualifications;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
||||||
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
||||||
|
import org.eclipse.cdt.internal.core.search.CharOperation;
|
||||||
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
|
|
||||||
|
@ -36,9 +37,12 @@ import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
*/
|
*/
|
||||||
public class FunctionDeclarationPattern extends CSearchPattern {
|
public class FunctionDeclarationPattern extends CSearchPattern {
|
||||||
|
|
||||||
|
protected char[] decodedSimpleName;
|
||||||
|
protected char[] simpleName;
|
||||||
|
|
||||||
protected char[][] parameterNames;
|
protected char[][] parameterNames;
|
||||||
|
|
||||||
protected char[] simpleName;
|
|
||||||
|
|
||||||
public FunctionDeclarationPattern(char[] name, char [][] params, int matchMode, LimitTo limitTo, boolean caseSensitive) {
|
public FunctionDeclarationPattern(char[] name, char [][] params, int matchMode, LimitTo limitTo, boolean caseSensitive) {
|
||||||
super( matchMode, caseSensitive, limitTo );
|
super( matchMode, caseSensitive, limitTo );
|
||||||
|
@ -109,8 +113,14 @@ public class FunctionDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
||||||
*/
|
*/
|
||||||
protected void decodeIndexEntry(IEntryResult entryResult) {
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
// TODO Auto-generated method stub
|
char[] word = entryResult.getWord();
|
||||||
|
int size = word.length;
|
||||||
|
|
||||||
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf( SEPARATOR, word, firstSlash + 1 );
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray(word, firstSlash + 1, slash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -124,7 +134,13 @@ public class FunctionDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
||||||
*/
|
*/
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
|
/* check simple name matches */
|
||||||
|
if (simpleName != null){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -298,7 +298,7 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants
|
||||||
}
|
}
|
||||||
|
|
||||||
IScanner scanner = ParserFactory.createScanner( reader, pathString, new ScannerInfo(), ParserMode.QUICK_PARSE, this );
|
IScanner scanner = ParserFactory.createScanner( reader, pathString, new ScannerInfo(), ParserMode.QUICK_PARSE, this );
|
||||||
IParser parser = ParserFactory.createParser( scanner, this, ParserMode.QUICK_PARSE );
|
IParser parser = ParserFactory.createParser( scanner, this, ParserMode.COMPLETE_PARSE );
|
||||||
|
|
||||||
parser.parse();
|
parser.parse();
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ package org.eclipse.cdt.internal.core.search.matching;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
|
||||||
import org.eclipse.cdt.core.parser.ast.*;
|
import org.eclipse.cdt.core.parser.ast.*;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
||||||
|
import org.eclipse.cdt.internal.core.search.CharOperation;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,6 +27,9 @@ import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
*/
|
*/
|
||||||
public class MethodDeclarationPattern extends FunctionDeclarationPattern {
|
public class MethodDeclarationPattern extends FunctionDeclarationPattern {
|
||||||
|
|
||||||
|
private char[][] decodedQualifications;
|
||||||
|
|
||||||
|
|
||||||
private char[][] qualifications;
|
private char[][] qualifications;
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,9 +48,14 @@ public class MethodDeclarationPattern extends FunctionDeclarationPattern {
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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();
|
||||||
|
}
|
||||||
//check containing scopes
|
//check containing scopes
|
||||||
String [] fullyQualifiedName = ((IASTQualifiedNameElement) node).getFullyQualifiedName();
|
if( !matchQualifications( qualifications, qualName ) ){
|
||||||
if( !matchQualifications( qualifications, fullyQualifiedName ) ){
|
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +66,37 @@ public class MethodDeclarationPattern extends FunctionDeclarationPattern {
|
||||||
return AbstractIndexer.bestMethodPrefix( _limitTo, simpleName, qualifications, _matchMode, _caseSensitive );
|
return AbstractIndexer.bestMethodPrefix( _limitTo, simpleName, qualifications, _matchMode, _caseSensitive );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
|
char[] word = entryResult.getWord();
|
||||||
|
int size = word.length;
|
||||||
|
|
||||||
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf( SEPARATOR, word, firstSlash + 1 );
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray(word, firstSlash + 1, slash);
|
||||||
|
|
||||||
|
if( slash != -1 && slash+1 < size ){
|
||||||
|
char [][] temp = CharOperation.splitOn('/', CharOperation.subarray(word, slash + 1, size));
|
||||||
|
this.decodedQualifications = new char [ temp.length ][];
|
||||||
|
for( int i = 0; i < temp.length; i++ ){
|
||||||
|
this.decodedQualifications[ i ] = temp[ temp.length - i - 1 ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
|
/* check simple name matches */
|
||||||
|
if (simpleName != null){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !matchQualifications( qualifications, decodedQualifications ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
||||||
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
||||||
|
import org.eclipse.cdt.internal.core.search.CharOperation;
|
||||||
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
|
|
||||||
|
@ -39,11 +40,11 @@ public class NamespaceDeclarationPattern extends CSearchPattern {
|
||||||
* @param limitTo
|
* @param limitTo
|
||||||
* @param caseSensitive
|
* @param caseSensitive
|
||||||
*/
|
*/
|
||||||
public NamespaceDeclarationPattern(char[] name, char[][] qualifications, int matchMode, LimitTo limitTo, boolean caseSensitive) {
|
public NamespaceDeclarationPattern(char[] name, char[][] quals, int matchMode, LimitTo limitTo, boolean caseSensitive) {
|
||||||
super( matchMode, caseSensitive, limitTo );
|
super( matchMode, caseSensitive, limitTo );
|
||||||
|
|
||||||
_name = name;
|
simpleName = name;
|
||||||
_qualifications = qualifications;
|
qualifications = quals;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -55,19 +56,29 @@ public class NamespaceDeclarationPattern extends CSearchPattern {
|
||||||
|
|
||||||
IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)node;
|
IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)node;
|
||||||
|
|
||||||
if( _name != null && !matchesName( _name, namespace.getName().toCharArray() ) ){
|
if( simpleName != null && !matchesName( simpleName, namespace.getName().toCharArray() ) ){
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !matchQualifications( _qualifications, namespace.getFullyQualifiedName() ) ){
|
//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();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !matchQualifications( qualifications, qualName ) ){
|
||||||
return IMPOSSIBLE_MATCH;
|
return IMPOSSIBLE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ACCURATE_MATCH;
|
return ACCURATE_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
private char[][] _qualifications;
|
private char[][] decodedContainingTypes;
|
||||||
private char[] _name;
|
private char[] decodedSimpleName;
|
||||||
|
private char[][] qualifications;
|
||||||
|
private char[] simpleName;
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#feedIndexRequestor(org.eclipse.cdt.internal.core.search.IIndexSearchRequestor, int, int[], org.eclipse.cdt.internal.core.index.impl.IndexInput, org.eclipse.cdt.core.search.ICSearchScope)
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#feedIndexRequestor(org.eclipse.cdt.internal.core.search.IIndexSearchRequestor, int, int[], org.eclipse.cdt.internal.core.index.impl.IndexInput, org.eclipse.cdt.core.search.ICSearchScope)
|
||||||
*/
|
*/
|
||||||
|
@ -80,8 +91,23 @@ public class NamespaceDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
||||||
*/
|
*/
|
||||||
protected void decodeIndexEntry(IEntryResult entryResult) {
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
// TODO Auto-generated method stub
|
char[] word = entryResult.getWord();
|
||||||
|
int size = word.length;
|
||||||
|
|
||||||
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf(SEPARATOR, word, firstSlash + 1);
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray(word, firstSlash+1, slash);
|
||||||
|
|
||||||
|
if( slash != -1 && slash+1 < size ){
|
||||||
|
char [][] temp = CharOperation.splitOn('/', CharOperation.subarray(word, slash+1, size));
|
||||||
|
this.decodedContainingTypes = new char [ temp.length ][];
|
||||||
|
for( int i = 0; i < temp.length; i++ ){
|
||||||
|
this.decodedContainingTypes[ i ] = temp[ temp.length - i - 1 ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -90,8 +116,8 @@ public class NamespaceDeclarationPattern extends CSearchPattern {
|
||||||
public char[] indexEntryPrefix() {
|
public char[] indexEntryPrefix() {
|
||||||
return AbstractIndexer.bestNamespacePrefix(
|
return AbstractIndexer.bestNamespacePrefix(
|
||||||
_limitTo,
|
_limitTo,
|
||||||
_name,
|
simpleName,
|
||||||
_qualifications,
|
qualifications,
|
||||||
_matchMode, _caseSensitive
|
_matchMode, _caseSensitive
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +125,17 @@ public class NamespaceDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
||||||
*/
|
*/
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
// TODO Auto-generated method stub
|
/* check simple name matches */
|
||||||
|
if( simpleName != null ){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !matchQualifications( qualifications, decodedContainingTypes ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.eclipse.cdt.core.parser.ast.IASTVariable;
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
import org.eclipse.cdt.internal.core.index.IEntryResult;
|
||||||
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
import org.eclipse.cdt.internal.core.index.impl.IndexInput;
|
||||||
|
import org.eclipse.cdt.internal.core.search.CharOperation;
|
||||||
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
import org.eclipse.cdt.internal.core.search.IIndexSearchRequestor;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
|
||||||
|
|
||||||
|
@ -74,8 +75,17 @@ public class VariableDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#decodeIndexEntry(org.eclipse.cdt.internal.core.index.IEntryResult)
|
||||||
*/
|
*/
|
||||||
protected void decodeIndexEntry(IEntryResult entryResult) {
|
protected void decodeIndexEntry(IEntryResult entryResult) {
|
||||||
// TODO Auto-generated method stub
|
char[] word = entryResult.getWord();
|
||||||
|
int size = word.length;
|
||||||
|
|
||||||
|
int firstSlash = CharOperation.indexOf( SEPARATOR, word, 0 );
|
||||||
|
|
||||||
|
this.decodedType = word[ firstSlash + 1 ];
|
||||||
|
firstSlash += 2;
|
||||||
|
|
||||||
|
int slash = CharOperation.indexOf(SEPARATOR, word, firstSlash + 1);
|
||||||
|
|
||||||
|
this.decodedSimpleName = CharOperation.subarray(word, firstSlash + 1, slash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -93,9 +103,22 @@ public class VariableDeclarationPattern extends CSearchPattern {
|
||||||
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
* @see org.eclipse.cdt.internal.core.search.matching.CSearchPattern#matchIndexEntry()
|
||||||
*/
|
*/
|
||||||
protected boolean matchIndexEntry() {
|
protected boolean matchIndexEntry() {
|
||||||
|
if( decodedType != VAR_SUFFIX ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check simple name matches */
|
||||||
|
if (simpleName != null){
|
||||||
|
if( ! matchesName( simpleName, decodedSimpleName ) ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected char [] simpleName;
|
protected char [] simpleName;
|
||||||
|
protected char [] decodedSimpleName;
|
||||||
|
protected char decodedType;
|
||||||
|
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue