2004-01-21  Anthony Green
  
	PR 50397.
 
	* utils/org/eclipse/cdt/utils/elf/Elf.java: Add some ELF machine
	magic numbers.
	RS6000 is ppc, not mips.  Fix some typos.
 
2004-01-20 Alain Magloire

	To remove the hardcoded "objdump" we had to lay
	down some infrastructure.  This is base on ideas/patch
	from Chris Songer.  The idea is to define in the IToolsProvider
	the Objdump class and reuse it to implement IBinaryFile.getContents().
	Next step is to come up with ObjdumpEditor, to go this route
	will be more flexible.

	* model/org/eclipse/cdt/internal/core/model/Binary.java
	* utils/org/eclipse/cdt/utils/CygwinToolsProvider.java
	* utils/org/eclipse/cdt/utils/ToolsProvider.java
	* utils/org/eclipse/cdt/utils/Objdump.java
	* utils/org/eclipse/cdt/utils/IToolsProvider.java
	* utils/org/eclipse/cdt/utils/coff/parser/CygwinPEParser.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryFilejava
	* utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java
	
	
2004-01-19 John Camelon
		Updated CModelBuilder to access line number information from IASTOffsetableElement.

2004-01-16 Hoda Amer
	Solution to bug#47552: IEnumerator#getConstantExpression is always empty
	
2004-01-15 Hoda Amer
	Moved Content Assist log to the UI plugin
	
2004-01-13 Alain Magloire

	Small fix on in the elf parser, we have to check for 
	Elf.Symbol.SHN_HIPROC, Elf.Symbol.SHN_LOPROC
	that the st_shndx field is not is in this range.

	* utils/org/eclipse/cdt/utils/elf/ElfHelper.java

2004-1-5 David Inglis
	
	PR 49851
	Fixed deadlock when binary parser was changed while binary runner was running
	for that project.
	
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java

2004-01-09 Alain Magloire

	* utils/org/eclipse/cdt/utils/coff/parser/BinaryObject.java
	Fix bug in finding the symbols.
	* utils/org/eclipse/cdt/utils/coff/parser/Symbol.java
	Implement ISymbol.java

2004-01-09 Alain Magloire

	* src/org/eclipse/cdt/core/IBinaryParser.java
	Added ISymbol.getSize().
	* utils/org/eclipse/cdt/utils/elf/Elf.java
	Fix bug in finding the symbols.
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryObject.java
	Fix bug in finding the symbols.
	* utils/org/eclipse/cdt/utils/elf/parser/Symbol.java
	Implement ISymbol.java
	* utils/org/eclipse/cdt/utils/stabs/Stabs.java
	New Methods.
	* utils/org/eclipse/cdt/utils/stabs/StabAddre2line.java
	Work in progress.

2004-01-08 Hoda Amer
	Added Content assist log capabilities
	
2004-01-06 Alain Magloire

	Simple draft implementation of stabs debug format parsing.
	Not ready.

	* utils/org/eclipse/cdt/utils/stabs: New package implementing
	Stabs debug format parsing.

2003-12-29 Hoda Amer
	Content Assist Work : Moved ICompletionRequestor from core to ui
	
2003-12-19 Alain Magloire

	Added a getCommandLine() method on the CommandLauncher
	to help PR 41417.

	* src/org/eclipse/cdt/core/CommandLauncher.java

2003-12-16 Alain Magloire

	PR 48921.
	On windows, Object files (*.o) does not have a
	particular signature we have to compare to the known
	CPU flags part of COFF

	* utils/org/eclipse/cdt/utils/coff/parser/PEParser.java

2003-12-15 Alain Magloire

	Patch from Thomas F.
	Update to classify ld warnings as warning markers instead
	of "problem" marker
                                                                                
	* src/org/eclipse/cdt/internal/errorparsers/GLDErrorParser.java

2003-12-11 David Inglis
	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=48596
	
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	
2003-12-11 Alain Magloire

	Call the super() constructor.

	* model/org/eclipse/cdt/internal/core/model/SetCPathEntriesOperation.java

2003-12-04 David Inglis
	Fixed bug# 48063
	
	* src/org/eclipse/cdt/core/CCorePlugin.java

2003-12-03 Hoda Amer
	Content Assist work :Moved CompletionEngine out of CDT core
	
2003-11-27 Hoda Amer
	Content Assist work : Added an ICompletionRequestor interface
	and a CompletionRequestorAdaptor classe.
	
2003-11-20 Alain Magloire

	The profiler need to get the line number of the offset within
	a Symbol.  We provide this functionnality.
	
	* src/org/eclipse/cdt/IBinaryParser.java
	* utils/org/eclipse/cdt/utils/elf/parser/Symbol.java
	* utils/org/eclipse/cdt/utils/coff/parser/Symbol.java

2003-11-20 Alain Magloire

	Remove of methods that are JVM 1.4.x
	* model/org/eclipse/cdt/internal/core/model/Binary.java
	
2003-11-19 Alain Magloire

	Improve performance on the binary parser, and fix a JUnit test.

	* model/org/eclipose/cdt/internal/core/model/Binary.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryObject.java

2003-11-19 Hoda Amer
	Added a completion engine class.

2003-11-18 Alain Magloire

	Attempt to address performance problems from the binary parser
	on big projects.  The problem is that files are open multiple
	times to detect if they are binaries or archives.   We can
	not really rely on the filename or extension.  A new method
	as been added to the IBinaryParser interface, isBinary()
	taken an intial byte[].

	* model/org/eclipse/cdt/internal/core/model/Binary.java
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	* model/org/eclipse/cdt/internal/core/model/NullBinaryParser.java
	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/IBinaryParser.java
	* utils/org/eclipse/cdt/utils/coff/PE.java
	* utils/org/eclipse/cdt/utils/coff/PEArchive.java
	* utils/org/eclipse/cdt/utils/coff/parser/ARMember.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryObject.java
	* utils/org/eclipse/cdt/utils/coff/parser/PEParser.java
	* utils/org/eclipse/cdt/utils/coff/parser/Symbol.java
	* utils/org/eclipse/cdt/utils/elf/AR.java 
	* utils/org/eclipse/cdt/utils/elf/parser/ARMember.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java
	* utils/org/eclipse/cdt/utils/elf/parser/Symbol.java

2003-11-17 Doug Schaefer
	Nothing just testing the commit logs

2003-11-13 David Inglis
	Fixed #46431
	* utils/org/eclipse/cdt/utils/spawner/EnvironmentReader.java

2003-11-06 David Inglis
	
	Fix for 45835 also changed binary runner control to stop running when project closes/open/deleted
	
	* model/org/eclipse/cdt/internal/core/CModelManager.java
	* model/org/eclipse/cdt/internal/core/BinaryRunner.java

2003-11-06 David Inglis
	
	Futher changes for 45736
	
	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	
	
2003-10-29 David Inglis
	
	Fix for 45734 & 45736, Though this only addresses a small part on the later.
	
	Prevents child element creation when releasing parent element
	Prevent binary file check when have already obtained a translation unit.
	
	* model/org/eclipse/cdt/internal/core/CModelManager.java
	  
2003-10-29 Alain Magloire

	Fix for PR 45733

	The BinaryContainer and the ArchiveContainer were not deleted
	when the CProject was release.

	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	* model/org/eclipse/cdt/internal/core/model/CProject.java
2003-10-27 Alain Magloire

	Fix PR45609:
	IWorkspaceRoot.getFileForLocation() does not work well when
	the resource is linked, we should fall back to
	IWorkspaceRoot.findFilesForLocation().

	* src/org/eclipse/cdt/core/ErrorParserManager.java

2003-10-23 Alain Magloire

	Firing deltas on cpathentries modifications.

	* model/org/eclipse/cdt/core/model/ICElementDelta.java:
	* model/org/eclipse/cdt/core/model/ICProject.java:
	* model/org/eclipse/cdt/internal/core/model/CProject.java:
	* model/org/eclipse/cdt/internal/core/model/core/CProject.java
	* model/org/eclipse/cdt/internal/core/model/core/SetCPathEntriesOperation.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReferenceArchive.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReferenceShared.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReference.java
	* model/org/eclipse/cdt/internal/core/model/core/Archive.java
	* model/org/eclipse/cdt/internal/core/model/core/Binary.java
	* model/org/eclipse/cdt/internal/core/model/core/CPathEntry.java
	* model/org/eclipse/cdt/internal/core/model/core/ACPathEntry.java

2003-10-23 Alain Magloire

	Remove the old Implementation of ICPathEntry and use the new one.

	* src/org/eclipse/cdt/core/ICPathEntry.java: Removed.
	* src/org/eclipse/cdt/internal/core/CPathEntry.java: Removed.
	* src/org/eclipse/cdt/internal/core/CDescription.java: Removed.
	* src/org/eclipse/cdt/core/CCorePlugin.java: Removed.
	* model/org/eclipse/cdt/core/model/ICProject.java
	* model/org/eclipse/cdt/internal/core/model/core/CProject.java
	* model/org/eclipse/cdt/internal/core/model/core/SetCPathEntriesOperation.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReferenceArchive.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReferenceShared.java
	* model/org/eclipse/cdt/internal/core/model/core/LibraryReference.java
	* model/org/eclipse/cdt/internal/core/model/core/Archive.java
	* model/org/eclipse/cdt/internal/core/model/core/Binary.java
	* model/org/eclipse/cdt/internal/core/model/core/CPathEntry.java

2003-10-22 Hoda Amer
	Fix for bug#40759: Offsets of macroexpansions are not correct 
	Fix for bug#44633: Outline View : CModelBuilder quits on templated friends 
	
2003-10-21 Alain Magloire

	Moving the implementation of the ICPathEntry in the Core Model
	new files:

	* model/org/eclipse/cdt/core/model/IIncludeEntry.java
	* model/org/eclipse/cdt/internal/core/model/IncludeEntry.java
	* model/org/eclipse/cdt/core/model/IMacroEntry.java
	* model/org/eclipse/cdt/internal/core/model/IIncludeEntry.java
	* model/org/eclipse/cdt/core/model/ICPathEntry.java
	* model/org/eclipse/cdt/internal/core/model/CPathEntry.java
	* model/org/eclipse/cdt/core/model/ILibraryEntry.java
	* model/org/eclipse/cdt/internal/core/model/LibraryEntry.java
	* model/org/eclipse/cdt/core/model/ISourceEntry.java
	* model/org/eclipse/cdt/internal/core/model/SourceEntry.java

2003-10-20 Hoda Amer
	Fixed bug#44507 outline flickers with CDT1.2 RC0
	Returned a boolean from IWorkingCopy.reconcile() indicating
	if there was a real change.

2003-10-20 David Inglis
	fixed junit breakage - testGetSoname()    
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryShared.java

2003-10-18 Alain Magloire

	Implement a Cygwin PE parser where addr2line, c++filt
	cygpath can be set.  Remove the old implementation
	in the core model.

	* plugin.xml: Advertise the new Cygwin PE parser.

	* utils/org/eclipse/cdt/utils/coff/parser/BinaryFile.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryObject.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryExcutable.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryShared.java
	* utils/org/eclipse/cdt/utils/coff/parser/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/ICygwinToolsProvider.java

	* model/org/eclipse/cdt/internal/model/parser/PEBinaryFile.java
	* model/org/eclipse/cdt/internal/model/parser/ElfBinaryFile.java
	* model/org/eclipse/cdt/internal/model/parser/PEBinaryArchive.java
	* model/org/eclipse/cdt/internal/model/parser/ElfBinaryArchive.java
	Removed

