1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-13 20:15:22 +02:00

Fix for Bug 59493: need to refine index query for open-type (2.0 Stream)

This commit is contained in:
Bogdan Gheorghe 2004-08-11 20:05:35 +00:00
parent 16258395c2
commit 4fd44238b9
12 changed files with 509 additions and 418 deletions

View file

@ -1,3 +1,6 @@
2004-08-11 Bogdan Gheorghe
Modified indexer test to work with new forward declaration encoding.
2004-08-03 Bogdan Gheorghe
Updated indexer and dependency tests to work for indexing standalone headers

View file

@ -425,7 +425,7 @@ public class IndexManagerTests extends TestCase {
IIndex ind = indexManager.getIndex(testProjectPath,true,true);
assertTrue("Index exists for project",ind != null);
String [] typeRefEntryResultModel ={"EntryResult: word=typeRef/C/C/B/A, refs={ 1 }", "EntryResult: word=typeRef/C/ForwardA/A, refs={ 1 }", "EntryResult: word=typeRef/E/e1/B/A, refs={ 1 }", "EntryResult: word=typeRef/V/x/B/A, refs={ 1 }"};
String [] typeRefEntryResultModel ={"EntryResult: word=typeRef/C/C/B/A, refs={ 1 }", "EntryResult: word=typeRef/E/e1/B/A, refs={ 1 }", "EntryResult: word=typeRef/G/ForwardA/A, refs={ 1 }", "EntryResult: word=typeRef/V/x/B/A, refs={ 1 }"};
IEntryResult[] typerefresults = ind.queryEntries(IIndexConstants.TYPE_REF);
assertTrue("Entry exists",typerefresults != null);
@ -558,10 +558,10 @@ public class IndexManagerTests extends TestCase {
assertTrue("Index exists for project",ind != null);
//IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/C/ForwardA/A".toCharArray());
IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/C/ForwardA/A".toCharArray());
IEntryResult[] fwdDclResults = ind.queryEntries("typeDecl/G/ForwardA/A".toCharArray());
assertTrue("Entry exists",fwdDclResults != null);
String [] fwdDclModel = {"EntryResult: word=typeDecl/C/ForwardA/A, refs={ 1 }"};
String [] fwdDclModel = {"EntryResult: word=typeDecl/G/ForwardA/A, refs={ 1 }"};
if (fwdDclResults.length != fwdDclModel.length)
fail("Entry Result length different from model for forward declarations");
@ -571,10 +571,10 @@ public class IndexManagerTests extends TestCase {
assertEquals(fwdDclModel[i],fwdDclResults[i].toString());
}
IEntryResult[] fwdDclRefResults = ind.queryEntries("typeRef/C/ForwardA/A".toCharArray());
IEntryResult[] fwdDclRefResults = ind.queryEntries("typeRef/G/ForwardA/A".toCharArray());
assertTrue("Entry exists", fwdDclRefResults!= null);
String [] fwdDclRefModel = {"EntryResult: word=typeRef/C/ForwardA/A, refs={ 1 }"};
String [] fwdDclRefModel = {"EntryResult: word=typeRef/G/ForwardA/A, refs={ 1 }"};
if (fwdDclRefResults.length != fwdDclRefModel.length)
fail("Entry Result length different from model for forward declarations refs");

View file

@ -1,3 +1,10 @@
2004-08-11 Bogdan Gheorghe
Fix for Bug 59493: need to refine index query for open-type
* index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java
* index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java
* index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
2004-08-03 Bogdan Gheorghe
Fix for Bug 60948: Indexer should pick up all headers in include path

View file

@ -51,6 +51,9 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
final static int TYPEDEF = 6;
final static int DERIVED = 7;
final static int FRIEND = 8;
final static int FWD_CLASS = 9;
final static int FWD_STRUCT = 10;
final static int FWD_UNION = 11;
public static boolean VERBOSE = false;
@ -241,15 +244,15 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
public void addElaboratedForwardDeclaration(IASTElaboratedTypeSpecifier elaboratedType) {
if (elaboratedType.getClassKind().equals(ASTClassKind.CLASS))
{
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),CLASS, ICSearchConstants.DECLARATIONS));
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_CLASS, ICSearchConstants.DECLARATIONS));
}
else if (elaboratedType.getClassKind().equals(ASTClassKind.STRUCT))
{
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),STRUCT, ICSearchConstants.DECLARATIONS));
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_STRUCT, ICSearchConstants.DECLARATIONS));
}
else if (elaboratedType.getClassKind().equals(ASTClassKind.UNION))
{
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),UNION, ICSearchConstants.DECLARATIONS));
this.output.addRef(encodeTypeEntry(elaboratedType.getFullyQualifiedNameCharArrays(),FWD_UNION, ICSearchConstants.DECLARATIONS));
}
}
@ -336,6 +339,32 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
this.output.addRef(encodeTypeEntry(fullyQualifiedName,UNION,ICSearchConstants.REFERENCES));
}
}
public void addForwardClassReference(IASTTypeSpecifier reference){
char[][] fullyQualifiedName = null;
ASTClassKind classKind = null;
if (reference instanceof IASTElaboratedTypeSpecifier){
IASTElaboratedTypeSpecifier typeRef = (IASTElaboratedTypeSpecifier) reference;
fullyQualifiedName = typeRef.getFullyQualifiedNameCharArrays();
classKind = typeRef.getClassKind();
}
if (classKind == null)
return;
if (classKind.equals(ASTClassKind.CLASS))
{
this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_CLASS, ICSearchConstants.REFERENCES));
}
else if (classKind.equals(ASTClassKind.STRUCT))
{
this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_STRUCT,ICSearchConstants.REFERENCES));
}
else if (classKind.equals(ASTClassKind.UNION))
{
this.output.addRef(encodeTypeEntry(fullyQualifiedName,FWD_UNION,ICSearchConstants.REFERENCES));
}
}
/**
* Type entries are encoded as follow: 'typeDecl/' ('C' | 'S' | 'U' | 'E' ) '/' TypeName ['/' Qualifier]*
*/
@ -391,6 +420,18 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
case(FRIEND):
result[pos++]=FRIEND_SUFFIX;
break;
case(FWD_CLASS):
result[pos++]=FWD_CLASS_SUFFIX;
break;
case (FWD_STRUCT):
result[pos++]=FWD_STRUCT_SUFFIX;
break;
case (FWD_UNION):
result[pos++]=FWD_UNION_SUFFIX;
break;
}
result[pos++] = SEPARATOR;
//Encode in the following manner
@ -509,6 +550,12 @@ public abstract class AbstractIndexer implements IIndexer, IIndexConstants, ICSe
classType = DERIVED_SUFFIX;
} else if ( searchFor == ICSearchConstants.FRIEND){
classType = FRIEND_SUFFIX;
} else if ( searchFor == ICSearchConstants.FWD_CLASS) {
classType = FWD_CLASS_SUFFIX;
} else if ( searchFor == ICSearchConstants.FWD_STRUCT) {
classType = FWD_STRUCT_SUFFIX;
} else if ( searchFor == ICSearchConstants.FWD_UNION) {
classType = FWD_UNION_SUFFIX;
} else {
//could be TYPE or CLASS_STRUCT, best we can do for these is the prefix
return prefix;

View file

@ -105,6 +105,9 @@ public interface IIndexConstants {
char TYPEDEF_SUFFIX = 'T';
char DERIVED_SUFFIX = 'D';
char FRIEND_SUFFIX = 'F';
char FWD_CLASS_SUFFIX = 'G';
char FWD_STRUCT_SUFFIX = 'H';
char FWD_UNION_SUFFIX = 'I';
char TYPE_SUFFIX = 0;
char SEPARATOR= '/';

View file

@ -364,8 +364,8 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
indexer.addClassReference((IASTClassSpecifier)reference.getReferencedElement());
else if (reference.getReferencedElement() instanceof IASTElaboratedTypeSpecifier)
{
indexer.addClassReference((IASTTypeSpecifier) reference.getReferencedElement());
}
indexer.addForwardClassReference((IASTTypeSpecifier) reference.getReferencedElement());
}
}
/* (non-Javadoc)

View file

@ -1,399 +1,408 @@
2004-06-25 Bogdan Gheorghe
Indirect fix for Bug 65551: [Search] Search for Variable references should not include parameters
Instead of excluding parameter references from searches, added parm declarations to the index (for
both functions and methods)
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
* index/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-25 Bogdan Gheorghe
Fix for 68550: [Indexer] Cannot restart indexer by touching .c/.cpp/.cc files
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
* index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
2004-06-24 Bogdan Gheorghe
Fix for 66695: [Indexer] Manually add an include path to a file/folder
is ignored by indexer
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-22 Alain Magloire
Part of PR 68246.
Close the inputstream to release resource handle
when we done with it, we can not rely on the GC to do it for us.
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-21 Bogdan Gheorghe
Modified JobManager to change state from waiting to enabled on a job request.
2004-06-11 Andrew Niefer
fix bugs 43063 & 43498 - better handling of spaces around wild cards in search pattern
2004-06-10 Andrew Niefer
fix bug 64986 - handle Containers in CSearchScope
2004-05-26 Andrew Niefer
Modified search to use ASTUtil.getFunctionParameterTypes to get the strings to search for
functions with specific parameters.
2004-05-21 Andrw Niefer
fix bug 63478
2004-05-21 Andrew Niefer
Indexer problems reporting: group problems under the indexer job in progress view
2004-05-21 Andrew Niefer
bug 62731 - [Search] typedefs are appearing as union declarations
* search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
2004-05-21 Bogdan Gheorghe
bug 63320 - Search does not consider working copies
Added a check to turn off indexer timer thread, if number entered is <= 0
2004-05-18 Andrew Niefer
bug 62651 - indexer job hangs if project deleted from workspace
When we discard jobs, we must downtick the indexing job as well.
* search/org/eclipse/cdt/internal/core/search/processing/IndexingJob.java
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
2004-05-17 Bogdan Gheorghe
Added matching routine to IncludePattern
2004-05-17 Andrew Niefer
bug 61044 - report search matches at the end of each compilation unit
2004-05-14 Bogdan Gheorghe
bug 60491
Added working copy filtering to search engine
From now on only relevent working copies are considered for search
If no index paths are found then search will return no results regardless of any working copies passed in
2004-05-14 Andrew Niefer
bug 56411 - Added IndexingJob show that indexing shows up in the process view
- this allows for the index job to be cancelled, which pauses indexing until someone requests something
- if a request was waiting on the indexer and the indexer gets paused from a user canceling it, then the
request is forced immediate.
2004-05-06 Bogdan Gheorghe
Added friend to ICSearchConstants
Created IMatchLocator to allow search users to pass in their own match locators
Modified CSearchPattern to create friend search pattern
Added Friend pattern
Modified MatchLocator to check for class specifiers upon class exit
2004-04-19 Andrew Niefer
speed up BasicSearchMatch.compareTo and .hashCode by reducing number of string objects created.
2004-04-12 Bogdan Gheorghe
Modified FieldDeclarationPattern to work with new Enumerator type, added
DerivedTypesPattern.
2004-04-05 Andrew Niefer
fix bug 54169, TYPE includes enum & typedef, handle that in ClassDeclarationPattern.matchLevel
2004-03-24 Bogdan Gheorghe
Modified BasicSearchMatch to keep track of what files contained the match in order
to create file links to support external file markers.
Modified MatchLocator to pass in the referring file path to BasicSearchMatch if the
match has no resource attached to it (ie. the match is external).
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
* search/org/eclipse/cdt/core/search/BasicSearchMatch.java
* search/org/eclipse/cdt/core/search/ICSearchResultCollector.java
* search/org/eclipse/cdt/core/search/IMatch.java
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-03-08 Bogdan Gheorghe
BasicSearchResultCollector patch from Chris Wiebe - adds setProgressMonitor method,
cleans up some of the CoreException warnings
2004-02-16 Andrew Niefer
fixed a couple of warnings
moved OrPattern from org.eclipse.cdt.internal.core.search.matching to org.eclipse.cdt.core.search
changed SearchEngine.search & MatchLocator.locateMatches to throw InterruptedException when cancelled
updates calls to search to handle InterruptedException
2004-02-13 Bogdan Gheorghe
- Added error handling to MatchLocator.locateMatches to handle possible
parser failures.
2004-02-06 Bogdan Gheorghe
- Modified CSearchPattern.scanforParameters. If no parameters are passed in
as part of a function/method search, void is assigned as a parameter type.
- Modified MethodDeclarationPattern to check for void parameter types
2004-02-05 Alain Magloire
PR 51221
Reformat Patch from Bogdan base on Thomas Fletcher original patch
In a nutshell, it moves the search operation into a runnable which
can be passed to a progress dialog.
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
2004-01-26 John Camelon
Updated clients to use new Scanner logging service.
2003-10-23 Bogdan Gheorghe
- Added AcceptMatchOperation to get around Bug 45324. The search
operation is no longer a WorkspaceModifyOperation (which used to
lock the workspace for the duration of search). Instead, we now
lock the workspace only when we tag the resources with markers.
- Modified SearchEngine : we now receive a list of matches
from the search that we pass into the AcceptMatchOperation.
- Modified MatchLocator to add matches to passed in list instead
of reporting them right away
- Modified JobManager: -added in jobToIgnore parm to unblock dependency
jobs
2003-10-06 Bogdan Gheorghe
- added createCFileSearchScope() to SearchEngine.java to improve
code complete performance
2003-10-01 Andrew Niefer
- fix bug 44026 by checking scope before reporting match in MatchLocator.report
2003-10-01 Andrew Niefer
- fix BasicSearchMatch.equals() for bug43988
2003-09-30 Bogdan Gheorghe
- changed logging in JobManager to use new ICLogConstants
2003-09-30 Andrew Niefer
-fix bug43862 - Cannot find macro delcarations using all occurences.
* modified CSearchPattern.createMacroPattern
2003-09-29 Andrew Niefer
- fix bug 43062 outline is confused on operator methods containing spaces
- modify CSearchPattern.scanForNames to use same naming convention as TokenDuple.toString()
- modify MatchLocator.report to use IASTOffsetableNamedElement.getNameEndOffset()
2003-09-29 Andrew Niefer
-bug42911 - Search: cannot find beyond use of data member
- fix NPE's in BasicSearchMatch.equals & hashCode
2003-09-29 Andrew Niefer
-fix NPE if IScannerInfoProvider returns null IScannerInfo
2003-09-25 Andrew Niefer
- bug43129 - Cannot search for definitions of global variables
- check definitions for variables, fields, enumerators and namespaces
- handle enter/exitLinkageSpecification
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
2003-09-25 Bogdan Gheorghe
- added SearchFor INCLUDE in ICSearchConstants
- added acceptIncludeDeclaration to IIndexSearchRequestor
- modified PathCollector to acceptIncludeDeclarations
- modified CSearchPattern to create an IncludePattern
- added IncludePattern.java
2003-09-25 Andrew Niefer
- partial fix for 43664 Modify Matchlocator to not try and create a link if we have no
resource, instead just use the path
2003-09-23 Andrew Niefer
fix bug 43498 Search with ? fails on first letter of second word
-modifications to CSearchPattern.scanForNames()
-add getSimpleName to MethodDeclarationPattern
2003-09-19 Andrew Niefer
fix bug 43327 Code Complete finds local variables
- modified MatchLocator to not report local declarations when boolean is set
- modified SearchEngine.search to take an additional parameter "excludeLocalDeclarations"
2003-09-15 Andrew Niefer
- modify CSearchPattern to handle escaping wildcards (bug43063)
- modify enterFunctionBody and enterMethodBody to fix bug42979
- search for Parameter References
2003-09-13 Andrew Niefer
-Searching for Typedefs: (bug42902)
- modified setElementInfo in BasicSearchResultCollector
- added TYPEDEF to ICSearchConstants
- modified CSearchPattern & ClassDeclarationPattern
- implemented acceptTypedef* in MatchLocator
- modified BasicSearchMatch to implement Comparable
2003-09-11 Andrew Niefer
- Modified ICSearchResultCollector.createMatch to not take a parent parameter
- modified BasicSearchResultCollector to create the parent string from the fully qualified name of the node
- modified MatchLocator to keep track of most recent declaration for reporting purposes
- modified MatchLocator.report to use the most recent declaration
2003-09-09 Andrew Niefer
pattern matching on function parameters:
- modified scanForParameters in CSearchPattern
- added getParamString in CSearchPattern
- modified matchLevel in MethodDeclarationPattern
Enumeration references
- modified acceptEnumeratorReference in MatchLocator
2003-09-05 Andrew Niefer
- fix searching for enumerators
2003-09-03 Andrew Niefer
- added CLASS_STRUCT to the SearchFor constants
- Modified CSearchPattern to handle CLASS_STRUCT
2003-08-26 Bogdan Gheorghe
- Added debug tracing statements to SearchEngine
- Modified scanForNames in CSearchPattern to treat append
a token after "~" to allow for destructors search
- Added scope checking to MatchLocator
- Added debug trace statements to MatchLocator
2003-08-20 Bogdan Gheorghe
- Changed matching and reporting functions to handle nodes
of type IElaboratedTypeSpecifier
2003-08-12 Bogdan Gheorghe
- Rolled field and variable search patterns into one pattern, in
order to allow for qualified var searches
2003-08-11 Andrew Niefer
- Added Macro ICSearchConstant
- Added acceptMacro to IIndexSearchRequestor and PathCollector
- Added MacroDeclaration Pattern
- Rolled method and function patterns into one method pattern
- Added WorkingCopy support to search
2003-08-08 Bogdan Gheorghe
- Added CreateSearchScope to create a search scope out of
CElements
- Filled out CSearchScope to enable:
- adding a project to scope, include referenced projects
- adding individual CElements to scope
2003-08-08 Andrew Niefer
- add function parameter information to search results
2003-08-06 Andrew Niefer
- Create OrPattern which matches for search if any of its constituent patterns matches
- modified MatchLocator to support the OrPattern
- searching for All occurences now uses the OrPattern
2003-08-01 Andrew Niefer
- Modified BasicSearchResultCollector to only accept matches it has not already seen
- fixed bug in finding a resource when entering includes
2003-07-29 Andrew Niefer
Refactoring Search result collection:
- Modified ICSearchResultCollector
- Modified IMatch
- Modified MatchLocator to reflect changes in ICSearchResultCollector
- Created BasicSearchMatch implements IMatch
- Created BasicSearchResultCollector implements ICSearchResultCollector
2003-07-28 Andrew Niefer
- added abstract CSearchPattern.resetIndexInfo fix bug with searching with globally
qualified names
- fixed bug in CSearchPattern.matchQualifications to do with globally qualified names
- fixed bug in CSearchPattern.createFunctionPattern to do with parameter lists.
2003-07-25 Bogdan Gheorghe
- Added refs to PathCollector
- Filled in feedIndexRequestor for the new search patterns
- Fixed the FunctionDeclarationPattern to work with no parms
2003-07-24 Andrew Niefer
- Implemented decodeIndexEntry & matchIndexEntry for all patterns
- changed MatchLocator to use a COMPLETE_PARSE.
2003-07-23 Andrew Niefer
-Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate
-Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate
-first implementations of:
-CSearchPattern.createFunctionPattern
-CSearchPattern.createVariablePattern
-CSearchPattern.createMethodPattern
-preliminary matching for remaining patterns
-handling of remaining parser callbacks
-generating index Prefixes for the patterns
2003-07-14 Andrew Niefer
-Modified SearchFor instances in ICSearchConstants to more closely match what we are searching for
-added IMatch interface, it represents matches found by the search engine, implementors can store
whatever information they like, see ICSearchResultCollector::createMatch
-added createMatch to the ICSearchResultCollector interface, the result collector is responsible for
implementing IMatch to store whatever data they want out of the AST nodes.
-added skeleton patterns:
search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/VariableDeclarationPattern.java
-added beginnings of CSearchPattern::create*Pattern functions
-modifications to MatchLocator to keep track of current scope
-added CSearchPattern::matchQualifications
2003-07-10 Bogdan Gheorghe
Provided implementation for ICSearchScope.java, CSearchScope.java
Hooked up new CWorkspaceScope, PathCollector, PatternSearchJob in SearchEngine.java
Provided implementation for PatternSearchJob.java - PatternSearchJob is where the first part
of the search occurs - using an IndexSelector to filter the indexes, it gets the indexes from
the IndexManager and then uses the passed in pattern to find the index matched. Once it finds
an index match it adds the file path to the PathCollector.
Modified CSearchPattern - added support to find index entries.
Modified ClassDeclarationPattern - added support to decode, match and report
index entries.
Added:
* search/org/eclipse/cdt/internal/core/search/CWorkspaceScope.java
* search/org/eclipse/cdt/internal/core/search/IIndexSearchRequestor.java
* search/org/eclipse/cdt/internal/core/search/IndexSelector.java
* search/org/eclipse/cdt/internal/core/search/PathCollector.java
Modified:
* search/org/eclipse/cdt/core/search/ICSearchScope.java
* search/org/eclipse/cdt/core/search/SearchEngine.java
* search/org/eclipse/cdt/internal/core/search/CSearchScope.java
* search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
* search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
2003-07-04 Andrew Niefer
Modified ICSearchConstants to use new nested classes SearchFor and LimitTo instead of int
for stronger type safety
Updated MatchLocator to invoke parser to do actual search.
2003-06-27 Andrew Niefer
Modified:
search/org.eclipse.cdt.core.search.matching/MatchLocator.java
- enter/exitInclusion
- enterClassSpecifier
search/org.eclipse.cdt.core.search.matching/CSearchPattern.java
- createClassPattern
- matchesName
search/org.eclipse.cdt.core.search.matching/ClassDeclarationPattern.java
- matchLevel
search/org.eclipse.cdt.core.search/ICSearchPattern.java
search/org.eclipse.cdt.core.search/ICSearchResultCollector.java
search/org.eclipse.cdt.core.search/SearchEngine.java
2003-06-25 Bogdan Gheorghe
Modified:
* search/org/eclipse/cdt/core/search/ICSearchConstants.java
* search/org/eclipse/cdt/internal/core/search/Utils.java
- moved to index/org/eclipse/cdt/internal/core/search/Utils.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
* search/org/eclipse/cdt/internal/core/search/processing/IJob.java
2004-08-11 Bogdan Gheorghe
Fix for Bug 59493: need to refine index query for open-type
* search/org/eclipse/cdt/internal/core/search/ICSearchConstants.java
* search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
* search/org/eclipse/cdt/internal/core/search/matching/DerivedTypesPattern.java
* search/org/eclipse/cdt/internal/core/search/matching/FriendPattern.java
2004-06-25 Bogdan Gheorghe
Indirect fix for Bug 65551: [Search] Search for Variable references should not include parameters
Instead of excluding parameter references from searches, added parm declarations to the index (for
both functions and methods)
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
* index/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-25 Bogdan Gheorghe
Fix for 68550: [Indexer] Cannot restart indexer by touching .c/.cpp/.cc files
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
* index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
2004-06-24 Bogdan Gheorghe
Fix for 66695: [Indexer] Manually add an include path to a file/folder
is ignored by indexer
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-22 Alain Magloire
Part of PR 68246.
Close the inputstream to release resource handle
when we done with it, we can not rely on the GC to do it for us.
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-06-21 Bogdan Gheorghe
Modified JobManager to change state from waiting to enabled on a job request.
2004-06-11 Andrew Niefer
fix bugs 43063 & 43498 - better handling of spaces around wild cards in search pattern
2004-06-10 Andrew Niefer
fix bug 64986 - handle Containers in CSearchScope
2004-05-26 Andrew Niefer
Modified search to use ASTUtil.getFunctionParameterTypes to get the strings to search for
functions with specific parameters.
2004-05-21 Andrw Niefer
fix bug 63478
2004-05-21 Andrew Niefer
Indexer problems reporting: group problems under the indexer job in progress view
2004-05-21 Andrew Niefer
bug 62731 - [Search] typedefs are appearing as union declarations
* search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
2004-05-21 Bogdan Gheorghe
bug 63320 - Search does not consider working copies
Added a check to turn off indexer timer thread, if number entered is <= 0
2004-05-18 Andrew Niefer
bug 62651 - indexer job hangs if project deleted from workspace
When we discard jobs, we must downtick the indexing job as well.
* search/org/eclipse/cdt/internal/core/search/processing/IndexingJob.java
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
2004-05-17 Bogdan Gheorghe
Added matching routine to IncludePattern
2004-05-17 Andrew Niefer
bug 61044 - report search matches at the end of each compilation unit
2004-05-14 Bogdan Gheorghe
bug 60491
Added working copy filtering to search engine
From now on only relevent working copies are considered for search
If no index paths are found then search will return no results regardless of any working copies passed in
2004-05-14 Andrew Niefer
bug 56411 - Added IndexingJob show that indexing shows up in the process view
- this allows for the index job to be cancelled, which pauses indexing until someone requests something
- if a request was waiting on the indexer and the indexer gets paused from a user canceling it, then the
request is forced immediate.
2004-05-06 Bogdan Gheorghe
Added friend to ICSearchConstants
Created IMatchLocator to allow search users to pass in their own match locators
Modified CSearchPattern to create friend search pattern
Added Friend pattern
Modified MatchLocator to check for class specifiers upon class exit
2004-04-19 Andrew Niefer
speed up BasicSearchMatch.compareTo and .hashCode by reducing number of string objects created.
2004-04-12 Bogdan Gheorghe
Modified FieldDeclarationPattern to work with new Enumerator type, added
DerivedTypesPattern.
2004-04-05 Andrew Niefer
fix bug 54169, TYPE includes enum & typedef, handle that in ClassDeclarationPattern.matchLevel
2004-03-24 Bogdan Gheorghe
Modified BasicSearchMatch to keep track of what files contained the match in order
to create file links to support external file markers.
Modified MatchLocator to pass in the referring file path to BasicSearchMatch if the
match has no resource attached to it (ie. the match is external).
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
* search/org/eclipse/cdt/core/search/BasicSearchMatch.java
* search/org/eclipse/cdt/core/search/ICSearchResultCollector.java
* search/org/eclipse/cdt/core/search/IMatch.java
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
2004-03-08 Bogdan Gheorghe
BasicSearchResultCollector patch from Chris Wiebe - adds setProgressMonitor method,
cleans up some of the CoreException warnings
2004-02-16 Andrew Niefer
fixed a couple of warnings
moved OrPattern from org.eclipse.cdt.internal.core.search.matching to org.eclipse.cdt.core.search
changed SearchEngine.search & MatchLocator.locateMatches to throw InterruptedException when cancelled
updates calls to search to handle InterruptedException
2004-02-13 Bogdan Gheorghe
- Added error handling to MatchLocator.locateMatches to handle possible
parser failures.
2004-02-06 Bogdan Gheorghe
- Modified CSearchPattern.scanforParameters. If no parameters are passed in
as part of a function/method search, void is assigned as a parameter type.
- Modified MethodDeclarationPattern to check for void parameter types
2004-02-05 Alain Magloire
PR 51221
Reformat Patch from Bogdan base on Thomas Fletcher original patch
In a nutshell, it moves the search operation into a runnable which
can be passed to a progress dialog.
* search/org/eclipse/cdt/core/search/BasicSearchResultCollector.java
2004-01-26 John Camelon
Updated clients to use new Scanner logging service.
2003-10-23 Bogdan Gheorghe
- Added AcceptMatchOperation to get around Bug 45324. The search
operation is no longer a WorkspaceModifyOperation (which used to
lock the workspace for the duration of search). Instead, we now
lock the workspace only when we tag the resources with markers.
- Modified SearchEngine : we now receive a list of matches
from the search that we pass into the AcceptMatchOperation.
- Modified MatchLocator to add matches to passed in list instead
of reporting them right away
- Modified JobManager: -added in jobToIgnore parm to unblock dependency
jobs
2003-10-06 Bogdan Gheorghe
- added createCFileSearchScope() to SearchEngine.java to improve
code complete performance
2003-10-01 Andrew Niefer
- fix bug 44026 by checking scope before reporting match in MatchLocator.report
2003-10-01 Andrew Niefer
- fix BasicSearchMatch.equals() for bug43988
2003-09-30 Bogdan Gheorghe
- changed logging in JobManager to use new ICLogConstants
2003-09-30 Andrew Niefer
-fix bug43862 - Cannot find macro delcarations using all occurences.
* modified CSearchPattern.createMacroPattern
2003-09-29 Andrew Niefer
- fix bug 43062 outline is confused on operator methods containing spaces
- modify CSearchPattern.scanForNames to use same naming convention as TokenDuple.toString()
- modify MatchLocator.report to use IASTOffsetableNamedElement.getNameEndOffset()
2003-09-29 Andrew Niefer
-bug42911 - Search: cannot find beyond use of data member
- fix NPE's in BasicSearchMatch.equals & hashCode
2003-09-29 Andrew Niefer
-fix NPE if IScannerInfoProvider returns null IScannerInfo
2003-09-25 Andrew Niefer
- bug43129 - Cannot search for definitions of global variables
- check definitions for variables, fields, enumerators and namespaces
- handle enter/exitLinkageSpecification
* search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
2003-09-25 Bogdan Gheorghe
- added SearchFor INCLUDE in ICSearchConstants
- added acceptIncludeDeclaration to IIndexSearchRequestor
- modified PathCollector to acceptIncludeDeclarations
- modified CSearchPattern to create an IncludePattern
- added IncludePattern.java
2003-09-25 Andrew Niefer
- partial fix for 43664 Modify Matchlocator to not try and create a link if we have no
resource, instead just use the path
2003-09-23 Andrew Niefer
fix bug 43498 Search with ? fails on first letter of second word
-modifications to CSearchPattern.scanForNames()
-add getSimpleName to MethodDeclarationPattern
2003-09-19 Andrew Niefer
fix bug 43327 Code Complete finds local variables
- modified MatchLocator to not report local declarations when boolean is set
- modified SearchEngine.search to take an additional parameter "excludeLocalDeclarations"
2003-09-15 Andrew Niefer
- modify CSearchPattern to handle escaping wildcards (bug43063)
- modify enterFunctionBody and enterMethodBody to fix bug42979
- search for Parameter References
2003-09-13 Andrew Niefer
-Searching for Typedefs: (bug42902)
- modified setElementInfo in BasicSearchResultCollector
- added TYPEDEF to ICSearchConstants
- modified CSearchPattern & ClassDeclarationPattern
- implemented acceptTypedef* in MatchLocator
- modified BasicSearchMatch to implement Comparable
2003-09-11 Andrew Niefer
- Modified ICSearchResultCollector.createMatch to not take a parent parameter
- modified BasicSearchResultCollector to create the parent string from the fully qualified name of the node
- modified MatchLocator to keep track of most recent declaration for reporting purposes
- modified MatchLocator.report to use the most recent declaration
2003-09-09 Andrew Niefer
pattern matching on function parameters:
- modified scanForParameters in CSearchPattern
- added getParamString in CSearchPattern
- modified matchLevel in MethodDeclarationPattern
Enumeration references
- modified acceptEnumeratorReference in MatchLocator
2003-09-05 Andrew Niefer
- fix searching for enumerators
2003-09-03 Andrew Niefer
- added CLASS_STRUCT to the SearchFor constants
- Modified CSearchPattern to handle CLASS_STRUCT
2003-08-26 Bogdan Gheorghe
- Added debug tracing statements to SearchEngine
- Modified scanForNames in CSearchPattern to treat append
a token after "~" to allow for destructors search
- Added scope checking to MatchLocator
- Added debug trace statements to MatchLocator
2003-08-20 Bogdan Gheorghe
- Changed matching and reporting functions to handle nodes
of type IElaboratedTypeSpecifier
2003-08-12 Bogdan Gheorghe
- Rolled field and variable search patterns into one pattern, in
order to allow for qualified var searches
2003-08-11 Andrew Niefer
- Added Macro ICSearchConstant
- Added acceptMacro to IIndexSearchRequestor and PathCollector
- Added MacroDeclaration Pattern
- Rolled method and function patterns into one method pattern
- Added WorkingCopy support to search
2003-08-08 Bogdan Gheorghe
- Added CreateSearchScope to create a search scope out of
CElements
- Filled out CSearchScope to enable:
- adding a project to scope, include referenced projects
- adding individual CElements to scope
2003-08-08 Andrew Niefer
- add function parameter information to search results
2003-08-06 Andrew Niefer
- Create OrPattern which matches for search if any of its constituent patterns matches
- modified MatchLocator to support the OrPattern
- searching for All occurences now uses the OrPattern
2003-08-01 Andrew Niefer
- Modified BasicSearchResultCollector to only accept matches it has not already seen
- fixed bug in finding a resource when entering includes
2003-07-29 Andrew Niefer
Refactoring Search result collection:
- Modified ICSearchResultCollector
- Modified IMatch
- Modified MatchLocator to reflect changes in ICSearchResultCollector
- Created BasicSearchMatch implements IMatch
- Created BasicSearchResultCollector implements ICSearchResultCollector
2003-07-28 Andrew Niefer
- added abstract CSearchPattern.resetIndexInfo fix bug with searching with globally
qualified names
- fixed bug in CSearchPattern.matchQualifications to do with globally qualified names
- fixed bug in CSearchPattern.createFunctionPattern to do with parameter lists.
2003-07-25 Bogdan Gheorghe
- Added refs to PathCollector
- Filled in feedIndexRequestor for the new search patterns
- Fixed the FunctionDeclarationPattern to work with no parms
2003-07-24 Andrew Niefer
- Implemented decodeIndexEntry & matchIndexEntry for all patterns
- changed MatchLocator to use a COMPLETE_PARSE.
2003-07-23 Andrew Niefer
-Changed ICSearchPattern.matchLevel to take a ISourceElementCallbackDelegate
-Changed ICSearchResultCollector.createMatch to take a ISourceElementCallbackDelegate
-first implementations of:
-CSearchPattern.createFunctionPattern
-CSearchPattern.createVariablePattern
-CSearchPattern.createMethodPattern
-preliminary matching for remaining patterns
-handling of remaining parser callbacks
-generating index Prefixes for the patterns
2003-07-14 Andrew Niefer
-Modified SearchFor instances in ICSearchConstants to more closely match what we are searching for
-added IMatch interface, it represents matches found by the search engine, implementors can store
whatever information they like, see ICSearchResultCollector::createMatch
-added createMatch to the ICSearchResultCollector interface, the result collector is responsible for
implementing IMatch to store whatever data they want out of the AST nodes.
-added skeleton patterns:
search/org/eclipse/cdt/internal/core/search/matching/FieldDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/FunctionDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/MethodDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/NamespaceDeclarationPattern.java
search/org/eclipse/cdt/internal/core/search/matching/VariableDeclarationPattern.java
-added beginnings of CSearchPattern::create*Pattern functions
-modifications to MatchLocator to keep track of current scope
-added CSearchPattern::matchQualifications
2003-07-10 Bogdan Gheorghe
Provided implementation for ICSearchScope.java, CSearchScope.java
Hooked up new CWorkspaceScope, PathCollector, PatternSearchJob in SearchEngine.java
Provided implementation for PatternSearchJob.java - PatternSearchJob is where the first part
of the search occurs - using an IndexSelector to filter the indexes, it gets the indexes from
the IndexManager and then uses the passed in pattern to find the index matched. Once it finds
an index match it adds the file path to the PathCollector.
Modified CSearchPattern - added support to find index entries.
Modified ClassDeclarationPattern - added support to decode, match and report
index entries.
Added:
* search/org/eclipse/cdt/internal/core/search/CWorkspaceScope.java
* search/org/eclipse/cdt/internal/core/search/IIndexSearchRequestor.java
* search/org/eclipse/cdt/internal/core/search/IndexSelector.java
* search/org/eclipse/cdt/internal/core/search/PathCollector.java
Modified:
* search/org/eclipse/cdt/core/search/ICSearchScope.java
* search/org/eclipse/cdt/core/search/SearchEngine.java
* search/org/eclipse/cdt/internal/core/search/CSearchScope.java
* search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
* search/org/eclipse/cdt/internal/core/search/matching/ClassDeclarationPattern.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
2003-07-04 Andrew Niefer
Modified ICSearchConstants to use new nested classes SearchFor and LimitTo instead of int
for stronger type safety
Updated MatchLocator to invoke parser to do actual search.
2003-06-27 Andrew Niefer
Modified:
search/org.eclipse.cdt.core.search.matching/MatchLocator.java
- enter/exitInclusion
- enterClassSpecifier
search/org.eclipse.cdt.core.search.matching/CSearchPattern.java
- createClassPattern
- matchesName
search/org.eclipse.cdt.core.search.matching/ClassDeclarationPattern.java
- matchLevel
search/org.eclipse.cdt.core.search/ICSearchPattern.java
search/org.eclipse.cdt.core.search/ICSearchResultCollector.java
search/org.eclipse.cdt.core.search/SearchEngine.java
2003-06-25 Bogdan Gheorghe
Modified:
* search/org/eclipse/cdt/core/search/ICSearchConstants.java
* search/org/eclipse/cdt/internal/core/search/Utils.java
- moved to index/org/eclipse/cdt/internal/core/search/Utils.java
* search/org/eclipse/cdt/internal/core/search/matching/CSearchPattern.java
* search/org/eclipse/cdt/internal/core/search/processing/IJob.java
* search/org/eclipse/cdt/internal/core/search/processing/JobManager.java

View file

@ -107,6 +107,12 @@ public interface ICSearchConstants {
public static final SearchFor FRIEND = new SearchFor( 16 );
public static final SearchFor FWD_CLASS = new SearchFor ( 17 );
public static final SearchFor FWD_STRUCT = new SearchFor ( 18 );
public static final SearchFor FWD_UNION = new SearchFor ( 19 );
/* Nature of match */
/**

View file

@ -110,6 +110,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
CSearchPattern pattern = null;
if( searchFor == TYPE || searchFor == CLASS || searchFor == STRUCT ||
searchFor == FWD_CLASS || searchFor == FWD_STRUCT || searchFor == FWD_UNION ||
searchFor == ENUM || searchFor == UNION || searchFor == CLASS_STRUCT ||
searchFor == TYPEDEF )
{
@ -344,6 +345,11 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
return orPattern;
}
boolean isForward = false;
if (searchFor == FWD_CLASS || searchFor == FWD_STRUCT || searchFor == FWD_UNION){
isForward = true;
}
char [] patternArray = patternString.toCharArray();
IScanner scanner =null;
@ -393,7 +399,7 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
char[] name = (char [])list.removeLast();
char [][] qualifications = new char[0][];
return new ClassDeclarationPattern( name, (char[][])list.toArray( qualifications ), searchFor, limitTo, matchMode, caseSensitive );
return new ClassDeclarationPattern( name, (char[][])list.toArray( qualifications ), searchFor, limitTo, matchMode, caseSensitive, isForward );
}

View file

@ -42,9 +42,10 @@ public class ClassDeclarationPattern extends CSearchPattern {
// super( matchMode, caseSensitive, DECLARATIONS );
// }
public ClassDeclarationPattern( char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive ){
public ClassDeclarationPattern( char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive, boolean isForward ){
super( mode, caseSensitive, limit );
this.isForward = isForward;
simpleName = caseSensitive ? name : CharOperation.toLowerCase( name );
if( caseSensitive || containers == null ){
qualifications = containers;
@ -58,13 +59,13 @@ public class ClassDeclarationPattern extends CSearchPattern {
this.searchFor = searchFor;
if( searchFor == CLASS ){
if( searchFor == CLASS || searchFor == FWD_CLASS ){
classKind = ASTClassKind.CLASS;
} else if( searchFor == STRUCT ) {
} else if( searchFor == STRUCT || searchFor == FWD_STRUCT) {
classKind = ASTClassKind.STRUCT;
} else if ( searchFor == ENUM ) {
classKind = ASTClassKind.ENUM;
} else if ( searchFor == UNION ) {
} else if ( searchFor == UNION || searchFor == FWD_UNION ) {
classKind = ASTClassKind.UNION;
} else {
classKind = null;
@ -86,6 +87,11 @@ public class ClassDeclarationPattern extends CSearchPattern {
if( ! canAccept( limit ) )
return IMPOSSIBLE_MATCH;
if ((node instanceof IASTElaboratedTypeSpecifier &&!isForward)||
(node instanceof IASTClassSpecifier && isForward)){
return IMPOSSIBLE_MATCH;
}
char[] nodeName = null;
if (node instanceof IASTElaboratedTypeSpecifier)
{
@ -145,6 +151,7 @@ public class ClassDeclarationPattern extends CSearchPattern {
protected char[] decodedSimpleName;
private char[][] decodedContainingTypes;
protected char decodedType;
protected boolean isForward;
public void feedIndexRequestor(IIndexSearchRequestor requestor, int detailLevel, int[] references, IndexInput input, ICSearchScope scope) throws IOException {
@ -213,15 +220,18 @@ public class ClassDeclarationPattern extends CSearchPattern {
return false;
}
} else if( classKind == ASTClassKind.CLASS ) {
if( decodedType != CLASS_SUFFIX ){
if( decodedType != CLASS_SUFFIX &&
decodedType != FWD_CLASS_SUFFIX){
return false;
}
} else if ( classKind == ASTClassKind.STRUCT ) {
if( decodedType != STRUCT_SUFFIX ){
if( decodedType != STRUCT_SUFFIX &&
decodedType != FWD_STRUCT_SUFFIX){
return false;
}
} else if ( classKind == ASTClassKind.UNION ) {
if( decodedType != UNION_SUFFIX ){
if( decodedType != UNION_SUFFIX &&
decodedType != FWD_UNION_SUFFIX){
return false;
}
} else if ( classKind == ASTClassKind.ENUM ) {

View file

@ -42,7 +42,7 @@ public class DerivedTypesPattern extends ClassDeclarationPattern {
* @param caseSensitive
*/
public DerivedTypesPattern(char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive) {
super(name, containers, searchFor, limit, mode, caseSensitive);
super(name, containers, searchFor, limit, mode, caseSensitive, false);
}
public char[] indexEntryPrefix() {

View file

@ -41,7 +41,7 @@ public class FriendPattern extends ClassDeclarationPattern {
* @param caseSensitive
*/
public FriendPattern(char[] name, char[][] containers, SearchFor searchFor, LimitTo limit, int mode, boolean caseSensitive) {
super(name, containers, searchFor, limit, mode, caseSensitive);
super(name, containers, searchFor, limit, mode, caseSensitive, false);
}
public char[] indexEntryPrefix() {