1
0
Fork 0
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:
Andrew Niefer 2004-06-21 17:56:37 +00:00
parent 395aab5426
commit 574f68dad7
7 changed files with 155 additions and 91 deletions

View file

@ -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 2004-06-21 Alain Magloire
IndexManager, call CCorePlugin.getCDescriptor(.., false). IndexManager, call CCorePlugin.getCDescriptor(.., false).

View file

@ -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_VALUE = "indexValue"; //$NON-NLS-1$
public static final String INDEXER_PROBLEMS_VALUE = "indexProblemsValue"; //$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) { public synchronized void aboutToUpdateIndex(IPath path, Integer newIndexState) {
// newIndexState is either UPDATING_STATE or REBUILDING_STATE // newIndexState is either UPDATING_STATE or REBUILDING_STATE
// must tag the index as inconsistent, in case we exit before the update job is started // 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; return false;
} }
public boolean isIndexProblemsEnabled(IProject project) { public int indexProblemsEnabled(IProject project) {
Boolean value = null; Integer value = null;
try { try {
value = (Boolean) project.getSessionProperty(problemsActivationKey); value = (Integer) project.getSessionProperty(problemsActivationKey);
} catch (CoreException e) { } catch (CoreException e) {
} }
if (value != null) if (value != null)
return value.booleanValue(); return value.intValue();
try { try {
//Load value for project //Load value for project
value = loadIndexerProblemsEnabledFromCDescriptor(project); value = loadIndexerProblemsEnabledFromCDescriptor(project);
if (value != null){ if (value != null){
project.setSessionProperty(IndexManager.problemsActivationKey, value); project.setSessionProperty(IndexManager.problemsActivationKey, value);
return value.booleanValue(); return value.intValue();
} }
//TODO: Indexer Block Place holder for Managed Make - take out //TODO: Indexer Block Place holder for Managed Make - take out
value = new Boolean(false); value = new Integer(0);
project.setSessionProperty(IndexManager.problemsActivationKey, value); project.setSessionProperty(IndexManager.problemsActivationKey, value);
return value.booleanValue(); return value.intValue();
} catch (CoreException e1) { } catch (CoreException e1) {
} }
return false; return 0;
} }
/** /**
* Index the content of the given source folder. * Index the content of the given source folder.
@ -773,32 +777,44 @@ public class IndexManager extends JobManager implements IIndexConstants {
return strBool; return strBool;
} }
private Boolean loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException { private Integer loadIndexerProblemsEnabledFromCDescriptor(IProject project) throws CoreException {
// we are only checking for the settings do not create the descriptor. // we are only checking for the settings do not create the descriptor.
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, false); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, false);
Boolean strBool = null; Integer strInt = null;
if (descriptor != null) { if( descriptor != null ){
Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(CDT_INDEXER).getFirstChild();
while (child != null) { while (child != null) {
if (child.getNodeName().equals(INDEXER_PROBLEMS_ENABLED)) if (child.getNodeName().equals(INDEXER_PROBLEMS_ENABLED)){
strBool = Boolean.valueOf(((Element)child).getAttribute(INDEXER_PROBLEMS_VALUE)); 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(); child = child.getNextSibling();
} }
} }
return strBool; return strInt;
} }
static private class RemoveIndexMarkersJob extends Job{ static private class RemoveIndexMarkersJob extends Job{
private final IProject project; private final IResource resource;
public RemoveIndexMarkersJob( IProject project, String name ){ public RemoveIndexMarkersJob( IResource resource, String name ){
super( name ); super( name );
this.project = project; this.resource = resource;
} }
protected IStatus run(IProgressMonitor monitor) { protected IStatus run(IProgressMonitor monitor) {
try { try {
project.deleteMarkers( ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE ); resource.deleteMarkers( ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE );
} catch (CoreException e) { } catch (CoreException e) {
return Status.CANCEL_STATUS; 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$ 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.setPriority( Job.DECORATE );
job.schedule(); job.schedule();
} }

View file

@ -15,7 +15,6 @@ package org.eclipse.cdt.internal.core.search.indexing;
* @author bgheorgh * @author bgheorgh
*/ */
import java.io.BufferedInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -80,8 +79,8 @@ public class SourceIndexer extends AbstractIndexer {
SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, resourceFile, timeOut); SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, resourceFile, timeOut);
IndexManager manager = CCorePlugin.getDefault().getCoreModel().getIndexManager(); IndexManager manager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
boolean problemsEnabled = manager.isIndexProblemsEnabled( resourceFile.getProject() ); int problems = manager.indexProblemsEnabled( resourceFile.getProject() );
requestor.setProblemMarkersEnabled( problemsEnabled ); requestor.setProblemMarkersEnabled( problems );
requestor.requestRemoveMarkers( resourceFile, null ); requestor.requestRemoveMarkers( resourceFile, null );
//Get the scanner info //Get the scanner info
@ -103,7 +102,6 @@ public class SourceIndexer extends AbstractIndexer {
try try
{ {
CodeReader reader = new CodeReader(resourceFile.getLocation().toOSString(), resourceFile.getContents()); CodeReader reader = new CodeReader(resourceFile.getLocation().toOSString(), resourceFile.getContents());
BufferedInputStream inStream = new BufferedInputStream(resourceFile.getContents());
parser = ParserFactory.createParser( parser = ParserFactory.createParser(
ParserFactory.createScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService(), null ), ParserFactory.createScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService(), null ),
requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() ); requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
@ -145,7 +143,7 @@ public class SourceIndexer extends AbstractIndexer {
finally{ finally{
requestor.stopTimer(); requestor.stopTimer();
//if the user disable problem reporting since we last checked, don't report the collected problems //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(); requestor.reportProblems();
//Report events //Report events

View file

@ -100,7 +100,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
private IASTInclusion currentInclude = null; private IASTInclusion currentInclude = null;
private LinkedList includeStack = new LinkedList(); private LinkedList includeStack = new LinkedList();
private boolean problemMarkersEnabled = false; private int problemMarkersEnabled = 0;
private Map problemsMap = null; private Map problemsMap = null;
private IProgressMonitor pm = new NullProgressMonitor(); private IProgressMonitor pm = new NullProgressMonitor();
@ -704,14 +704,14 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
public boolean areProblemMarkersEnabled(){ public boolean areProblemMarkersEnabled(){
return problemMarkersEnabled; return problemMarkersEnabled != 0;
} }
public void setProblemMarkersEnabled( boolean enabled ){ public void setProblemMarkersEnabled( int value ){
if( enabled ){ if( value != 0 ){
problemsMap = new HashMap(); problemsMap = new HashMap();
} }
this.problemMarkersEnabled = enabled; this.problemMarkersEnabled = value;
} }
public void reportProblems(){ public void reportProblems(){
@ -754,9 +754,20 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
} }
public boolean shouldRecordProblem( IProblem problem ){ public boolean shouldRecordProblem( IProblem problem ){
if( problem.checkCategory( IProblem.PREPROCESSOR_RELATED ) ){ if( problem.getSourceLineNumber() == -1 )
return problem.getID() != IProblem.PREPROCESSOR_CIRCULAR_INCLUSION; 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; return false;
} }
@ -779,7 +790,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
} }
private class ProcessMarkersJob extends Job{ private class ProcessMarkersJob extends Job{
private final List problems; protected final List problems;
private final IFile resource; private final IFile resource;
public ProcessMarkersJob( IFile resource, List problems, String name ){ public ProcessMarkersJob( IFile resource, List problems, String name ){
super( name ); super( name );
@ -799,7 +810,7 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
} }
return Status.OK_STATUS; return Status.OK_STATUS;
} }
}; }
abstract private class Problem { abstract private class Problem {
public IFile file; public IFile file;

View file

@ -51,5 +51,9 @@ AbstractErrorParserBlock.label.errorParsers=Error Parsers
ICElementPropertyConstants.catagory=Binary Info ICElementPropertyConstants.catagory=Binary Info
IndexerOptions.indexer = C/C++ Indexer IndexerOptions.indexer = C/C++ Indexer
IndexerOptions.enableIndexing = Enable C/C++ Indexing IndexerOptions.enableIndexing = Enable C/C++ &Indexing
IndexerOptions.enableProblems = Enable C/C++ Index problem reporting IndexerOptions.problemReporting = C/C++ Index problem reporting
IndexerOptions.enablePreprocessor = Report &preprocessor problems
IndexerOptions.enableSemantic = Report &semantic problems
IndexerOptions.enableSyntactic = Report s&yntactic problems

View file

@ -32,12 +32,17 @@ import org.w3c.dom.Node;
public class IndexerOptionDialogPage extends DialogPage { 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 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 = 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 indexerEnabled;
private Button indexerProblemsEnabled; private Button preprocessorProblemsEnabled;
private Button syntacticProblemsEnabled;
private Button semanticProblemsEnabled;
public IndexerOptionDialogPage(){ public IndexerOptionDialogPage(){
super(); super();
@ -60,8 +65,16 @@ public class IndexerOptionDialogPage extends DialogPage {
group.setText( INDEXER ); group.setText( INDEXER );
indexerEnabled = createCheckButton(group, ENABLE_INDEXING ); 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); setControl(result);
} }
@ -83,16 +96,24 @@ public class IndexerOptionDialogPage extends DialogPage {
indexerEnabled.setSelection(value); indexerEnabled.setSelection(value);
} }
public void setIndexerProblemsValue( boolean value ){ public void setIndexerProblemValues( int value ){
indexerProblemsEnabled.setSelection( 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(){ public boolean getIndexerValue(){
return indexerEnabled.getSelection(); return indexerEnabled.getSelection();
} }
public boolean getIndexerProblemsValue(){ public int getIndexerProblemsValues(){
return indexerProblemsEnabled.getSelection(); 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){ public void persistIndexerValues(IProject project){
@ -105,7 +126,6 @@ public class IndexerOptionDialogPage extends DialogPage {
descriptor = CCorePlugin.getDefault().getCProjectDescription(newProject, true); descriptor = CCorePlugin.getDefault().getCProjectDescription(newProject, true);
rootElement = descriptor.getProjectData(IndexManager.CDT_INDEXER); rootElement = descriptor.getProjectData(IndexManager.CDT_INDEXER);
// Clear out all current children // Clear out all current children
Node child = rootElement.getFirstChild(); Node child = rootElement.getFirstChild();
while (child != null) { while (child != null) {
@ -115,21 +135,19 @@ public class IndexerOptionDialogPage extends DialogPage {
Document doc = rootElement.getOwnerDocument(); Document doc = rootElement.getOwnerDocument();
boolean indexProject = getIndexerValue(); boolean indexProject = getIndexerValue();
boolean problemsEnabled = getIndexerProblemsValue(); int problemValues = getIndexerProblemsValues();
saveIndexerEnabled(indexProject, rootElement, doc); saveIndexerEnabled(indexProject, rootElement, doc);
saveIndexerProblemsEnabled( problemsEnabled, rootElement, doc ); saveIndexerProblemsEnabled( problemValues, rootElement, doc );
descriptor.saveProjectData(); descriptor.saveProjectData();
//Update project session property //Update project session property
project.setSessionProperty(IndexManager.activationKey,new Boolean(indexProject)); project.setSessionProperty(IndexManager.activationKey,new Boolean(indexProject));
project.setSessionProperty(IndexManager.problemsActivationKey, new Boolean( problemsEnabled )); project.setSessionProperty(IndexManager.problemsActivationKey, new Integer( problemValues ));
} catch (CoreException e) { } catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -143,13 +161,12 @@ public class IndexerOptionDialogPage extends DialogPage {
rootElement.appendChild(indexEnabled); 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); 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); rootElement.appendChild(enabled);
} }
} }

View file

@ -31,7 +31,7 @@ public class IndexerOptionPropertyPage extends PropertyPage {
private IndexerOptionDialogPage optionPage; private IndexerOptionDialogPage optionPage;
private boolean oldIndexerValue; private boolean oldIndexerValue;
private boolean oldIndexerProblemsValue; private int oldIndexerProblemsValue;
public IndexerOptionPropertyPage(){ public IndexerOptionPropertyPage(){
super(); super();
@ -64,12 +64,11 @@ public class IndexerOptionPropertyPage extends PropertyPage {
oldIndexerValue = getIndexerEnabled(project); oldIndexerValue = getIndexerEnabled(project);
oldIndexerProblemsValue = getIndexerProblemsEnabled( project ); oldIndexerProblemsValue = getIndexerProblemsEnabled( project );
} catch (CoreException e) { } catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
optionPage.setIndexerValue(oldIndexerValue); optionPage.setIndexerValue(oldIndexerValue);
optionPage.setIndexerProblemsValue( oldIndexerProblemsValue ); optionPage.setIndexerProblemValues( oldIndexerProblemsValue );
} }
/* /*
@ -78,10 +77,10 @@ public class IndexerOptionPropertyPage extends PropertyPage {
public boolean performOk() { public boolean performOk() {
boolean newIndexerValue = optionPage.getIndexerValue(); boolean newIndexerValue = optionPage.getIndexerValue();
boolean newIndexerProblemsValue = optionPage.getIndexerProblemsValue(); int newIndexerProblemsValue = optionPage.getIndexerProblemsValues();
boolean indexChanged = (oldIndexerValue != newIndexerValue); boolean indexChanged = (oldIndexerValue != newIndexerValue);
boolean problemsChanged = (oldIndexerProblemsValue != newIndexerProblemsValue); boolean problemsChanged = (oldIndexerProblemsValue != newIndexerProblemsValue );
if ( indexChanged || problemsChanged){ if ( indexChanged || problemsChanged){
//persist new values //persist new values
@ -89,12 +88,12 @@ public class IndexerOptionPropertyPage extends PropertyPage {
optionPage.persistIndexerValues(tempProject); optionPage.persistIndexerValues(tempProject);
//if indexer is now on send a index all request //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); CCorePlugin.getDefault().getCoreModel().getIndexManager().indexAll(tempProject);
else if( indexChanged && !newIndexerValue ) else if( indexChanged && !newIndexerValue )
CCorePlugin.getDefault().getCoreModel().getIndexManager().discardJobs( tempProject.getName() ); CCorePlugin.getDefault().getCoreModel().getIndexManager().discardJobs( tempProject.getName() );
else if( problemsChanged && !newIndexerProblemsValue ){ else if( problemsChanged && newIndexerProblemsValue == 0){
CCorePlugin.getDefault().getCoreModel().getIndexManager().removeAllIndexerProblems(tempProject); CCorePlugin.getDefault().getCoreModel().getIndexManager().removeIndexerProblems(tempProject);
} }
} }
return true; return true;
@ -134,10 +133,10 @@ public class IndexerOptionPropertyPage extends PropertyPage {
return indexValue.booleanValue(); 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 // 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 // Try to load one for the project
if (value == null) { if (value == null) {
@ -149,13 +148,13 @@ public class IndexerOptionPropertyPage extends PropertyPage {
if (value != null) { if (value != null) {
project.setSessionProperty(IndexManager.problemsActivationKey, value); project.setSessionProperty(IndexManager.problemsActivationKey, value);
} else { } else {
//Hmm, no persisted indexer value. Could be an old project - set to false and persist //Hmm, no persisted indexer value. Could be an old project - set all to false and persist
value = new Boolean(false); value = new Integer( 0 );
optionPage.setIndexerProblemsValue(false); optionPage.setIndexerProblemValues( 0 );
optionPage.persistIndexerValues(project); optionPage.persistIndexerValues(project);
} }
return value.booleanValue(); return value.intValue();
} }
/** /**
* Loads dis from .cdtproject file * Loads dis from .cdtproject file
@ -181,20 +180,32 @@ public class IndexerOptionPropertyPage extends PropertyPage {
return strBool; return strBool;
} }
private Boolean loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException private Integer loadIndexerProblemsEnabledFromCDescriptor( IProject project ) throws CoreException
{ {
ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true); ICDescriptor descriptor = CCorePlugin.getDefault().getCProjectDescription(project, true);
Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild(); Node child = descriptor.getProjectData(IndexManager.CDT_INDEXER).getFirstChild();
Boolean strBool = null; Integer strInt = null;
while (child != null) { while (child != null) {
if (child.getNodeName().equals(IndexManager.INDEXER_PROBLEMS_ENABLED)) if (child.getNodeName().equals(IndexManager.INDEXER_PROBLEMS_ENABLED)) {
strBool = Boolean.valueOf(((Element)child).getAttribute(IndexManager.INDEXER_VALUE)); 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(); child = child.getNextSibling();
} }
return strBool; return strInt;
} }
} }