2003-10-17 Alain Magloire

	A proposed fix from c_ravikanth@xxxx, for a more meaningfull
	error message.
	PR 44160

	* utils/org/eclipse/cdt/utils/spawner/Spawner.java

2003-10-14 Alain Magloire

	Change the scheme slightly to keep on looking for pattern
	for exampel
	/c/stuff/C:/filename:12 error
	in Cygwin this error would never be found now we keep on
	trying.

	* src/org/eclipse/cdt/intenal/errorparsers/GCCErrorParser.java

2003-10-14 Alain Magloire

	Always fetch the addr2line/c++path in the .cdtproject

	* utils/org/eclipse/cdt/utils/elf/BinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/elf/ElfParser.java
	* utils/org/eclipse/cdt/utils/elf/GNUElfParser.java

2003-10-07 Alain Magloire

	More work on the GNU Elf Binary parser.
	Move some calls that extends the Addr2line class.

	* utils/org/eclipse/cdt/utils/elf/BinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/elf/ElfParser.java
	* utils/org/eclipse/cdt/utils/elf/GNUElfParser.java
	* utils/org/eclipse/cdt/utils/Addr2line.java

2003-10-06 Alain Magloire

	Implementation of the GNU Elf parser, where you can
	change the path of the external commands: addr2line and cppfilt.

	* plugin.xml: Enable the GNU Elf Parser.
	* utils/org/eclipse/cdt/utils/elf/BinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/Addr2line.java
	* utils/org/eclipse/cdt/utils/elf/CPPFilt.java

2003-10-01 Bogdan Gheorghe
	
	Changed DeltaProcessor.updateDependencies to use the CModelManager
	header file definitions
	
	Modified CDTLogWriter: increased max log file size to 10MB; got rid of
	the stack dumps; added flush to CDTLogWriter
	
	* src/org/eclipse/cdt/internal/core/CDTLogWriter.java
	
2003-10-01 Rob Jackson

	Avoid a NPE when processing non-absolute FILE references in elf binaries

	* model/org/eclipse/cdt/intenal/core/model/BinaryElement.java

2003-09-30 Bogdan Gheorghe
	
	- Created CDTLogWriter class
	- Added CDTLogWriter startup/shutdown to CCorePlugin
	- Changed  Util class to make use of ICLogConstants to distinguish
	  between PDE and CDT logs.
	- Modified the Buffer class to log errors to the CDT log
	  
	 * src/org/eclipse/cdt/core/CCorePlugin.java
	 * src/org/eclipse/cdt/core/ICLogConstants.java
	 * src/org/eclipse/cdt/internal/core/CDTLogWriter.java
	 * model/org/eclipse/cdt/internal/core/model/Util.java
	 * model/org/eclipse/cdt/internal/core/model/Buffer.java
	 
2003-09-25 Bogdan Gheorghe

	- Got rid of refs to old dependency service; restructured
	  index request section 
	
	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/model/CoreModel.java
	* src/org/eclipse/cdt/internal/core/model/CModelManager.java
	* src/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	
2003-09-24 Alain Magloire

	With the removal of the old CDT parser, there was no
	need to keep this method around
		parser(InputStream in)
	in the TranslationUnit.	The parser content is retrieve via
	the IBuffer now.  The method
		parser()
	calss the CModelBuilder directly.
	
	* src/org/eclipse/cdt/internal/core/model/TranslationUnit.java

2003-09-24 Alain Magloire

	* src/org/eclipse/cdt/core/ErrorParserManager.java
	Possible NPE fix, when hitting cancel.

2003-09-24 David Inglis
	
	* src/org/eclipse/cdt/internal/core/CExtensionInfo.java
	null should removed attributes.
	
	* src/org/eclipse/cdt/internal/core/CDescriptor.java	
	Fixed bug# 43533
	
	* model/org/eclipse/cdt/internal/core/model/Binary.java
	Help with slow IBinary interface.
	
2003-09-22 Bogdan Gheorghe

	Took out old CTags code from CCorePlugin
	
	* org.eclipse.cdt.core.CCorePlugin

2003-09-19 Hoda Amer
	Solution to bug#43162 : Code Assist not showing the right return value:
	Saved a function return value string in the BasicSearchMatch object.
	Created a new package org.eclipse.cdt.internal.core.parser.util and 
	added ASTUtil class with static methods to help convert an ASTFunction 
	return type from IASTAbstractDeclaration to String. Note that this was
	previously implemented in the CModelBuilder. I just moved it to a common 
	library for others (BasicSearchMatch) to use.

2003-09-16 Alain Magloire

	Putting the draft work to do a special binary parser
	that the addr2line and c++filt command could be set
	via extension in the ui.

	* utils/org/eclipse/cdt/utils/elf/parser/GNUElfParser.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryObject.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryExecutable.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryShared.java
	* utils/org/eclipse/cdt/utils/elf/parser/BinaryArchive.java
	* utils/org/eclipse/cdt/utils/elf/parser/ARMember.java

2003-09-16 David Inglis

	Deprecate old make builder
	
	* src/org/eclipse/cdt/core/resources/MakeUtil.java
	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/CProjectNature.java

2003-09-12 Alain Magloire
	Patch from Bogdan Gheorghe, it corrected a NPE, when dealing with file extensions.
	In a Unix enviroment binaries do not have extensions also some C++ headers
	do not have extension, for example "cstdio" etc .. The patch guard agains null.
	
	Second part added debug loggin trace

	* .options
	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	* src/org/eclipse/cdt/core/CCorePlugin.java

2003-09-12 Keith Campbell
    Added missing dependency on org.eclipse.team.core (this plugin defines extensions
    to org.eclipse.team.core.fileTypes and org.eclipse.team.core.ignore).
    * .classpath
    * .project
    * plugin.xml

2003-09-10 Sean Evoy
	Work completed to resolve [Bug 41412] "Restore Default in Managed Build project's 
	settings Not Working". The configuration now has a reset method that removes 
	any user settings and replaces them with the values defined in the plugin 
	manifest. The Configuration class also has a new, safe accessor for getting 
	at the defined tool references. Replaced all the checks for null with the accessor. 
	Added some string constants to the IConfiguration and ITarget interfaces 
	so manifest element lookup will be easier to maintain should the element names change. 
	Switched the Target class to use the new string constants during element lookup. 
	Added back a method in IConfiguration to lookup the parent configuration (which is the 
	plugin element I need to do the reset). 
	* build/org/eclipse/cdt/internal/core/build/managed/Configuration.java
	* build/org/eclipse/cdt/core/build/managed/IConfiguration.java
	* build/org/eclipse/cdt/core/build/managed/ITarget.java
	* build/org/eclipse/cdt/core/build/managed/ITool.java
	* build/org/eclipse/cdt/internal/core/build/managed/Target.java
	
	Work to resolve [Bug 42735] "Manage Make will try to generate makefile for Release or 
	Debug directory". Added a new method to return all the configuration names so 
	the generator will know that the directory <project_root>/<config_name> should be ignored.
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java
	* build/org/eclipse/cdt/core/build/managed/IManagedBuildInfo.java

	Work to partially implement incremental build. New incremental build logic in the 
	incrementalBuild() method in the GeneratedMakefileBuilder class. It now calls a 
	specialized method in the makefile generator that calculates and generates the
	needed makefiles and fragments. It then calls build if there are any changes worthy
	of a build.
	* src/org/eclipse/cdt/internal/core/GeneratedMakefileBuilder.java
	* src/org/eclipse/cdt/internal/core/MakefileGenerator.java

2003-09-05 Bogdan Gheorghe

	Hooked in the dependency checking on file changes in Delta
	Processor.java. When a header files' contents change we look
	up the referencing files in the dep tree table and reindex them.
	
	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	
2003-09-05 Alain Magloire

	The PTY classes are using one instance of the master fd for Input/Output/Error
	Streams. We need to wrap the fd access, to not throw IOException on multiple close.

	* utils/org/eclipse/cdt/utils/pty/PTY.java
	* utils/org/eclipse/cdt/utils/pty/PTYInputStream.java
	* utils/org/eclipse/cdt/utils/pty/PTYOutputStream.java

2003-09-04 Hoda Amer
	- Added references to variables in solution of bug#42453:Expression result types not computed
	- Solution to bug#42560: Class Cast Exception during Method definition
	
2003-09-04 Alain Magloire

	The IProgressMonitor.setCancelled() is incorrect, it tries to access
	widget withour wrapping things in Display.async().  Even if the IProgressMonitor
	is a "core" Class.  We workaround this by not using the method.

	PR 42501.  When the clock setting is incorrect GNU Make will throw something like:
		make: *** Warning: clock File`...` has modification in the future
	It was show as an error.  Thanks to Brent for the catch.

	* src/org/eclipse/cdt/internal/core/CBuilder.java
	* src/org/eclipse/cdt/internal/core/errorparsers/MakeErrorParser.java
	
2003-09-04 Hoda Amer
	- Changed the ASTExpression of the complete package to store the
	whole ITOkenDuple for the typeId instead of just the string.
	- Changed the ASTExpression in both quick and complete packages and
	deleted the "id" parameter.
	- Added partial solution to bug #42453:Expression result types not computed.
	Now they are computed for simple types only.
	
2003-09-03 David Inglis
	Added shared preference key for error parsers
	
	* src/org/eclipse/cdt/core/ErrorParserManager.java
	
2003-09-01 Alain Magloire

	Typo in the class signature.

	* plugin.xml

2003-08-31 Alain Magloire

	Add method to save the ErrorParsers
	Change ErrorParserManger to use the extension point for the ErrorParser.

	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/ErrorParserManager.java

2003-08-31 Alain Magloire

	Add method to retrieve the Error Parsers in the CCorePlugin.
	Add extension point  for the ErrorParser.

	* src/org/eclipse/cdt/core/CCorePlugin.java
	* plugin.xml
	* plugin.properties

2003-08-28 Alain Magloire

	Change the TranslationUnit to not always assume that it has a valid
	IResource/IFile.
	* model/org/eclipse/cdt/internal/core/model/TranslationUnit.java

2003-08-28 Hoda Amer
	Solution to bugs #39961 & #39968:
	-Template Union missing an icon
	-Template parameter signature documentation

2003-08-28 Hoda Amer
	- Added resolving references in a method's qualified name 
	in Complete parse mode.
	Example (.cpp file ): The method "A::B::C::aMethod(){};"
	used to be an IASTFunction, with name = "A::B::C::aMethod".
	Now is an IASTMethod, with name = "aMethod", and references to 
	class A, class B and class C.
	- Added the checking for "isConstructor" and "isDestructor"
	for an IASTMethod in complete parse mode.
	
2003-08-26 Bogdan Gheorghe
	- Modified start up code to set debug trace options
	- Added trace debug statements to CModelBuilder.
	- Added IDebugLogConstants which contain ids for all 
	  Util.debugLog clients (currently Parser and CModelBuidler)
	- Modified Util.java to make use of IDebugLogConstants
	
2003-08-25 Hoda Amer
	Modified the IASTFactory to take three expression lists 
	for the createNewDescriptor() instead of just one. 
	They are : newPlacementExpressions, newTypeIdExpressions, and
	newInitializerExpressions.
	
