mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
65623 - add rest of the index markers
This commit is contained in:
parent
395aab5426
commit
574f68dad7
7 changed files with 155 additions and 91 deletions
|
@ -1,3 +1,9 @@
|
|||
2004-06-21 Andrew Niefer
|
||||
enable reporting of semantic problems:
|
||||
* index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
|
||||
* index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
|
||||
* index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
|
||||
|
||||
2004-06-21 Alain Magloire
|
||||
|
||||
IndexManager, call CCorePlugin.getCDescriptor(.., false).
|
||||
|
|
|
@ -110,6 +110,10 @@ public class IndexManager extends JobManager implements IIndexConstants {
|
|||
public static final String INDEXER_VALUE = "indexValue"; //$NON-NLS-1$
|
||||
public static final String INDEXER_PROBLEMS_VALUE = "indexProblemsValue"; //$NON-NLS-1$
|
||||
|
||||
public static final int PREPROCESSOR_PROBLEMS_BIT = 1;
|
||||
public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
|
||||
public static final int SYNTACTIC_PROBLEMS_BIT = 1 << 2;
|
||||
|
||||
public synchronized void aboutToUpdateIndex(IPath path, Integer newIndexState) {
|
||||
// newIndexState is either UPDATING_STATE or REBUILDING_STATE
|
||||
// must tag the index as inconsistent, in case we exit before the update job is started
|
||||
|
@ -359,33 +363,33 @@ public class IndexManager extends JobManager implements IIndexConstants {
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean isIndexProblemsEnabled(IProject project) {
|
||||
Boolean value = null;
|
||||
public int indexProblemsEnabled(IProject project) {
|
||||
Integer value = null;
|
||||
|
||||
try {
|
||||
value = (Boolean) project.getSessionProperty(problemsActivationKey);
|
||||
value = (Integer) project.getSessionProperty(problemsActivationKey);
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
|
||||
if (value != null)
|
||||
return value.booleanValue();
|
||||
return value.intValue();
|
||||
|
||||
try {
|
||||
//Load value for project
|
||||
value = loadIndexerProblemsEnabledFromCDescriptor(project);
|
||||
if (value != null){
|
||||
project.setSessionProperty(IndexManager.problemsActivationKey, value);
|
||||
return value.booleanValue();
|
||||
return value.intValue();
|
||||
}
|
||||
|
||||
//TODO: Indexer Block Place holder for Managed Make - take out
|
||||
value = new Boolean(false);
|
||||
value = new Integer(0);
|
||||
project.setSessionProperty(IndexManager.problemsActivationKey, value);
|
||||
return value.booleanValue();
|
||||
return value.intValue();
|
||||
} catch (CoreException e1) {
|
||||
}
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
* Index the content of the given source folder.
|
||||
|
@ -773,32 +777,44 @@ public class IndexManager extends JobManager implements IIndexConstants {
|
|||
|
||||
return strBool;
|
||||
}
|
||||
private Boolean loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException {
|
||||
// we are only checking for the settings do not create the descriptor.
|
||||
private Integer loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException {
|
||||
// we are only checking for the settings do not create the descriptor.
|
||||
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, false);
|
||||
Boolean strBool = null;
|
||||
if (descriptor != null) {
|
||||
Integer strInt = null;
|
||||
if( descriptor != null ){
|
||||
Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild();
|
||||
|
||||
|
||||
while (child != null) {
|
||||
if (child.getNodeName().equals(INDEXER_PROBLEMS_ENABLED))
|
||||
strBool = Boolean.valueOf(((Element)child).getAttribute(INDEXER_PROBLEMS_VALUE));
|
||||
if (child.getNodeName().equals(INDEXER_PROBLEMS_ENABLED)){
|
||||
String val = ((Element)child).getAttribute(INDEXER_PROBLEMS_VALUE);
|
||||
try{
|
||||
strInt = Integer.valueOf( val );
|
||||
} catch( NumberFormatException e ){
|
||||
//some old projects might have a boolean stored, translate that into just preprocessors
|
||||
Boolean bool = Boolean.valueOf( val );
|
||||
if( bool.booleanValue() )
|
||||
strInt = new Integer( IndexManager.PREPROCESSOR_PROBLEMS_BIT );
|
||||
else
|
||||
strInt = new Integer( 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
child = child.getNextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
return strBool;
|
||||
return strInt;
|
||||
}
|
||||
|
||||
static private class RemoveIndexMarkersJob extends Job{
|
||||
private final IProject project;
|
||||
public RemoveIndexMarkersJob( IProject project, String name ){
|
||||
private final IResource resource;
|
||||
public RemoveIndexMarkersJob( IResource resource, String name ){
|
||||
super( name );
|
||||
this.project = project;
|
||||
this.resource = resource;
|
||||
}
|
||||
protected IStatus run(IProgressMonitor monitor) {
|
||||
try {
|
||||
project.deleteMarkers( ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE );
|
||||
resource.deleteMarkers( ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE );
|
||||
} catch (CoreException e) {
|
||||
return Status.CANCEL_STATUS;
|
||||
}
|
||||
|
@ -807,9 +823,10 @@ public class IndexManager extends JobManager implements IIndexConstants {
|
|||
|
||||
}
|
||||
|
||||
public void removeAllIndexerProblems( IProject project){
|
||||
public void removeIndexerProblems( IResource resource){
|
||||
String jobName = "remove markers"; //$NON-NLS-1$
|
||||
RemoveIndexMarkersJob job = new RemoveIndexMarkersJob( project, jobName );
|
||||
RemoveIndexMarkersJob job = new RemoveIndexMarkersJob( resource, jobName );
|
||||
job.setRule( resource );
|
||||
job.setPriority( Job.DECORATE );
|
||||
job.schedule();
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ package org.eclipse.cdt.internal.core.search.indexing;
|
|||
* @author bgheorgh
|
||||
*/
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
@ -80,8 +79,8 @@ public class SourceIndexer extends AbstractIndexer {
|
|||
SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, resourceFile, timeOut);
|
||||
|
||||
IndexManager manager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
|
||||
boolean problemsEnabled = manager.isIndexProblemsEnabled( resourceFile.getProject() );
|
||||
requestor.setProblemMarkersEnabled( problemsEnabled );
|
||||
int problems = manager.indexProblemsEnabled( resourceFile.getProject() );
|
||||
requestor.setProblemMarkersEnabled( problems );
|
||||
requestor.requestRemoveMarkers( resourceFile, null );
|
||||
|
||||
//Get the scanner info
|
||||
|
@ -103,7 +102,6 @@ public class SourceIndexer extends AbstractIndexer {
|
|||
try
|
||||
{
|
||||
CodeReader reader = new CodeReader(resourceFile.getLocation().toOSString(), resourceFile.getContents());
|
||||
BufferedInputStream inStream = new BufferedInputStream(resourceFile.getContents());
|
||||
parser = ParserFactory.createParser(
|
||||
ParserFactory.createScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService(), null ),
|
||||
requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
||||
|
@ -145,7 +143,7 @@ public class SourceIndexer extends AbstractIndexer {
|
|||
finally{
|
||||
requestor.stopTimer();
|
||||
//if the user disable problem reporting since we last checked, don't report the collected problems
|
||||
if( manager.isIndexProblemsEnabled( resourceFile.getProject() ) )
|
||||
if( manager.indexProblemsEnabled( resourceFile.getProject() ) != 0 )
|
||||
requestor.reportProblems();
|
||||
|
||||
//Report events
|
||||
|
|
|
@ -100,7 +100,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
|||
private IASTInclusion currentInclude = null;
|
||||
private LinkedList includeStack = new LinkedList();
|
||||
|
||||
private boolean problemMarkersEnabled = false;
|
||||
private int problemMarkersEnabled = 0;
|
||||
private Map problemsMap = null;
|
||||
|
||||
private IProgressMonitor pm = new NullProgressMonitor();
|
||||
|
@ -704,14 +704,14 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
|||
|
||||
|
||||
public boolean areProblemMarkersEnabled(){
|
||||
return problemMarkersEnabled;
|
||||
return problemMarkersEnabled != 0;
|
||||
}
|
||||
|
||||
public void setProblemMarkersEnabled( boolean enabled ){
|
||||
if( enabled ){
|
||||
public void setProblemMarkersEnabled( int value ){
|
||||
if( value != 0 ){
|
||||
problemsMap = new HashMap();
|
||||
}
|
||||
this.problemMarkersEnabled = enabled;
|
||||
this.problemMarkersEnabled = value;
|
||||
}
|
||||
|
||||
public void reportProblems(){
|
||||
|
@ -754,9 +754,20 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
|||
}
|
||||
|
||||
public boolean shouldRecordProblem( IProblem problem ){
|
||||
if( problem.checkCategory( IProblem.PREPROCESSOR_RELATED ) ){
|
||||
return problem.getID() != IProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
|
||||
}
|
||||
if( problem.getSourceLineNumber() == -1 )
|
||||
return false;
|
||||
|
||||
boolean preprocessor = ( problemMarkersEnabled & IndexManager.PREPROCESSOR_PROBLEMS_BIT ) != 0;
|
||||
boolean semantics = ( problemMarkersEnabled & IndexManager.SEMANTIC_PROBLEMS_BIT ) != 0;
|
||||
boolean syntax = ( problemMarkersEnabled & IndexManager.SYNTACTIC_PROBLEMS_BIT ) != 0;
|
||||
|
||||
if( problem.checkCategory( IProblem.PREPROCESSOR_RELATED ) )
|
||||
return preprocessor && problem.getID() != IProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
|
||||
else if( problem.checkCategory( IProblem.SEMANTICS_RELATED ) )
|
||||
return semantics;
|
||||
else if( problem.checkCategory( IProblem.SYNTAX_RELATED ) )
|
||||
return syntax;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -779,7 +790,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
|||
|
||||
}
|
||||
private class ProcessMarkersJob extends Job{
|
||||
private final List problems;
|
||||
protected final List problems;
|
||||
private final IFile resource;
|
||||
public ProcessMarkersJob( IFile resource, List problems, String name ){
|
||||
super( name );
|
||||
|
@ -799,7 +810,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
|
|||
}
|
||||
return Status.OK_STATUS;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
abstract private class Problem {
|
||||
public IFile file;
|
||||
|
|
|
@ -51,5 +51,9 @@ AbstractErrorParserBlock.label.errorParsers=Error Parsers
|
|||
ICElementPropertyConstants.catagory=Binary Info
|
||||
|
||||
IndexerOptions.indexer = C/C++ Indexer
|
||||
IndexerOptions.enableIndexing = Enable C/C++ Indexing
|
||||
IndexerOptions.enableProblems = Enable C/C++ Index problem reporting
|
||||
IndexerOptions.enableIndexing = Enable C/C++ &Indexing
|
||||
IndexerOptions.problemReporting = C/C++ Index problem reporting
|
||||
IndexerOptions.enablePreprocessor = Report &preprocessor problems
|
||||
IndexerOptions.enableSemantic = Report &semantic problems
|
||||
IndexerOptions.enableSyntactic = Report s&yntactic problems
|
||||
|
||||
|
|
|
@ -32,12 +32,17 @@ import org.w3c.dom.Node;
|
|||
|
||||
public class IndexerOptionDialogPage extends DialogPage {
|
||||
|
||||
private static final String ENABLE_PROBLEMS = CUIMessages.getString( "IndexerOptions.enableProblems" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_PREPROCESSOR_PROBLEMS = CUIMessages.getString( "IndexerOptions.enablePreprocessor" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_SEMANTIC_PROBLEMS = CUIMessages.getString( "IndexerOptions.enableSemantic" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_SYNTACTIC_PROBLEMS = CUIMessages.getString( "IndexerOptions.enableSyntactic" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_INDEXING = CUIMessages.getString( "IndexerOptions.enableIndexing" ); //$NON-NLS-1$
|
||||
private static final String INDEXER = CUIMessages.getString("IndexerOptions.indexer" ); //$NON-NLS-1$
|
||||
private static final String INDEXER_PROBLEMS = CUIMessages.getString("IndexerOptions.problemReporting" ); //$NON-NLS-1$
|
||||
|
||||
private Button indexerEnabled;
|
||||
private Button indexerProblemsEnabled;
|
||||
private Button preprocessorProblemsEnabled;
|
||||
private Button syntacticProblemsEnabled;
|
||||
private Button semanticProblemsEnabled;
|
||||
|
||||
public IndexerOptionDialogPage(){
|
||||
super();
|
||||
|
@ -60,8 +65,16 @@ public class IndexerOptionDialogPage extends DialogPage {
|
|||
group.setText( INDEXER );
|
||||
|
||||
indexerEnabled = createCheckButton(group, ENABLE_INDEXING );
|
||||
indexerProblemsEnabled = createCheckButton( group, ENABLE_PROBLEMS );
|
||||
|
||||
Group problemsGroup = new Group(result, SWT.NONE );
|
||||
problemsGroup.setLayout(new GridLayout());
|
||||
problemsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
problemsGroup.setText( INDEXER_PROBLEMS );
|
||||
|
||||
preprocessorProblemsEnabled = createCheckButton( problemsGroup, ENABLE_PREPROCESSOR_PROBLEMS );
|
||||
semanticProblemsEnabled = createCheckButton( problemsGroup, ENABLE_SEMANTIC_PROBLEMS );
|
||||
//uncomment when we want to report syntax problems
|
||||
//syntacticProblemsEnabled = createCheckButton( problemsGroup, ENABLE_SYNTACTIC_PROBLEMS );
|
||||
setControl(result);
|
||||
}
|
||||
|
||||
|
@ -83,16 +96,24 @@ public class IndexerOptionDialogPage extends DialogPage {
|
|||
indexerEnabled.setSelection(value);
|
||||
}
|
||||
|
||||
public void setIndexerProblemsValue( boolean value ){
|
||||
indexerProblemsEnabled.setSelection( value );
|
||||
public void setIndexerProblemValues( int value ){
|
||||
preprocessorProblemsEnabled.setSelection( (value & IndexManager.PREPROCESSOR_PROBLEMS_BIT) != 0 );
|
||||
if( syntacticProblemsEnabled != null )
|
||||
syntacticProblemsEnabled.setSelection( (value & IndexManager.SYNTACTIC_PROBLEMS_BIT) != 0 );
|
||||
semanticProblemsEnabled.setSelection( (value & IndexManager.SEMANTIC_PROBLEMS_BIT) != 0 );
|
||||
}
|
||||
|
||||
public boolean getIndexerValue(){
|
||||
return indexerEnabled.getSelection();
|
||||
}
|
||||
|
||||
public boolean getIndexerProblemsValue(){
|
||||
return indexerProblemsEnabled.getSelection();
|
||||
public int getIndexerProblemsValues(){
|
||||
int result = 0;
|
||||
result |= preprocessorProblemsEnabled.getSelection() ? IndexManager.PREPROCESSOR_PROBLEMS_BIT : 0;
|
||||
if( syntacticProblemsEnabled != null )
|
||||
result |= syntacticProblemsEnabled.getSelection() ? IndexManager.SYNTACTIC_PROBLEMS_BIT : 0;
|
||||
result |= semanticProblemsEnabled.getSelection() ? IndexManager.SEMANTIC_PROBLEMS_BIT : 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
public void persistIndexerValues(IProject project){
|
||||
|
@ -105,31 +126,28 @@ public class IndexerOptionDialogPage extends DialogPage {
|
|||
descriptor = CCorePlugin.getDefault().getCProjectDescription(newProject, true);
|
||||
rootElement = descriptor.getProjectData(IndexManager.CDT_INDEXER);
|
||||
|
||||
|
||||
// Clear out all current children
|
||||
Node child = rootElement.getFirstChild();
|
||||
while (child != null) {
|
||||
rootElement.removeChild(child);
|
||||
child = rootElement.getFirstChild();
|
||||
}
|
||||
Document doc = rootElement.getOwnerDocument();
|
||||
|
||||
boolean indexProject = getIndexerValue();
|
||||
boolean problemsEnabled = getIndexerProblemsValue();
|
||||
|
||||
saveIndexerEnabled(indexProject, rootElement, doc);
|
||||
saveIndexerProblemsEnabled( problemsEnabled, rootElement, doc );
|
||||
|
||||
descriptor.saveProjectData();
|
||||
|
||||
//Update project session property
|
||||
|
||||
project.setSessionProperty(IndexManager.activationKey,new Boolean(indexProject));
|
||||
project.setSessionProperty(IndexManager.problemsActivationKey, new Boolean( problemsEnabled ));
|
||||
// Clear out all current children
|
||||
Node child = rootElement.getFirstChild();
|
||||
while (child != null) {
|
||||
rootElement.removeChild(child);
|
||||
child = rootElement.getFirstChild();
|
||||
}
|
||||
Document doc = rootElement.getOwnerDocument();
|
||||
|
||||
boolean indexProject = getIndexerValue();
|
||||
int problemValues = getIndexerProblemsValues();
|
||||
|
||||
saveIndexerEnabled(indexProject, rootElement, doc);
|
||||
saveIndexerProblemsEnabled( problemValues, rootElement, doc );
|
||||
|
||||
descriptor.saveProjectData();
|
||||
|
||||
//Update project session property
|
||||
|
||||
project.setSessionProperty(IndexManager.activationKey,new Boolean(indexProject));
|
||||
project.setSessionProperty(IndexManager.problemsActivationKey, new Integer( problemValues ));
|
||||
|
||||
} catch (CoreException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -143,13 +161,12 @@ public class IndexerOptionDialogPage extends DialogPage {
|
|||
rootElement.appendChild(indexEnabled);
|
||||
|
||||
}
|
||||
private static void saveIndexerProblemsEnabled (boolean problemsEnabled, Element rootElement, Document doc ) {
|
||||
private static void saveIndexerProblemsEnabled ( int problemValues, Element rootElement, Document doc ) {
|
||||
|
||||
Element enabled = doc.createElement(IndexManager.INDEXER_PROBLEMS_ENABLED);
|
||||
Boolean tempValue= new Boolean( problemsEnabled );
|
||||
Integer tempValue= new Integer( problemValues );
|
||||
|
||||
enabled.setAttribute(IndexManager.INDEXER_PROBLEMS_VALUE,tempValue.toString());
|
||||
enabled.setAttribute(IndexManager.INDEXER_PROBLEMS_VALUE, tempValue.toString());
|
||||
rootElement.appendChild(enabled);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
|
||||
private IndexerOptionDialogPage optionPage;
|
||||
private boolean oldIndexerValue;
|
||||
private boolean oldIndexerProblemsValue;
|
||||
private int oldIndexerProblemsValue;
|
||||
|
||||
public IndexerOptionPropertyPage(){
|
||||
super();
|
||||
|
@ -64,12 +64,11 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
oldIndexerValue = getIndexerEnabled(project);
|
||||
oldIndexerProblemsValue = getIndexerProblemsEnabled( project );
|
||||
} catch (CoreException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
optionPage.setIndexerValue(oldIndexerValue);
|
||||
optionPage.setIndexerProblemsValue( oldIndexerProblemsValue );
|
||||
optionPage.setIndexerProblemValues( oldIndexerProblemsValue );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -78,10 +77,10 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
public boolean performOk() {
|
||||
|
||||
boolean newIndexerValue = optionPage.getIndexerValue();
|
||||
boolean newIndexerProblemsValue = optionPage.getIndexerProblemsValue();
|
||||
int newIndexerProblemsValue = optionPage.getIndexerProblemsValues();
|
||||
|
||||
boolean indexChanged = (oldIndexerValue != newIndexerValue);
|
||||
boolean problemsChanged = (oldIndexerProblemsValue != newIndexerProblemsValue);
|
||||
boolean problemsChanged = (oldIndexerProblemsValue != newIndexerProblemsValue );
|
||||
|
||||
if ( indexChanged || problemsChanged){
|
||||
//persist new values
|
||||
|
@ -89,12 +88,12 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
optionPage.persistIndexerValues(tempProject);
|
||||
|
||||
//if indexer is now on send a index all request
|
||||
if( (indexChanged && newIndexerValue) || (problemsChanged && newIndexerProblemsValue && newIndexerValue) )
|
||||
if( indexChanged && newIndexerValue )
|
||||
CCorePlugin.getDefault().getCoreModel().getIndexManager().indexAll(tempProject);
|
||||
else if( indexChanged && !newIndexerValue )
|
||||
CCorePlugin.getDefault().getCoreModel().getIndexManager().discardJobs( tempProject.getName() );
|
||||
else if( problemsChanged && !newIndexerProblemsValue ){
|
||||
CCorePlugin.getDefault().getCoreModel().getIndexManager().removeAllIndexerProblems(tempProject);
|
||||
else if( problemsChanged && newIndexerProblemsValue == 0){
|
||||
CCorePlugin.getDefault().getCoreModel().getIndexManager().removeIndexerProblems(tempProject);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -134,10 +133,10 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
return indexValue.booleanValue();
|
||||
}
|
||||
|
||||
public boolean getIndexerProblemsEnabled( IProject project ) throws CoreException
|
||||
public int getIndexerProblemsEnabled( IProject project ) throws CoreException
|
||||
{
|
||||
// See if there's already one associated with the resource for this session
|
||||
Boolean value = (Boolean) project.getSessionProperty(IndexManager.problemsActivationKey);
|
||||
Integer value = (Integer) project.getSessionProperty( IndexManager.problemsActivationKey );
|
||||
|
||||
// Try to load one for the project
|
||||
if (value == null) {
|
||||
|
@ -149,13 +148,13 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
if (value != null) {
|
||||
project.setSessionProperty(IndexManager.problemsActivationKey, value);
|
||||
} else {
|
||||
//Hmm, no persisted indexer value. Could be an old project - set to false and persist
|
||||
value = new Boolean(false);
|
||||
optionPage.setIndexerProblemsValue(false);
|
||||
//Hmm, no persisted indexer value. Could be an old project - set all to false and persist
|
||||
value = new Integer( 0 );
|
||||
optionPage.setIndexerProblemValues( 0 );
|
||||
optionPage.persistIndexerValues(project);
|
||||
}
|
||||
|
||||
return value.booleanValue();
|
||||
return value.intValue();
|
||||
}
|
||||
/**
|
||||
* Loads dis from .cdtproject file
|
||||
|
@ -181,20 +180,32 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
return strBool;
|
||||
}
|
||||
|
||||
private Boolean loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException
|
||||
private Integer loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException
|
||||
{
|
||||
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true);
|
||||
|
||||
Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild();
|
||||
Boolean strBool = null;
|
||||
Integer strInt = null;
|
||||
|
||||
while (child != null) {
|
||||
if (child.getNodeName().equals(IndexManager.INDEXER_PROBLEMS_ENABLED))
|
||||
strBool = Boolean.valueOf(((Element)child).getAttribute(IndexManager.INDEXER_VALUE));
|
||||
if (child.getNodeName().equals(IndexManager.INDEXER_PROBLEMS_ENABLED)) {
|
||||
String val = ((Element)child).getAttribute(IndexManager.INDEXER_PROBLEMS_VALUE);
|
||||
try{
|
||||
strInt = Integer.valueOf( val );
|
||||
} catch( NumberFormatException e ){
|
||||
//some old projects might have a boolean stored, translate that into just preprocessors
|
||||
Boolean bool = Boolean.valueOf( val );
|
||||
if( bool.booleanValue() )
|
||||
strInt = new Integer( IndexManager.PREPROCESSOR_PROBLEMS_BIT );
|
||||
else
|
||||
strInt = new Integer( 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
child = child.getNextSibling();
|
||||
}
|
||||
return strBool;
|
||||
return strInt;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue