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

Modified indexer friend encoding to encode IASTElaboratedTypeSpecifier

This commit is contained in:
Bogdan Gheorghe 2004-05-07 16:37:35 +00:00
parent 21b56220d7
commit 2f19221ac0
3 changed files with 49 additions and 5 deletions

View file

@ -1,3 +1,6 @@
2004-05-07 Bogdan Gheorghe
Modified indexer friend encoding to encode IASTElaboratedTypeSpecifier
2004-05-06 Bogdan Gheorghe 2004-05-06 Bogdan Gheorghe
Modified AbstractIndexer to encode friends, add friends constant to IIndexConstants, Modified AbstractIndexer to encode friends, add friends constant to IIndexConstants,
modified SourceIndexerRequestor to add class specifier on exit instead of enter in order modified SourceIndexerRequestor to add class specifier on exit instead of enter in order

View file

@ -88,6 +88,11 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
String[] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedName(); String[] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedName();
this.output.addRef(encodeTypeEntry(baseFullyQualifiedName,FRIEND,ICSearchConstants.DECLARATIONS)); this.output.addRef(encodeTypeEntry(baseFullyQualifiedName,FRIEND,ICSearchConstants.DECLARATIONS));
} }
else if (decl instanceof IASTElaboratedTypeSpecifier){
IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
String[] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedName();
this.output.addRef(encodeTypeEntry(baseFullyQualifiedName,FRIEND,ICSearchConstants.DECLARATIONS));
}
else if (decl instanceof IASTFunction){ else if (decl instanceof IASTFunction){
} }
@ -115,6 +120,28 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
} catch (ASTNotImplementedException e) {} } catch (ASTNotImplementedException e) {}
} }
// Get friends
Iterator friends = classSpecification.getFriends();
while (friends.hasNext()){
Object decl = friends.next();
if (decl instanceof IASTClassSpecifier){
IASTClassSpecifier friendClassSpec = (IASTClassSpecifier) decl;
String[] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedName();
this.output.addRef(encodeTypeEntry(baseFullyQualifiedName,FRIEND,ICSearchConstants.DECLARATIONS));
}
else if (decl instanceof IASTElaboratedTypeSpecifier){
IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
String[] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedName();
this.output.addRef(encodeTypeEntry(baseFullyQualifiedName,FRIEND,ICSearchConstants.DECLARATIONS));
}
else if (decl instanceof IASTFunction){
}
else if (decl instanceof IASTMethod){
//
}
}
this.output.addRef(encodeTypeEntry(classSpecification.getFullyQualifiedName(),STRUCT, ICSearchConstants.DECLARATIONS)); this.output.addRef(encodeTypeEntry(classSpecification.getFullyQualifiedName(),STRUCT, ICSearchConstants.DECLARATIONS));
} }
else if (classSpecification.getClassKind().equals(ASTClassKind.UNION)) else if (classSpecification.getClassKind().equals(ASTClassKind.UNION))

View file

@ -12,6 +12,7 @@ import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer; import org.eclipse.cdt.internal.core.search.indexing.AbstractIndexer;
@ -67,20 +68,31 @@ public class FriendPattern extends ClassDeclarationPattern {
Iterator i = tempNode.getFriends(); Iterator i = tempNode.getFriends();
boolean matchFlag=false; boolean matchFlag=false;
String[] fullName=null;
while (i.hasNext()){ while (i.hasNext()){
Object friend = i.next(); Object friend = i.next();
String[] baseFullyQualifiedName = null;
if (friend instanceof IASTClassSpecifier) if (friend instanceof IASTClassSpecifier)
{ {
IASTClassSpecifier classSpec = (IASTClassSpecifier) friend; IASTClassSpecifier classSpec = (IASTClassSpecifier) friend;
String[] baseFullyQualifiedName = classSpec.getFullyQualifiedName(); baseFullyQualifiedName = classSpec.getFullyQualifiedName();
//check name, if simpleName == null, its treated the same as "*" //check name, if simpleName == null, its treated the same as "*"
if( simpleName != null && !matchesName( simpleName, classSpec.getName().toCharArray() ) ){ if( simpleName != null && !matchesName( simpleName, classSpec.getName().toCharArray() ) ){
continue; continue;
} }
}
else if (friend instanceof IASTElaboratedTypeSpecifier ){
IASTElaboratedTypeSpecifier elabType = (IASTElaboratedTypeSpecifier) friend;
baseFullyQualifiedName = elabType.getFullyQualifiedName();
//check name, if simpleName == null, its treated the same as "*"
if( simpleName != null && !matchesName( simpleName, elabType.getName().toCharArray() ) ){
continue;
}
}
if (baseFullyQualifiedName != null){
char [][] qualName = new char [ baseFullyQualifiedName.length - 1 ][]; char [][] qualName = new char [ baseFullyQualifiedName.length - 1 ][];
for( int j = 0; j < baseFullyQualifiedName.length - 1; j++ ){ for( int j = 0; j < baseFullyQualifiedName.length - 1; j++ ){
qualName[j] = baseFullyQualifiedName[j].toCharArray(); qualName[j] = baseFullyQualifiedName[j].toCharArray();
@ -102,4 +114,6 @@ public class FriendPattern extends ClassDeclarationPattern {
return IMPOSSIBLE_MATCH; return IMPOSSIBLE_MATCH;
} }
} }