2003-08-25 John Camelon
	Updated Structure.java to keep JDK 1.3 compliance.  

2003-08-21 Hoda Amer
	- C Model cleanups + solutions to bug#38985 & bug#38986
		getField(String)		Implemented
		getFields()				Implemented
		getMethod(String)		Implemented
		getMethods()			Implemented
		isAbstract()			Implemented
		getBaseTypes()			Has been replaced by getSuperClassesNames()
		getAccessControl(int)	Has been replaced by getSuperClassAccess(String name)
	- Added some methods to IMethodDeclaration, namely:
	isFriend(), isInline(), isVirtual(), and isPureVirtual().
	
2003-08-20 Alain Magloire

	When doing the IPlugin.shutdown().  We have to make
	sure that the binarySearch threads are terminated.
	
	* src/org/eclipse/cdt/internal/core/model/BinaryRunner.java

2003-08-19 Sean Evoy
	In order to properly support the indexing feature, the scanner has to 
	function as well as the version that ships with the toolset if possible. 
	This is	made difficult by the fact that we are trying to be tool-agnostic. 
	One of the things that the scanner should take into account when it runs 
	is the "built-in" symbols and search paths that are defined for a compiler 
	in a given toolchain. While we need to come up with a standard mechanism 
	for the CDT in the future, the managed build system can provide a work-around 
	in the near-term. The easiest solution is to add an optional attribute to a 
	list element that flags the item as a built-in value. When clients like 
	the indexer query the build model, they will receive the union of the built-in 
	values and the user-defined values.
	
	Updated the comment for the IScannerInfo::getIncludesPaths() method to 
	explain the content of the return value.
	* parser/org/eclipse/cdt/core/parser/IScannerInfo.java	

	Added code to answer the built-ins when IScannerInfo methods are called.
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java
	
	Updated the schema to include the new attribute
	* schema/ManagedBuildTools.exsd

	Added a public method to extract the built-in values for an option.	
	* build/org/eclipse/cdt/core/build/managed/IOption.java
	
	Added the code to read, store and persist the built-in list values 
	differently than standard list elements. Also added code to answer 
	those built-ins to conform to the interface change.
	* build/org/eclipse/cdt/internal/core/build/managed/Option.java
	* build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java

2003-08-20 Hoda Amer
	Modified the parser's newExpression() to send all its sub expressions
	to the newDescriptor and check on each expression to find references 
	in the CompleteParserASTFactory.createExpression().

2003-08-13 Sean Evoy
	Changed text generated into makefile comments from the rather abstract 
	term 'module' to the more meaningful 'subdirectory'.
	* src/org/eclipse/cdt/internal/core/CCorePluginResources.properties
	
	Added place-holder macro for LIBS and changed the source file look-up code to 
	ignore source it finds in generated directories during a build, even if it has a tool 
	that says it builds for it.
	* src/org/eclipse/cdt/internal/core/MakefileGenerator.java
	
	Changed class to deal with build targets that do not specify an extension 
	(like POSIX executables). 
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java
	* build/org/eclipse/cdt/internal/core/build/managed/Tool.java

2003-08-13 Sean Evoy
	The major change in the increment of work is the new discovery mechanism 
	that clients will use to find the IScannerInfoProvider for a project. 
	Rather than a simple extension point which requires the client to iterate 
	over all registered providers, the CExtension feature will be used to 
	register the provider at project creation time, and to find the provider 
	at runtime. 
	
	Changed the plugin entries for the two builders currently described. The 
	schema for the ScannerInfoProvider was removed, and the plugin description 
	was converted to work with the CExtension feature.
	* plugin.xml
	* schema/ScannerInfoProvider.exsd (removed)

	Added a method to find and create the provider described in the extension point. 
	Used by clients at runtime to discover the provider.
	* src/org/eclipse/cdt/core/CCorePlugin.java
	
	Changed the IScannerInfoProvider interface by removing the 'managesResource' 
	method (no more iteration required) and adding a method so clients can get 
	build information as soon as they get the provider and before they subscribe.
	* parser/org/eclipse/cdt/core/parser/IScannerInfoProvider.java	
	
	Updated the two classes that implemet the interface and made them inherit from 
	AbstractCExtension in order to be managed by the CExtension feature. 
	* build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java
	* build/org/eclipse/cdt/core/build/standard/StandardBuildManager.java

2003-08-12 Hoda Amer
	Moved CharOperations and Utils from internal.core.search to internal.core
	Added CConventions class to validate class names
	Used the new search (indexer) for Code completion in CCompletionProcessor
	
2003-08-11 Andrew Niefer
	Added getSharedWorkingCopies to CCorePlugin.
	
2003-08-10 Sean Evoy
	Fix for Bug 41274. Was not saving the library option properly because the value type 
	of the option was not recognized.
	* build/org/eclipse/cdt/internal/core/build/managed/Configuration.java

2003-07-30 Hoda Amer
	The C Model recognizes pointers to functions.

2003-07-30 Sean Evoy
	The managed build model is going to go through a bit of change over the next while.
	In order to make that more manageable, I have moved all the hard-coded strings used 
	to access the XML elements of the extension point definition into the appropriate
	interface classes. 
	
	* build/org/eclipse/cdt/core/build/managed/IBuildObject.java
	* build/org/eclipse/cdt/core/build/managed/IConfiguration.java
	* build/org/eclipse/cdt/core/build/managed/IOption.java
	* build/org/eclipse/cdt/core/build/managed/IOptionCategory.java
	* build/org/eclipse/cdt/core/build/managed/ITool.java
	* build/org/eclipse/cdt/internal/core/build/managed/Configuration.java
	* build/org/eclipse/cdt/internal/core/build/managed/Option.java
	* build/org/eclipse/cdt/internal/core/build/managed/OptionCategory.java
	* build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java
	* build/org/eclipse/cdt/internal/core/build/managed/Tool.java
	* build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java:
	Moved the hard-coded strings used to access the XML elements into appropropriate interfaces.

	* schema/ManagedBuildTools.exsd:
	Renamed four attributes optionRef->optionReference, toolRef->toolReference, 
	optionValue->listOptionValue, and  optionEnum->enumeratedOptionValue. In the first 
	2 cases, I was just trying to remove the tech-ese from the names. In the later 2, I 
	tried to use a more descriptive name.

2003-07-29 Alain Magloire

	To discover if an application has debug info for DWARF-2 format
	we look for section ".debug*"
	
	* utils/org/eclipse/cdt/utils/Elf/elf.java

2003-07-28 Sean Evoy
	In order to meet certain internal guidelines and to test the makefile 
	generator, the build model replied to some answers with hard-coded information. 
	This patch moves the information into the build model.

	* schema/ManagedBuildTools.exsd
	* build/org/eclipse/cdt/core/build/managed/ITarget.java
	* build/org/eclipse/cdt/internal/core/build/managed/Target.java
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java:
	Added code to correctly extract and persist the make command and clean 
	command from a Target/ITarget. Added the attributes to the schema. Removed 
	the hard-coded answers from the ManagedBuildManager.
	
	* src/org/eclipse/cdt/internal/core/GeneratedMakefileBuilder.java:
	Removed two methods that were no longer invoked from the builder.
	
	* src/org/eclipse/cdt/internal/core/MakefileGenerator.java:
	Corrected a bug in the makefile generator whereby the output prefix was applied 
	twice to library targets, i.e. liblibfoo.a instead of libfoo.a. 
	

2003-07-24 Sean Evoy
	* src/org/eclipse/cdt/internal/core/MakefileGenerator.java:
	Added code to place interproject dependencies in target build rule, 
	added code to properly put output prefixes on library names, and 
	added code to put library link arguments at the end of the depednency list

	* build/org/eclipse/cdt/core/build/managed/IManagedBuildInfo.java
	* build/org/eclipse/cdt/core/build/managed/IOption.java
	* build/org/eclipse/cdt/core/build/managed/ITool.java
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java
	* build/org/eclipse/cdt/internal/core/build/managed/Option.java
	* build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java
	* build/org/eclipse/cdt/internal/core/build/managed/Tool.java
	* build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java:
	Added code to managed output prefixes for tools like the librarian. Added code
	to manage the library options differently. Removed some hard-coding of tool 
	information, such as the output flag.
	
	*schema/ManagedBuildTools.exsd:
	New attributes on tool for output flag and prefix. New value type enum for option
	to handle libs differently.
	
2003-07-24 Sean Evoy
	Changes introduced to make the managed build system work with
	multi-folder project.
	
	* src/org/eclipse/cdt/core/ManagedCProjectNature.java:
	now removes the cbuilder from a project before it adds its 
	own builder. This is a temporary fix to stop the managed build 
	system from building a project twice. When the new StandardBuildNature 
	is introduced, this code will be removed.

	* src/org/eclipse/cdt/internal/core/CCorePluginResources.properties:
	New builder messages added.
	
	* src/org/eclipse/cdt/internal/core/GeneratedMakefileBuilder.java:
	Moved the actual directory and file creation to a delegate class.
	
	* src/org/eclipse/cdt/internal/core/MakefileGenerator.java:
	New class that does the grunt work of creating build output directories 
	and makefiles.
	
	* build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java:
	Short-term changes to make it possible for build info clients to get the
	path and symbol information. When a permanent mechanism is implemented
	for clients to discover this information, these methods (IScannerInfoxxx) 
	will be removed.
	
	* build/org/eclipse/cdt/core/build/managed/IManagedBuildInfo.java
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java:
	Some minor changes have been made to extract more information from the 
	build model. Currently, the values are hard-coded to simplify some integration
	testing. This will be addressed in the next patch.
	
2003-07-24 Alain Magloire

	* utils/org/eclipse/cdt/utils/Elf.java:
	Added a case for motorola 68000 CPU.

2003-07-24 Hoda Amer
	Clean up of CModelBuilder

2003-07-23 Hoda Amer
	Updated the CModelBuilder to use the AST instead of the DOM

2003-07-16 Alain Magloire

	Patch from Alex Chapiro
	Fix an evident bug in CProjectNature implementation of
	removeFromBuildSpec method.
	
	* CProjectNature.java

2003-07-16 Alain Magloire
	
	Patch from Thomas Fletcher.
	Update the core MakeUtil class with a method to support inline replacement
	 of a make target with a different make target.

	* src/org/eclipse/cdt/core/resources/MakeUtil.java

2003-07-04 Victor Mozgin
	Added CTaskTagsReconciler.

2003-07-03 Bogdan Gheorghe
	Added support for adding individual source files to the
	index.
	
	Added support for removing projects/individual files from
	index.
	
	* src/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	
	Added a method to cancel indexing requests when a project is 
	deleted.
	
	Changed create(ICElement parent, IFile file, IBinaryFile bin) to
	check if a file is a TranslationUnit before doing anything else.
	This was done to fix Bug 39574.
	
	* src/org/eclipse/cdt/internal/core/model/CModelManager.java
	
2003-07-03 Sean Evoy
	New schema and extension point for registering an interface
	between the build system (managed and standard) and the scanner 
	clients that need it (like the indexer).
	* plugin.xml
	* schema/ScannerInfoProvider.exsd
	
	Added some documentation to the schema for managed build information
	* schema/ManagedBuildTools.exsd
	
	Added three new interfaces for getting build information for the scanner. 
	IScannerInfo contains the actual information the scanner needs and is passed
	to the scanner by the build model. IScannerInfoChangeListener is the interface
	that must be implemented by the scanner client that uses the IScannerInfo. 
	IScannerInfoProvider is the interface implemented by the build model. It is
	registered through an extension point so clients can discover providers at
	run time. IScannerInfoListener implementors subscribe and unsubscribe with the 
	provider and the provider passes them the IScannerInfo when it changes.
	* parser/org/eclipse/cdt/core/parser/IScannerInfo.java
	* parser/org/eclipse/cdt/core/parser/IScannerInfoChangeListener.java
	* parser/org/eclipse/cdt/core/parser/IScannerInfoProvider.java
	
	Changed the name of some of the managed build system elements.
	* build/org/eclipse/cdt/core/build/managed/IManagedBuildInfo.java
	
	This resulted in superficial changes to the Target and ManagedBuildManager
	* build/org/eclipse/cdt/internal/core/build/managed/Target.java

	Implemented the new scanner interfaces in the managed system
	* build/org/eclipse/cdt/internal/core/build/managed/ManagedBuildInfo.java
	* build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java
	
	Added a new manager for the standard make system that implements the new
	scanner interfaces. This manager uses the .cdtbuild file to persist 
	include path and symbol information (in otherwords, real build information).
	Like the managed build manager, it also gives clients access to the build 
	information associated with a project. It does not effect the older preferences
	which are still managed by the CNature.
	* build/org/eclipse/cdt/core/build/standard/StandardBuildManager.java
	
	Removed the responsibiolity for includes paths and symbols from CNature 
	added in last patch.
	* src/org/eclipse/cdt/core/CProjectNature.java
	
	Added code for persisting the standard build information for includes paths and 
	symbols in a file, and implemented the IScannerInfo interface in the BuildInfoFactory.
	Did not rename it, although ...
	* src/org/eclipse/cdt/core/BuildInfoFactory.java
	
	I did rename the interface it implements since it was the only reference
	* src/org/eclipse/cdt/core/resources/IStandardBuildInfo.java
	
	
	
2003-06-26 Sean Evoy
	Added methods to add and extract include paths and preprocessor 
	symbols from standard make C and C++ projects.
	
	Getter and setter methods in:
	* src/org/eclipse/cdt/core/BuildInfoFactory.java
	* src/org/eclipse/cdt/core/CProjectNature.java
	
	Added new constant for comma-separated lists
	* src/org/eclipse/cdt/core/resources/IBuildInfo.java

2003-06-25 Bogdan Gheorghe

	* src/org/eclipse/cdt/core/CCorePlugin.java
	Start the new indexer thread on startup
	* src/org/eclipse/cdt/core/model/CoreModel.java
	Added some methods to access the IndexManager
	* src/org/eclipse/cdt/internal/core/model/CModelManager.java
	Added some methods to access the IndexManager
	* src/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	Added IndexManager member

2003-06-24 Alain Magloire

	Patch form ando@park.ruru.ne.jp, to deal
	with different file cases i.e. TEST.C vs test.c
	On windows.
	
	* src/org/eclipse/cdt/core/ErrorParserManager.java

2003-06-24 Alain Magloire

	* src/org/eclipse/cdt/internal/errorparser/GCCErrorParser.java:
	New scheme to detect, preprocessor errors.
	* src/org/eclipse/cdt/core/ErrorParserManager.java:
	Provide a scratch buffer for the error parser classes.

2003-06-20 Sean Evoy
	Added two new value types to the ManagedBuildTools schema for include paths 
	and defined symbols.
	
	Added interface so clients can query build model for include paths and 
	defined symbols
	* build/org/eclipse/cdt/core/build/managed/ManagedBuildManager.java
	* build/org/eclipse/cdt/core/build/managed/IManagedBuildPathInfo.java
	* build/org/eclipse/cdt/internal/core/build/managed/ResourceBuildInfo.java
	
	Changed code in build model to support these new value types
	* build/org/eclipse/cdt/internal/core/build/managed/Configuration.java
	* build/org/eclipse/cdt/internal/core/build/managed/Option.java
	* build/org/eclipse/cdt/core/build/managed/IOption.java
	* build/org/eclipse/cdt/internal/core/build/managed/OptionReference.java
	* build/org/eclipse/cdt/internal/core/build/managed/Tool.java
	* build/org/eclipse/cdt/internal/core/build/managed/ToolReference.java
	

2003-06-19 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/CModelManager.java:
	(shutdown):  Deregister the listener from the Workspace.

2003-06-16 Victor Mozgin
	Implemented support for old K&R-style C function declarations.
	Added oldKRParametersBegin() and oldKRParametersEnd() to DOMBuilder.
	Added OldKRParameterDeclarationClause.java to dom/org/eclipse/cdt/internal/core/dom.
	Added handling of OldKRParameterDeclarationClause to ParameterDeclarationClause.

2003-06-14 Victor Mozgin
	Added support for pointers to members to DOMBuilder.
	Added new kind of pointer operator : t_pointer_to_member (PointerOperator).
	Added nameSpecifier field and set/get operations to PointerOperator.

2003-06-13 Andrew Niefer
	Added search\org.eclipse.cdt.core.search
		  search\org.eclipse.cdt.internal.core.search
		  search\org.eclipse.cdt.internal.core.search.matching
		  search\org.eclipse.cdt.internal.core.search.processing
	with skeleton classes based on the JDT search as a beginning for 
	implementing C/CPP search.

2003-06-06 Sean Evoy

	Added new interface, IResourceBuildInfo, so clients could
	be shielded from future implementation changes.
	
	ManagedBuildManager class has been updated to return an 
	interface, IResourceBuildInfo, instead of the implementing 
	class.
	
	For ITool, I added a method to determine if the tool produces 
	an output based on a file extension, and one to determine if
	it builds an input based on a file extension. I added a method 
	to determine what the output file extension of a build will 
	be based on an input extension. Finally, I added a method to 
	extract a tool command and one to extract its flags.
	
	For ITarget, I added more information about the build artifact. 
	I have added artifact name and default extension attributes to 
	the target schema. The artifact name is intended to hold the 
	name the user has selected as the final build object 
	(i.e. test.exe, foo.so, etc). The default extension will be 
	used by the toolchain provider to specify a default extension 
	for the final build object (i.e. .dll.a for Cygwin shared libs 
	vs .so for Linux shared libs).	There are getter and setter 
	methods for the name of the final build artifact. There is also a 
	method to extract the default extension that is built for targets 
	of this type.
	
	The build model schema was updated to reflect these new bit of 
	information.
	
	The GeneratedMakefileBuilder was updated to extract this information
	and to create a new rule for each input to the build artifact.

 	The resource build information store now remembers the top 
	configuration for a target as selected by the user in the UI. 
	This is needed by the makefile generator and in persisted in the 
	project build file. 
	
	The test has been updated to reflect these changes.

2003-06-05 Alain Magloire

	PR #38380, partially fix; would need more detail form
	the C Parser to know if the include is <...> or "..."

	* model/org/eclipse/cdt/internal/core/model/Include.java
	(getIncludeName): implemented.

2003-05-29 Alain Magloire

	PR 38239
	BinaryContainer.getBinaries() was returning empty []
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	(getBinaryRunner): return the runner if is already instanciated.

2003-05-29 David Inglis
	* utils/org/eclipse/cdt/utils/elf/Elf.java
	 fixed toString buf for Sestion.
	 added findSesctionByName() method 
	 fixed bug where reading DYN section would fail for mips
	* utils/org/eclipse/cdt/utils/elf/ElfHelper.java
	use new findSectionByName.
	cleaup

2003-04-29 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/parser/PEParser.java (getBinary):
	Catch if path == null.
	* model/org/eclipse/cdt/internal/core/model/Archive.java (isReadOnly):
	Always return true for binary.

2003-04-29 Alain Magloire

	PR 37064

	* model/org/eclipse/cdt/internal/core/model/DelatProcessor.java (close):
	New method, close the openable when content changed to flush the cache.
	(contentChanged): Remove only use elementChanged().
	* model/org/eclipse/cdt/internal/core/model/parser/ElfParser.java (getBinary):
	Catch if path == null.

2003-04-25 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/Binary.java (getNeededSharedLibs):
	JUnit faileds tests.  getNeededSharedLibs() should also return for executable.
	(isReadOnly): is always true for executable.

2003-04-24 Alain Magloire

	* utils/org/eclipse/cdt/utils/spawner/Spawner.java (raise):
	Change the scope to be public.

2003-04-12 Alain Magloire

	Bug 36624
	The latest changes broke the old parser, we still need the old parser
	until the new one is rock solid.
	
	* model/org/eclipse/cdt/internal/core/model/TranslationUnit.java:

2003-04-12 Alain Magloire

	Bug 36424,
	The Binaries/Archives were not deleted in the virtual containers.
	
	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java:
	createElement() checks for the binaries in the virtual containers also.
	* mode/org/eclipse/cdt/internal/core/model/CModelManager.java:
	Remove unused methods.

2003-04-09 Alain Magloire

	Give a chance to the manager to initialize and shutdown gracefully.
	The CCorePlugin will call the managers, indexer, coreModel, CDescriptorManager
	startup() method and shutdown() method.

	* src/org/eclipse/cdt/core/CCorePlugin.java:
	Call {IndexModel,CoreModel}.{startup,shutdown}().
	* model/org/eclipse/cdt/core/model/CoreModel.java:
	New methods startup/shutdown.
	* model/org/eclipse/cdt/internal/core/mode/CModelManager.java:
	implement startup/shutdown.
	* index/org/eclipse/cdt/core/model/IndexModel.java:
	New methods startup/shutdown.

2003-04-08 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java:
	Bug fix, deltas were not generated for non C-Resources.

2003-04-02 Alain Magloire

	First draft on implementing LibraryReference.

	* model/org/eclipse/cdt/core/model/ICProject.java:
	* model/org/eclipse/cdt/internal/core/model/CProject.java:
	New method getLibraryReferences().
	* model/org/eclipse/cdt/internal/core/model/LibraryReference.java:
	New class.

	* src/org/eclipse/cdt/internal/core/CDescriptor.java:
	Bug fix in readProjectDescription(); fPathEntries was not initialized
	and decodePathEntry() was call with the wrong argument.
 
2003-04-01 Alain Magloire

	Implement SourceRefence and SourceManipulation for IBinary, this is
	done in BinaryElement, BinaryFunction, BinaryVariable.

	* model/org/eclipse/cdt/internal/core/model/Binary.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryFunction.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryVariable.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryElement.java:

	Corrected typo ISymbol.getAdress() should be ISymbol.getAddress().
	* model/org/eclipse/cdt/internal/core/model/parser/Symbol.java:
	* src/org/eclipse/cdt/core/IBinaryParser.java:

2003-04-01 Alain Magloire

	Patch form Hoda.
	IStructure extends IVariableDeclaration.
	INamespace extends IParent.
	
	* model/org/eclipse/cdt/core/model/IStructure.java
	* model/org/eclipse/cdt/core/model/INamespace.java
	
2003-04-01 Alain Magloire

	Phasing out the classes ICResource and ICFile.
	They were no longer part of the C Model.

	* model/org/eclipse/cdt/core/model/ICFile.java:
	* model/org/eclipse/cdt/core/mode/ICResource.java:
	* model/org/eclipse/cdt/internal/core/model/CFile.java:
	Removed.

2003-03-30 Alain Magloire

	First phase of the rewrite on how we treat Binary/Archive in the CoreModel
	This included suggestions from Chris Songer on augmenting the binary methods
	to include the address;
	IBinary
		IBinaryModule
			IBinaryFunction
			IBinaryVariable
				IBinaryElement

	* model/org/eclipse/cdt/core/model/IBinaryElement.java:
	* model/org/eclipse/cdt/core/model/IBinaryModule.java:
	* model/org/eclipse/cdt/core/model/IBinaryVariable.java:
	* model/org/eclipse/cdt/core/model/IBinaryFunction.java:
	New Classes.

	* model/org/eclipse/cdt/internal/core/model/Binary.java:
	* model/org/eclipse/cdt/internal/core/model/Archive.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryModule.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryFunction.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryVariable.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryElement.java:
	Implement the IBinaryElement classes.


	* model/org/eclipse/cdt/internal/core/model/CElement.java:
	* model/org/eclipse/cdt/internal/core/model/CModelCache.java:
	* model/org/eclipse/cdt/internal/core/model/Openable.java:
	* model/org/eclipse/cdt/internal/core/model/Parent.java:
	Change the CModelCache to save in the LRU the binaries.

	* model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java:
	* model/org/eclipse/cdt/internal/core/model/parser/PEBinaryFile.java:
	* model/org/eclipse/cdt/internal/core/model/parser/Symbol.java:
	Implement the method getAddress().
	Suggested by Chris Songer

	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java:
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java:
	Fix bug, the event was fired for the non-C resources.

	* src/org/eclipse/cdt/core/CCorePlugin.java:
	New method getDefaultBinaryParser().

	* src/org/eclipse/cdt/core/IBinaryParser.java:
	Added method getAddress() to ISymbol
	Suggested by Chris Songer

2003-03-28 David Inglis

	* src/org/eclipse/cdt/core/AbstractCExtension.java
	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/ICDescriptor.java
	* src/org/eclipse/cdt/core/ICExtension.java
	* src/org/eclipse/cdt/core/ICExtensionReference.java
	* src/org/eclipse/cdt/core/ICOwner.java
	* src/org/eclipse/cdt/core/ICOwnerInfo.java
	* src/org/eclipse/cdt/core/ICPathEntry.java
	* src/org/eclipse/cdt/internal/CCorePluginResources.properties
	* src/org/eclipse/cdt/internal/core/CDescriptor.java
	* src/org/eclipse/cdt/internal/core/CDescriptorManager.java
	* src/org/eclipse/cdt/internal/core/CExtensionInfo.java
	* src/org/eclipse/cdt/internal/core/CExtensionReference.java
	* src/org/eclipse/cdt/internal/core/COwner.java
	* src/org/eclipse/cdt/internal/core/CPathEntry.java
	* src/org/eclipse/cdt/internal/core/InternalCExtension.java

	Add new ICPathEntry interface with peristancy, access is via the ICDecriptor
	which uses the .cdtproject file for the store. creation is through CCorePlugin.

	- included is some copyright header changes and the move of the properties file
	  to 'internal'	

2003-03-27 Alain Magloire
	* model/org/eclipse/cdt/internal/core/model/BinaryContainer.java:
	* model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java:
	Name is now "Binaries" and "Archives", lib and bin was confusing.

2003-03-27 Alain Magloire

	The ICElement.getResource() should not throw a CModelException, it returns null or the the resource.
	This makes us consistent with JDT/IJavaElement.getResource();

2003-03-27 Alain Magloire

	Some changes in the Core Model to make it closer to JDT, the hierarchy is now:
	ICModel
		ICProject
			ICContainer
				ITranslationUnit
				IArchive
				IBinary

	All the C Resources above implements IParent, ICElement and IOpenable.
	The rationale is that in the old hierarchy, we were putting things in the model
	that the did not belong to the a C/C++ Model, for example a "README" file
	was map to CFile or CResource bloating the LRU cache, those resources did
	not contribute any info to the model and would make the indexer job more
	complex.  A new method been added getNonCResources() to retrieve those elements.
	Note CResource, CFolder, CFile are removed.
	Also refactors:
	- ICOpenable to IOpenable
	- ICRoot to ICModel
	- ICRootInfo to ICModelInfo
	- Move internal/core/model/IBuffer* classes to core/model/IBuffer*

	* index/org/eclipse/cdt/internal/core/index/IndexManager.java
	* model/org/eclipse/cdt/core/model/BufferChangedEvent.java
	* model/org/eclipse/cdt/core/model/CoreModel.java
	* model/org/eclipse/cdt/core/model/IArchive.java
	* model/org/eclipse/cdt/core/model/IArchiveContainer.java
	* model/org/eclipse/cdt/core/model/IBinary.java
	* model/org/eclipse/cdt/core/model/IBinaryContainer.java
	* model/org/eclipse/cdt/core/model/IBinaryContainer.java
	* model/org/eclipse/cdt/core/model/IBuffer.java
	* model/org/eclipse/cdt/core/model/IBufferChangedListener.java
	* model/org/eclipse/cdt/core/model/ICContainer.java
	* model/org/eclipse/cdt/core/model/ICElement.java
	* model/org/eclipse/cdt/core/model/ICFile.java
	* model/org/eclipse/cdt/core/model/ICFolder.java
	* model/org/eclipse/cdt/core/model/ICModel.java
	* model/org/eclipse/cdt/core/model/ICOpenable.java
	* model/org/eclipse/cdt/core/model/ICProject.java
	* model/org/eclipse/cdt/core/model/ICResource.java
	* model/org/eclipse/cdt/core/model/ICRoot.java
	* model/org/eclipse/cdt/core/model/IOpenable.java
	* model/org/eclipse/cdt/core/model/ITranslationUnit.java
	* model/org/eclipse/cdt/internal/core/model/Archive.java
	* model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
	* model/org/eclipse/cdt/internal/core/model/ArchiveContainerInfo.java
	* model/org/eclipse/cdt/internal/core/model/ArchiveInfo.java
	* model/org/eclipse/cdt/internal/core/model/Binary.java
	* model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
	* model/org/eclipse/cdt/internal/core/model/BinaryContainerInfo.java
	* model/org/eclipse/cdt/internal/core/model/BinaryInfo.java
	* model/org/eclipse/cdt/internal/core/model/BinaryRunner.java
	* model/org/eclipse/cdt/internal/core/model/Buffer.java
	* model/org/eclipse/cdt/internal/core/model/BufferChangedEvent.java
	* model/org/eclipse/cdt/internal/core/model/BufferManager.java
	* model/org/eclipse/cdt/internal/core/model/CContainer.java
	* model/org/eclipse/cdt/internal/core/model/CContainerInfo.java
	* model/org/eclipse/cdt/internal/core/model/CElement.java
	* model/org/eclipse/cdt/internal/core/model/CElementDelta.java
	* model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java
	* model/org/eclipse/cdt/internal/core/model/CElementInfo.java
	* model/org/eclipse/cdt/internal/core/model/CFile.java
	* model/org/eclipse/cdt/internal/core/model/CFileInfo.java
	* model/org/eclipse/cdt/internal/core/model/CFolder.java
	* model/org/eclipse/cdt/internal/core/model/CFolderInfo.java
	* model/org/eclipse/cdt/internal/core/model/CModel.java
	* model/org/eclipse/cdt/internal/core/model/CModelCache.java
	* model/org/eclipse/cdt/internal/core/model/CModelInfo.java
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	* model/org/eclipse/cdt/internal/core/model/CModelOperation.java
	* model/org/eclipse/cdt/internal/core/model/CProject.java
	* model/org/eclipse/cdt/internal/core/model/CProjectInfo.java
	* model/org/eclipse/cdt/internal/core/model/CResource.java
	* model/org/eclipse/cdt/internal/core/model/CResourceInfo.java
	* model/org/eclipse/cdt/internal/core/model/CRoot.java
	* model/org/eclipse/cdt/internal/core/model/CRootInfo.java
	* model/org/eclipse/cdt/internal/core/model/CommitWorkingCopyOperation.java
	* model/org/eclipse/cdt/internal/core/model/CopyElementsOperation.java
	* model/org/eclipse/cdt/internal/core/model/CopyResourceElementsOperation.java
	* model/org/eclipse/cdt/internal/core/model/CreateElementInTUOperation.java
	* model/org/eclipse/cdt/internal/core/model/DeleteResourceElementsOperation.java
	* model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java
	* model/org/eclipse/cdt/internal/core/model/ElementCache.java
	* model/org/eclipse/cdt/internal/core/model/FieldInfo.java
	* model/org/eclipse/cdt/internal/core/model/FunctionInfo.java
	* model/org/eclipse/cdt/internal/core/model/IBuffer.java
	* model/org/eclipse/cdt/internal/core/model/IBufferChangedListener.java
	* model/org/eclipse/cdt/internal/core/model/IBufferFactory.java
	* model/org/eclipse/cdt/internal/core/model/IWorkingCopy.java
	* model/org/eclipse/cdt/internal/core/model/Openable.java
	* model/org/eclipse/cdt/internal/core/model/OpenableInfo.java
	* model/org/eclipse/cdt/internal/core/model/Parent.java
	* model/org/eclipse/cdt/internal/core/model/SourceManipulation.java
	* model/org/eclipse/cdt/internal/core/model/SourceManipulationInfo.java
	* model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
	* model/org/eclipse/cdt/internal/core/model/TranslationUnitInfo.java


2003-03-20 Alain Magloire

	Patch from Amer Hoda
	This patch adds the functionnality of the C Element Deltas for translation
	unit. It figures the addes/deleted C elements with each elementChanged event.
	
	* model/org/eclipse/cdt/internal/core/model/CElement.java:
	New method isIdentical().
	* model/org/eclipse/cdt/internal/core/model/CElementDeltabuilder.java:
	First implementation.
	* model/org/eclipse/cdt/internal/core/model/SourceManipulation.java:
	New method hasSameContentAs() and getModifiers().

2003-03-19 Alain Magloire

	Patch from Amer Hoda.
	Introducing the WorkingCopy in the Core Model.
	Those changes introduce the same functionnality as JDT.

	All CElements have a common way of opening/modifying the source. In other words and
	opening of Translation Unit (ITranslationUnit) is done via the buffer mechanism
	To commit changes isConsistent and makeConsistent must be called.

	The Core Model maintains an LRU cache of open elements, and automatically closes elements
	as they are swapped out of the cache to make room for other elements.
	Elements with unsaved changes are never removed from the cache, and thus, if the client
	maintains many open elements with unsaved changes, the LRU cache can grow in size
	(in this case the cache is not bounded). However, as elements
	are saved, the cache will shrink back to its original bounded size. 

	* model/org/eclipse/cdt/core/model/ElementChangeEvent.java
	* model/org/eclipse/cdt/core/model/ICOpenable.java
	* model/org/eclipse/cdt/core/model/ICResource.java
	* model/org/eclipse/cdt/core/model/ITranslationUnit.java

	* model/org/eclipse/cdt/internal/core/model/Buffer.java
	* model/org/eclipse/cdt/internal/core/model/BufferChangedEvent.java
	* model/org/eclipse/cdt/internal/core/model/CElement.java
	* model/org/eclipse/cdt/internal/core/model/CElementDeltaBuilder.java
	* model/org/eclipse/cdt/internal/core/model/CElementInfo.java
	* model/org/eclipse/cdt/internal/core/model/CFile.java
	* model/org/eclipse/cdt/internal/core/model/CFolder.java
	* model/org/eclipse/cdt/internal/core/model/CModelCache.java
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java
	* model/org/eclipse/cdt/internal/core/model/CommitWorkingCopyOperation.java
	* model/org/eclipse/cdt/internal/core/model/CProject.java
	* model/org/eclipse/cdt/internal/core/model/CResource.java
	* model/org/eclipse/cdt/internal/core/model/CRoot.java
	* model/org/eclipse/cdt/internal/core/model/CElementCache.java
	* model/org/eclipse/cdt/internal/core/model/IBuffer.java
	* model/org/eclipse/cdt/internal/core/model/IBufferChangedListener.java
	* model/org/eclipse/cdt/internal/core/model/IBufferFactory.java
	* model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
	* model/org/eclipse/cdt/internal/core/model/TranslationUnitInfo.java
	* model/org/eclipse/cdt/internal/core/model/Util.java
	* model/org/eclipse/cdt/internal/core/model/WorkingCopy.java
	* model/org/eclipse/cdt/internal/core/model/WorkingCopyInfo.java


	* model/org/eclipse/cdt/internal/core/util/ICacheEnumeration.java
	* model/org/eclipse/cdt/internal/core/util/ILRUCache.java
	* model/org/eclipse/cdt/internal/core/util/LRUCacheEnumeration.java
	* model/org/eclipse/cdt/internal/core/util/OverFlowingLRUCache.java
	* model/org/eclipse/cdt/internal/core/util/ToStringSorter.java

2003-03-12 Alain Magloire

	* utils/org/eclipse/cdt/utils/elf/Elf.java:
	Do a better check when looking for the nearest symbol, a validation
	is to check if the line number is "0", zero is invalid and keep on iterating.

2003-03-11 Alain Magloire

	* utils/org/eclipse/cdt/utils/elf/Elf.java (Symbol:getLineInfo):
	The address value may not align with the debug information, for example when
	adding Profiling etc .. we try to get the nearest symbol as a fallback.
	We've seen this behaviour on PPC and ARM boards.
	* utils/org/eclipse/cdt/utils/CPPFilt.java:
	Remove unused fields.

2003-02-26 Alain Magloire

	The second part to finish the cdt-core-home/docs/binaryparser.html
	proposal.  The plugin.xml changed to reflect this, new format.

	<extension id="ELF" name="Elf Parser" point="org.eclipse.cdt.core.BinaryParser">
	 <cextension>
	   <run class="org.eclipse.cdt.internal.core.model.parser.ElfParser"/>
	 </cextension>
	</extension>

	<extension id="PE" name="PE Windows Parser" point="org.eclipse.cdt.core.BinaryParser">
	 <cextension>
	  <run class="org.eclipse.cdt.internal.core.model.parser.PEParser"> </run>
	 </cextension>
	</extension>

	The binary parser type is now save in the ".cdtproject".

	* src/org/eclipse/cdt/core/IBinaryParserConfiguration.java:
	* src/org/eclipse/cdt/internal/core/BinaryParserConfiguration.java:
	Removed.

	* src/org/eclipse/cdt/internal/core/CDescriptorManager.java
	(getDescriptor): Call autosave().
	* src/org/eclipse/cdt/internal/core/CDescriptor.java
	(create): Bug fix
	(get): Bug fix
	(remove): Bug fix

	* model/org/eclipse/cdt/internal/core/model/parser/ElParser.java:
	* model/org/eclipse/cdt/internal/core/model/parser/PEParser.java:
	Extends AbstractCDescriptor.
	* model/org/eclipse/cdt/core/internal/core/model/NullBinaryParser.java:
	New file.
	* model/org/eclipse/cdt/core/internal/core/model/CModelManager.java:
	* model/org/eclipse/cdt/core/model/CoreModel.java
	(resetBinaryParser): New method.
	(getBinaryParserFormat): removed.
	(setBinaryParserFormat): removed.
	(setDefaultBinaryParserFormat): removed.
	(getDefaultBinaryParserFormat): removed.

2003-02-26 Alain Magloire

	A new proposal was make, see cdt-core-home/docs/binaryparser.html
	it changed the the signature:
	public interface IBinaryParser {
		IBinary getBinary(IPath path);
	}

	The getBinary() method no longer takes an IFile, this was necessary
	to allow the binary parser code to work on files outside of the
	workspace.  The correspondign implementation is updated.
	
	* model/org/eclipse/cdt/internal/core/model/ElfBinaryArchive.java
	* model/org/eclipse/cdt/internal/core/model/ElfBinaryFile.java
	* model/org/eclipse/cdt/internal/core/model/ElfParser.java
	* model/org/eclipse/cdt/internal/core/model/PEBinaryArchive.java
	* model/org/eclipse/cdt/internal/core/model/PEBinaryFile.java
	* model/org/eclipse/cdt/internal/core/model/PEBParser.java

	* model/org/eclipse/cdt/internal/core/model/ArchiveInfo.java
	* model/org/eclipse/cdt/internal/core/model/BinaryInfo.java
	* model/org/eclipse/cdt/internal/core/model/CModelManager.java

2003-02-26 David Inglis
	* model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java
	* model/org/eclipse/cdt/internal/core/model/BinaryContainer.java
	Remove warning.
	
	* model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryArchive.java
	* model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java
	* utils/org/eclipse/cdt/utils/elf/AR.java
	Improve IBinaryObject creation from IArchive (big speed improvment)
	

2003-02-24 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/Marker.java:
	Removed, this file was implementing IMarker.

2003-02-24 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/Resource.java:
	Removed, this file was implementing IResource.

2003-02-23 Alain Magloire

	Remove implementations of IResource and IContainer.

	* model/org/eclipse/cdt/internal/core/model/Container.java:
	* model/org/eclipse/cdt/internal/core/model/parser/BinaryContainerAdapter.java:
	* model/org/eclipse/cdt/internal/core/model/parser/BinaryFileAdapter.java:
	Files removed.
	* model/org/eclipse/cdt/internal/core/model/Archive.java:
	* model/org/eclipse/cdt/internal/core/model/ArchiveInfo.java:
	* model/org/eclipse/cdt/internal/core/model/BinaryInfo.java:
	Remove references to BinaryFileAdapter.

2003-02-19 David Inglis

	* src/org/eclipse/cdt/core/CCorePlugin.java
	* src/org/eclipse/cdt/core/ICDescriptor.java
	* src/org/eclipse/cdt/core/ICExtensionReference.java
	* src/org/eclipse/cdt/core/ICOwner.java
	* src/org/eclipse/cdt/internal/core/CDescriptor.java
	* src/org/eclipse/cdt/internal/core/CDescriptorManager.java
	* src/org/eclipse/cdt/internal/core/CExtensionReference.java
	* src/org/eclipse/cdt/internal/core/make/MakeProject.java
	General cleanup of CDT extensions interfaces from review with Alain.

2003-02-17 Doug Schaefer

    Merged in Sam Robb's source for the build model.  The source can be
    found in the build source folder.  There are new extension point schema
    in the schema folder.  As well a number of extension points and extensions
    have been added to the plugin.xml file.
    
2003-02-13 Alain Magloire

	* src/org/eclipse/cdt/core/CCorePlugin.java:
	* src/org/eclipse/cdt/internal/core/make/Makebuilder.java:
	Comment out reference to the Builder, for now.

	* builder/org/eclipse/cdt/core/builder/CIncrementalBuilder.java:
	Comment reference to the CCorePlugin.

2003-02-05 Doug Schaefer

    * src/org/eclipse/cdt/internal/parser.generated:
    Fix for hang on destructors in namespaces

2003-02-01 Alain Magloire

	Cleanups and suggestions for Hoda.

	* mode/org/eclipse/cdt/core/model/ITemplate.java:
	New File.
	* model/org/eclipse/cdt/core/model/IField.java:
	Now extedns IVariableDeclaration.
	* model/org/eclipse/cdt/core/model/IMethodDeclaration.java:
	Extends IFunctionDeclaration.
	* model/org/eclipse/cdt/core/model/IVariableLocal.java:
	Removed.

2003-01-29 Alain Magloire

	* index/org/eclipse/cdt/internal/core/index/IndexManager.java (shutdown):
	Typo was calling Thread.interrupted() instead of Thread.interrupt().
	(delay): No longer static.
	* src/org/eclipse/cdt/core/ErrorParserManger.java (readPreferences):
	Use Class.forName().
	* src/org/eclipse/cdt/internal/core/CDescriptorManager.java (resourceChanged):
	Remove useless declarations.

2003-01-29 Alain Magloire

	* utils/org/eclipse/cdt/utils/elf/Elf.java:
	* utils/org/eclipse/cdt/utils/coff/Coff.java
	* utils/org/eclipse/cdt/utils/coff/PE.java
	Cleanup some warnings when accessing static fields.
	
2003-01-29 Alain Magloire

	* model/org/eclipse/cdt/core/model/CoreModel.java (addElementChangedListeners):
	remove static qualifier.
	(removeElementChangedListeners): remove static qualifier.

2003-01-23 Alain Magloire

	Cleanups proposed by Amer Hoda.

	* model/org/eclipse/cdt/core/model/ICRoot.java: No need to extend ICElement
	* model/org/eclipse/cdt/core/model/ICProject.java: No need to extend ICElement
	* model/org/eclipse/cdt/core/model/ICFolder.java: No need to extend ICElement
	* model/org/eclipse/cdt/core/model/ICFile.java: No need to extend ICElement
	* model/org/eclipse/cdt/core/model/IMethod.java: Extends ICFunction.

2003-01-23 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/CModelManager.java (getHeaderExtensions):  Returns possible C/C++ header extensions name.
	(getSourceExtensions): Returns possible C/C++ extension.
	(getTranslationUnitExtensions): Returns possible C/C++ extension.
	* model/org/eclipse/cdt/core/model/CoreModel.java:
	(getHeaderExtensions): New method.
	(getSourceExtensions): New method.
	(getTranslationUnitExtensions): New method.

2003-01-23 Alain Magloire

	Changes proposed by Amer Hoda.

	* model/org/eclipse/cdt/internal/core/model/Structure.java:
	Extends IVariableDeclaration instead of IVariable.
	* model/org/eclipse/cdt/core/model/IStructure.java:
	Extends IVariableDeclaration instead of IVariable.

2003-01-17 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/parser/ElfBinaryFile.java (addSymbols):
	The catch IOException was at the wrong place.

2002-12-23 Alain Magloire

	* src/org/eclipse/cdt/internal/core/CBuilder.java (invokeMake):
	NPE check the return of launcher.execute(), the executables
	may not be found.

2002-12-20 Alain Magloire

	Bug fix, We use a feature of GNU make to help track the directories
		Entering Directory '...'
		Leaving Directory '...'
	It looks like sometimes we loose track, or GNU make does not show
	a "Leaving Directory" this may actually depend on how it was spawn,
	you can suppress the message.  If you loose track we popDirectories()
	and try to recover.

	* src/org/eclipse/cdt/core/ErrorParserManager.java (popDirectory):
	Is throwing NoSuchElement, check the size of the stack first.

	* src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java (processLine):
	Recover when loosing track.

2002-12-19 Alain Magloire

	* model/org/eclipse/cdt/internal/core/model/parser/BinaryContainerAdapter.java (getFile):
	Check getParent() it may return null.
	(getFolder): Check getParent(), it may return null. 
	
2002-12-19 Alain Magloire

	* src/org/eclipse/cdt/core/ErrorParserManager.java (findFilePath):
	The workspace will throw an Exception if the file
	is not within the workspace, catch it.
	(getWorkingDirectory): fallback to the location
	of the project if no working directory.

	* src/org/eclipse/cdt/internal/errorparsers/GCCErrorParser.java (processLine):
	Ignore errors that does not match the pattern.

2002-12-13 Alain Magloire

	* src/org/eclipse/cdt/core/CommandLauncher.java (waitAndRead):
	Remove hack for J9 VM, filled a PR to IBM about their VM.
	Only delay when there is nothing to read.

2002-12-13 Alain Magloire

	Building will never write to the process.  having things like
	all:
		b='a'; read b; echo $$b
	could hang the IDE, since the process is waiting for input.
	to go around, the input of the process is explicitely close.

	* src/.../internal/core/CBuilder.java (invokeMake): Close the
	Output stream of the process, since we will never write to it.

2002-12-13 David Inglis
	Update cdt to be eclipse 2.1 ready.

	* model/.../internal/core/model/Marker.java: added getCreationTime()
	* model/.../internal/core/model/Resource.java: added isLinked()
	* model/.../internal/core/model/parser/BinaryContainerAdapter.java: added createLink()
	* model/.../internal/core/model/parser/BinaryFileAdapter.java: added createLink()
	

2002-12-10 Alain Magloire

	* src/org/eclipse/cdt/core/CCommandLauncher.java (waitAndRead):
	Check if the buffer is not null in available().

2002-12-10 Alain Magloire

	There is a bug in IMB j9 VM in the PipedInputStream class, when the
	buffer is full it is returning 0 instead of buffer.length.  We
	go around by overloading the available() method.  This should
	be remove once the bug is fix.

	* src/org.eclipse.cdt.core/CCommandLauncher.java (waitAndRead):
	overload available() method in the input stream.
	Set the error message correctly when the command is canceled.

2002-12-06 Alain Magloire

	* indexer/.../internal/core/index/CTagsentry.java (parse): Remove
	The parsing was wrong for Exuberant Ctags.

2002-11-27 Alain Magloire

	* utils/.../utils/coff/PE.java (getAttribute):
	Quick fix to return the save value for CPU "x86" instead of "i386"

2002-11-27 Alain Magloire

	* model/.../cdt/core/model/CoreModel.java:
	Remove the static qualifiers and force people to use getDefault().
	(getBinaryParserFormat): New method to retrieve the format of a project.
	(setBinaryParserFormat): New method to set the format of a project.
	(getDefaultBinaryParserFormat): New method to retrieve the default format.
	(setDefaultBinaryParserFormat): New method to set the default format.
	* model/.../cdt/core/model/IBinaryParser.java: Move to be is the src directory.
	* model/.../cdt/core/model/ICElementDelta.java: New Flag for the binary parser.
	* model/.../internal/core/model/parser/BinaryContainerAdapter.java:
	* model/.../internal/core/model/parser/BinaryFileAdapter.java:
	* model/.../internal/core/model/parser/ElfBinaryArchive.java:
	* model/.../internal/core/model/parser/ElfBinaryFile.java:
	* model/.../internal/core/model/parser/PEBinaryArchive.java:
	* model/.../internal/core/model/parser/PEBinaryFile.java:
	* model/.../internal/core/model/parser/PEParser.java:
	* model/.../internal/core/model/parser/ElfParser.java:
	* model/.../internal/core/model/parser/Symbol.java:
	* model/.../internal/core/model/ArchiveInfo.java:
	* model/.../internal/core/model/BinaryInfo.java:
	Organize imports.
	* model/.../internal/core/model/CElementDelta.java (binaryParserChanged):
	New method.
	* model/.../internal/core/model/CModelManager.java (releaseCElement):
	Remove the children of a container in the hashmap.
	(getDefaultBinaryParserFormat): Return the default format.
	(setDefaultBinaryParserFormat): set the default format.
	(setBinaryParserFormat): remove the all the children and fire a binary parser change.

	* src/../cdt/core/CCorePlugin.java (getBinaryParserConfigurations):
	New method to search for the extension points.
	* src/../cdt/core/IBinaryParser.java: New file
	* src/../cdt/core/IBinaryParserConfiguration.java: New file
	* src/../internal/cdt/core/BinaryParserConfiguration.java: New file

	* plugin.xml: Binary parsers extension points.
	

2002-11-23 Alain Magloire

	* model/.../cdt/core/model/CoreModel.java (getBinaryParser):
	New methods to retrieve the parser for a project.
	* model/.../cdt/core/model/IBinaryParser.java (getFormat):
	New method return the format supported.
	* model/.../internal/core/model/CModelManager.java (getBinaryParser):
	New methods to retrieve the parser for a project.
	* model/.../internal/core/model/parser/ElfBinaryFile.java:
	Move the Symbol class out so it can be shared.
	* model/.../internal/core/model/parser/ElfParser.java (getFormat):
	New method.
	* model/.../internal/core/model/parser/PEBinaryArchive.java: New file.
	* model/.../internal/core/model/parser/PEBinaryFile.java: New file.
	* model/.../internal/core/model/parser/PEParser.java: New file.
	* model/.../internal/core/model/parser/Symbol.java: New file.

	* src/.../cdt/core/CCorePlugin.java (getBinaryParser):
	New Methods to retrieve the extension-point.

	* utils/.../cdt/utils/coff/Coff.java :
	Parse the symbols.
	* utils/.../cdt/utils/coff/PE.java (getAttribute):
	New helper method/class Attribute.
	* utils/.../cdt/utils/coff/PEArchive.java :
	New File.
	* utils/.../cdt/utils/elf/AR.java (finalize): 
	Make sure we do not leak fds.
	* utils/.../cdt/utils/elf/Elf.java (finalize): 
	Make sure we do not leak fds.

	* plugin.xml: Define two "parser" extension-point.


2002-11-22 Alain Magloire

	* src/.../cdt/core/CommandLauncher.java (waitAndRead):
	Make sure we drain the pipes.
	(printCommandLine): Use the line.separator property.
	* src/org/eclipse/cdt/ErrorParserManager.java
	Check if outputStream is not null before using it.
	(write): must be synchronized.
	(checkLine): Break the buffer per line and pass it to processLine().
	Takes an argument to flush when we are done(on close()).
	* src/.../internal/core/CBuilder.java (invokeMake):
	We have to call close() the same number of times we call
	ErrorParserManager.getOutputStream().  Move the ErrorParerManager.reportProblem()
	after the close.
	* src/.../internal/CCorePluginResources.properties: Updated.

2002-11-22 Alain Magloire

	The C Builder on error would clear the build.
	The side effect of that is on every BuildAll
	or Rebuild on the workspace, it will try to
	rebuild the projects since it has not states.
	It seems to work fine for JDT, where the builder
	has full control and can quickly make a decision
	The situation is not the same for the CDT, where we
	spawn an external tool (make) even if nothing changes
	i.e. the Makefiles rules when properly done will see,
	it still seems sloppy.  So we remove this behaviour.

	* src/.../internal/core/CBuilder.java (invokeMake):
	Not to clear the state when errors.

2002-11-22 Alain Magloire

	* src/.../cdt/core/model/IBinary.java (isCore):
	New method.
	* src/.../cdt/core/model/IBinaryParser.java (CORE):
	New type core.
	* src/.../internal/core/model/parser/ElfBinaryFile.java (getType):
	case for CORE.
	* src/.../internal/core/model/Binary.java (isCore):
	New method.
	* src/.../internal/core/model/BinaryInfo.java (isCore):
	New method.
	* src/.../internal/core/model/CModelManager.java (isBinary):
	Check for core.
	* util/.../utils/elf/Elf.java (getAttributes): Check for Core.

2002-11-22 David Inglis
	* src/.../cdt/core/CommandLauncher.java:
	Make CommandLauncher.waitAndRead do the stream writing, since ui components
	process this stream, and this method may be call in a ui thread.
	
2002-11-20 David Inglis
	* src/.../internal/core/CBuilder.java:
	fix AUTO_BUILDs so that the builder only builds when the resources change
	in the project.
	
2002-11-20 David Inglis
	* plugin.xml
	fixed bug #26640

2002-11-19 Alain Magloire

	* src/.../internal/core/model/CModelManager.java (resourceChanged):
	Do nothing for PRE_DELETE and PRE_BUILD events for now.
	
2002-11-16 Alain Magloire

	* src/.../model/IBinaryParser.java: New Interface for Binary parsers
	extension-points.
	* src/.../model/ICElement.java (getResource): New method added.
	* src/.../internal/core/model/parser/BinaryContainerAdapter.java:
	New file adapting an archive to a IContainer.
	* src/.../internal/core/model/parser/BinaryFiledapter.java:
	New file adapting a binary to a IFile.
	* src/.../internal/core/model/parser/ElfBinaryArchive.java:
	New file implements IBinaryArchive.
	* src/.../internal/core/model/parser/ElfBinaryFile.java:
	New file implements IBinaryObject etc ...
	* src/.../internal/core/model/parser/ElfBinaryFile.java:
	New file implements IBinaryParser.
	* src/.../internal/core/model/Archive.java (isArchive): Removed.
	(getResource): Added.
	* src/.../internal/core/model/ArchiveContainer.java (getChildren):
	Use new method CProject.setBinaryRunner().
	* src/.../internal/core/model/ArchiveInfo.java:
	rewritten to use IBinarParser interface.
	* src/.../internal/core/model/BinaryContainer.java (getChildren):
	Use new method CProject.setBinaryRunner().
	* src/.../internal/core/model/BinaryInfo.java:
	rewritten to use IBinarParser interface.
	* src/.../internal/core/model/BinaryRunner.java: New File
	replace the ElfRunner.java.
	* src/.../internal/core/model/CProject.java: Rename the function
	with *Elf* Binary.
	* src/.../internal/core/model/ElfRunner.java: Rename to BinaryRunner.java
	* src/.../internal/core/model/CElement.java: Use getResource() instead of
	getCorrespondingResource().
	* src/.../internal/core/model/CModelManager.java (ReleaseCElement):
	Bug fix was not passing the key to hash.remove().
	(isShared): Use IBinaryParser.
	(isExecutable): Use IBinaryParser.
	(isArchive): Use IBinaryParser.
	* src/.../internal/core/model/Container.java: New file
	* src/.../internal/core/model/Resource.java: New file
	* src/.../internal/core/model/Marker.java: New file
	* src/.../internal/core/model/SourceManipulation.java (getResource): New method.
	* src/.../internal/core/model/Parent.java (getResource): New method.
	* plugin.xml: Indentation.



2002-11-13 Alain Magloire

	* src/.../internal/errorparsers/GCCErrorParser.java (processLine):
	Remove the "warning :" prepend substring since the error is already mark.
	Remove debuging println()s.

2002-11-13 Alain Magloire

	* src/.../internal/errorparsers/GCCErrorParser.java (processLine):
	Fix check if the column is valid i.e. a number.

2002-11-13 Judy Green

	*src/org/eclipse/cdt/core/CCProjectNature.java
		added configure() to overwrite CNatures implementation which adds a default CBuilder.
		We now check that a project having a CCNature added already has a CNature
		Throws a CoreException if not.
	
	*src/org/eclipse/cdt/core/CCorePlugin.java
	Added a static va CDT_PROJECT_NATURE_ID_MISMATCH to indicate the condition
	described above in configure()
	
	Cleaned up the convert methods to ensure that extra calls to add a
	CBuilder are not called.

2002-11-13 Alain Magloire

	* src/.../internal/errorparsers/GCCErrorParser.java (processLine):
	The full semantics seems to be:
		filename:lineno:column:error_description
	we did not take to account that the preprocessor
	was putting the column also.

2002-11-13 Alain Magloire

	* src/.../internal/core/CBuilder.java (invokeMake):
	Always parse the argument for errors even when the
	build was cancelled.

2002-11-12 Alain Magloire

	* index/.../internal/core/index/CTagsRunner.java (run):
	Remove the quick start code, not necessary.
	* index/.../core/index/IndexModel.java (setEnabled):
	Check if it was already enabled.

2002-11-12 Alain Magloire

	* index/.../internal/core/index/IndexManager.java (removeConatiner):
	Change the signature of the function to take IContainer.
	(removeResource): Also remove the request from the requestList.
	* index/.../internal/core/index/RequestList.java (removeItem):
	new method.

2002-11-12 Alain Magloire

	* index/.../core/index/IndexModel.java (isEnabled):
	New method check if indexing is enable for a project.
	(setEnabled) : enable/disable indexing for a project.
	(removeResource): New method, remove resource from the list.
	* index/.../internal/core/index/IndexManager.java (addContainer):
	Check if resource is enable for indexing.
	(addFile): Check if resource is enable for indexing.


2002-11-12 David Inglis

	* model/.../internal/core/model/CModelManager.java,v
		fixed model.create(IPath) method so it returns a element which 
		actually exits

2002-11-08 Judy N. Green
	* src/org/eclipse/cdt/internal/core/COwner.java
	fixed check in constructor to throw error when ownerID is invalid
	
	* src/org/eclipse/cdt/internal/core/CDescriptor.java
		made all constants static and changed visibility of DESCRIPTION_FILE_NAME
		to package to be used by tge CDescriptorManager 
		
	* src/org/eclipse/cdt/internal/core/CDescriptorManager.java
	 Added to event in order to catch when the .cdtprject file is deleted.
	 delete reference to the CDT project Descriptor when a missing file is detected.
	 
	 Added new public method removeExistingCdtProjectFile(IProject project), required when converting a project.

2002-11-06 Alain Magloire

	* src/org/eclipse/cdt/ErrorParserManager.java (parse):
	Unused code removed.
	(checkLine): String.trim() the line to remove trailing
	newline.
	* src/org/eclipse/cdt/internal/errorparser/MakeErrorParser.java (processLine):
	When there is no resources set the lineno to -1.

2002-11-06 David Inglis
	* index/org/eclipse/cdt/internal/core/index/CTagsRunner.java
	fixed NPE when projects are deleted.
	
	* src/org/eclipse/cdt/core/ErrorParserManager.java
	fixed NPE when file exits outside of workspace
				
	* utils/org/eclipse/cdt/utils/elf/Elf.java
	fixed out of memory failure on bad elf files

2002-11-06 Alain Magloire

	Deal with some issues of PR 25756.
	
	* src/.../internal.errorparsers.java (processLine):
	When the file is not found append not prepend the name
	of the file in the description.
	The check for "(Each undeclared ...)" was done at the
	wrong place.
	
	* src/.../ErrorParserManager.java (findFileName):
	Check if the file is absolute or relative.

2002-11-05 Alain Magloire

	* utils/.../utils/coff: New folder.
	* utils/.../utils/coff/Coff.java: First implementation
	of a generic COFF binary file parser.
	* utils/.../utils/coff/Exe.java: First implementation of
	a generic EXE binary file parser.
	* utils/.../utils/PE.java: First implementation of a generic
	PE coff format parser.

2002-11-05 Alain Magloire

	* src/.../ErrorParserManager.java (parse):
	Trim the line of unwanted trailing spaces.

2002-11-01 Alain Magloire

	* model/../internal/core/mode/CProject.java (findElement):
	Check if the path is Absolute or relative before creating the
	element.

2002-11-01 David Inglis

	* utils/org/eclipse/cdt/utils/elf/Elf.java
	change getCPU to return cpu only and not append endian ("le" or "be").

2002-10-31 Alain Magloire

	* src/.../ErrorParserManager.java (findFilePath):
	Check if the file exists to not to return a phantom resource.
 
2002-10-30 Alain Magloire

	* src/.../CProjectNature.java (removeNature): Utility
	function to remove a nature from a project.
	(removeCNature): Utility method to remove the C Nature.
	* src/.../CCProjectNature.java (removeCCNature): Utility
	method to remove the CC nature.

2002-10-25 Alain Magloire

	* index/.../internal/core/index/CTagsCmd.java: Indentation.
	* index/.../internal/core/index/CTagsRunner.java: Implements Runnable.
	* index/.../internal/core/index/IndexManager.java (init):
	Set the indexer thread, thread.setDaemon(true).

2002-10-28 David Inglis
	
	* src/.../core/resources/ACBuilder.java
	Added check for duplicate markers.
	* src/.../internal/core/CBuilder.java
	Added check for canceled build and throws OperationCanceledException exception

2002-10-25 Alain Magloire

	The debugger needs to know the endian of a binary.  For example
	int the memory view, to do format.

	* model/.../model/IBinary (isLittleEndian): New method
	returns the endian.
	* model/.../internal/core/model/Binary.java (isLittleEndian): New method.
	* model/.../internal/core/model/BinaryInfo.java (isLittleEndian): New
	method implemented by calling Elf.
	* utils/.../utils/elf/Elf.java (Elf.Attribute.isLittleEndian): New
	method return the endian.

2002-10-23 Alain Magloire

	* src/.../core/resource/ACBuilder.java (mapMarkerSeverity):
	New method to convert IMarkerGenerator to IMarker.
	* src/.../core/ErrorParserManager.java: New file.
	* src/.../core/IErrorParser.java: New file.
	* src/.../core/IMarkerGenerator.java: Define a set of new fields:
	 IMarkerGenerator.SEVERITY_INFO
	 IMarkerGenerator.SEVERITY_WARNING
	 IMarkerGenerator.SEVERITY_ERROR_RESOURCE
	 IMarkerGenerator.SEVERITY_ERROR_BUILD
	 IMarkerGenerator.SEVERITY_INFO
	* src/.../core/erroparsers: Removed
	* src/.../core/erroparsers/ErrorParserManager.java: Removed
	* src/.../core/erroparsers/IErrorParser.java: Removed
	* src/.../internal/core/CBuilder.java (invokeMake): new field
	fatalBuild to check return of ErrorParserManager.reporProblems().
	* src/.../internal/core/ProcessClosure.java (isAlive): the test
	shoule be an || the errorstream __or__ the outputstream thread
	is alive.
	* src/.../internal/errorparsers/GASErrorParser.java (processLine):
	* src/.../internal/errorparsers/GCCErrorParser.java (processLine):
	* src/.../internal/errorparsers/GLDErrorParser.java (processLine):
	* src/.../internal/errorparsers/VCErrorParser.java (processLine):
	Use the IMarkerGenerator fields.
	* src/.../internal/errorparsers/MakeErrorParser.java (processLine):
	Catch GNU Make build errors, something like:
	"make: *** No targets specified and no makefile found.  Stop."
	
2002-10-23 David Inglis

	Error parsing is now done as the streams from the commands
	are read, this reduces memory usage during the build
	process, and we can now add options to the build console to
	only keep 'n' lines of output, again reducing the memory 
	usage. Also refactored IErrorParser and ErrorParserManager out
	of internal.
	
	* src/.../errorparser/ErrorParserManager.java:
	* src/.../errorparser/IErrorParser.java:
	* src/.../internal/errorparser/GASErrorParser.java:
	* src/.../internal/errorparser/GCCErrorParser.java:
	* src/.../internal/errorparser/GLDErrorParser.java:
	* src/.../internal/errorparser/MakeErrorParser.java:
	* src/.../internal/errorparser/VCErrorParser.java:
	* src/.../internal/core/CBuilder.java:
	* src/.../internal/core/ProcessCloseure.java:
	* src/.../core/ConsoleOutputStream.java:
	
	
2002-10-22 Alain Magloire

	* src/.../internal/parser/LinePositionInputStream.java:
	We use a BufferedInputStream to limit the number of reads.

2002-10-16 Alain Magloire

	Some of the native functions were throwing exceptions
	particularly on the windows platform and it was not
	clearly advertise.  Eclipse uses a tool to externalize strings,
	to prevent this, strings need a comment "//$NON-NLS-1$".

	This also incorporated some fixes by Alex Chapiro, in 
	Spawner.Reaper Thread an exception can be thrown for
	example if the application does not exist, the reaper
	thread will catch the IOException an notify spawner of
	the failure by setting pid = -1;

	* utils/../utils/pty/PTYInputStream.java (close0):
	Advertise that we can throw an IOException.
	* utils/../utils/pty/PTYOutputStream.java (close): Put
	the "$NON-NLS-1$" magic.
	(write0): Advertise we can throw IOException.
	(close0): Advertise we can throw IOException.
	* utils/../utils/spawner/ProcessFactory.java: Reformat.
	* utils/../utils/spawner/Spawner.java (Reaper):
	The run method when calling exec0 did not catch the exception.
	And the waitFor() should not be done on a pid == -1; 
	* utils/../utils/spawner/SpawnerInputStream.java: Reformat.
	* utils/../utils/spawner/SpawnerOutputStream.java: Reformat.

2002-10-15 Alain Magloire
	
	By making the native methods package scope, the
	compiler will not generate synthetic accessor
	methods to access them in the Reaper inner class

	* utils/../utils/spawner/Spawner.java (exec0):
	(exec1): Change scope to be package.
	(raise): Change scope to be package.
	(waitFor): Change scope to be package.

2002-10-13 Alain Magloire

	Boosting the compiler error level to get unused imports.

	* model/../internal/core/model/ArchiveContainer.java:
	* model/../core/model/BinaryContainer.java:
	* model/../core/model/CElementDelta.java:
	* model/../core/model/CModelManager.java:
	* model/../core/model/CResourceInfo.java:
	Remove unused imports.

	* src/../core/resources/ACBuilder.java:
	* src/../internal/core/CBuilder.java:
	Remove unused imports.

2002-10-15 David Inglis
	* model/../core/model/CoreModel.java
	* model/../internal/core/model/CModelManager.java
	* model/../internal/core/model/CModelStatus.java

	Clean up model 
		- removed plugin and nature id from model
		  refernce core plugin and nature classes for ID.
		- removed unsed methods in model for adding/removing
		  natures.

2002-10-15 David Inglis
	* src/../internal/core/CBuilder.java
	
	Fixed builder to return referenced projects so that eclipse 
	builder will build increamentaly build projects when they change.
	Handle "clean" target as special so the build state is cleared allowing
	the next increamental build to come in as a full build.
	
