2004-01-12 John Camelon
	Fixed bug 48909 - Wrong completion node after a . or an ->
	Fixed bug 49702 - Wrong completion kind sent in const/dest and code blocks
	Added new CompletionKind - STATEMENT_START to indicate the beginning of a statement line.  


2004-01-08 Andrew Niefer
	fixing bug 43110 - Parser support needed for functions with ellipses
	Added IParameterizedSymbol.setHasVariableArgs() & hasVariableArgs()
	Modified ParserSymbolTable.resolveFunction & reduceToViable
	Modified CompleteParseASTFactory.createMethod & createFunction

2004-01-08 Andrew Niefer
	Fixing 48307 - PST: Friendship needs to be handled better
	Added IDerivableContainerSymbol.lookupFunctionForFriendship.
	Modified IASTFactory.createMethod to take an ITokenDuple for the method name.
	Added LookupType.FORFRIENDSHIP and use it in LookupElement.
	Modified CompleteParseASTFactory.createMethod to handle friend functions.
	
2004-01-06 Andrew Niefer
	For Content Assist, support lookup using LookupKind.THIS (lookup in the class of the this pointer )
	Fix bug where forward declared method/functions appeared twice in the content assist lookup results.

2004-01-06 John Camelon
	Renamed IToken::tELIPSE to IToken::tELLIPSIS
	Partially fixed Bug 43110 : Parser support needed for functions with ellipses 

2004-01-05 John Camelon
	Removed warnings.  
	Moved StructuralParseCallback from model to parser directory to facilitate building the parser standalone.  

2003-12-31 Hoda Amer
	- Changed ASTUtil.getType to include parameter initializer clause in returned string.
	
2003-12-22 Hoda Amer
	Content Assist Work : Returned the results size of the IASTNode lookup
	to help in determining the scope relevance
	- Added the variable type to a search match result to be compatible with the 
	results found by the completion engine
	 
2003-12-17 Andrew Niefer
	Content Assist work: 
	- change parser & symbol table to handle handle friend classes
	- change visibility filtering to check for friendship
	- fix finding function parameters in prefix lookup

2003-12-17 Hoda Amer
	Content Assist work : Integrated with Parser and Symbol table modifications
	
2003-12-15 Andrew Niefer
	Changed IASTNode.lookup to take the context as a parameter
	created ASTNode to implement IASTNode, ASTSymbolOwner extends it.
	Set Completion Scope for statements
	Set Completion context for . and -> expressions

2003-12-15 Hoda Amer
	Fixed [Bug 47234] new ParserMode required for a better CModel :
	- Added a core plugin preference to build the CModel in Structural mode
	- Added StructuralParseCallBack class
	- Added lists of declarations to AST Scopes in the complete AST   
	
2003-12-12 John Camelon
	Added preliminary keyword support into IASTCompletionNode::getKeywords().  
	Refactored parser to put keyword string literals in one utility class.  

2003-12-11 John Camelon
	Added OffsetLimitReachedException and restructured Parser exceptions.  
	Continued support for code assist/selection search parser.  
	Ensured all source in parser/ have copyright notices.  

2003-12-09 Andrew Niefer
	-created TypeFilter to support support filtering of what kind of symbols to find (for prefix lookup 48306)
	-added IContainerSymbol.isVisible  for bug 48294

2003-12-09 Hoda Amer
	Modified IASTCompletionNode.CompletionKind
	modified IASTNode.LookupKind
	Changed IASTScope to extend IASTNode
	
2003-15-09 John Camelon
	Fixed Bug 47234 : new ParserMode required for a better CModel
	Updated IASTCompletionNode to include a scope as well as a context.  
	Begun parser updates to support code assist & selection search.  

2003-12-05 John Camelon
	Broke the Parser up into separate classes per ParserMode.

2003-12-04 John Camelon
	Removed some warnings. 
	Fixed Bug 39678 : Scanner doesn't support concatenation of different-type string literals (GCC) 
	Refactored ScannerContext to use constructors rather than initializers.  
	Refactored IScannerContext to use enumeration-esque kinds.  
	Added code assist/selection search support to Scanner.  

2003-12-03 Andrew Niefer
	- Symbol table - modify prefix lookup handling of ambiguities
	               - fix up qualified lookup
	               - add IContainerSymbol.lookupMethodForDefinition
	- Parser - modify Complete parse AST factory to use the correct lookups in different situations
	         - Created a LookupType enum to specify what kind of lookup is needed (Qualified, unqualified, for definition)
	

2003-11-27 Andrew Niefer
	fix bug 47264: Parse fails when using  struct s foo; and int s; in function bodies

2003-11-18 Andrew Niefer
	Refactor PST: Split Declaration into 4 classes : ContainerSymbol, DerivableContainerSymbol, ParameterizedContainerSymbol,
	SpecializedSymbol.  Move these along with BasicSymbol & TemplateInstance to no longer be nested in ParserSymbolTable.

2003-11-13 Hoda Amer
	Changed the getExpressionResultType() in the complete factory to return 
	an object of type ExpressionResult.
	Solved bug#44342: Failure to dereference function calls after a . or an -> 
	
2003-11-07 John Camelon
	Fixed Bug 39554 : _Pragma directive is not supported (ANSI C99) 

2003-11-06 John Camelon
	Removed one last remainder of core.model.Util in parser to unbreak 2.0 build.  

2003-11-05 John Camelon
	Fixed Bug 44838 : exception when resolving parameter references in a constructor 
	Fixed Bug 46165 : fields referenced in constructor chains are not called back upon 
	Fixed Bug 45551 : Macro replacement in #include <file.h> directives 

2003-11-05 John Camelon
	Cleaned up the ParserFactory interface to check for validity of input arguments.  
	Moved NullSourceElementRequestor and ScannerInfo to public interface as requested. 
	Restructured code so that no Eclipse/CDT source outside the parser source directory is used.
	Updated parser clients to use new ParserFactory (stand-alone parser work item).  	

2003-11-05 John Camelon
	Removed warnings from parser source tree.  
	Removed preliminary task tags support to clean up parser interfaces and implementation.   
	Added preliminary IProblem support to 

2003-11-03 John Camelon
	Added in preliminary interface for code completion mode.  

2003-10-28 Andrew Niefer
	Fixed Bug 44925 : Search: Elaborated type specifier 
	Patially fixed Bug 44510 : C/C++ Search gives wrong results

2003-10-24 John Camelon
	Fixed Bug 45476 : preprocessor macro "defined" not handled correctly 
	Fixed Bug 45477 : macro redefines prevent further parsing 

2003-10-24 John Camelon
	Fixed Bug 39542 : Parser fails on 'struct' parameter types 
	Fixed Bug 39549 : Designated initializers are not supported (ANSI C99) 
	Fixed Bug 39551 : Complex and imaginary numbers are not supported (ANSI C99) 

2003-10-21 John Camelon
	Fixed Bug 40007 : Parser reports success when it fails
	Fixed Bug 44305 : Scanner/preprocessor fails on conditionals using hexidecimal 
	Fixed Bug 41935 : parser provides wrong name on namespace aliases 
	Fixed Bug 39525 : Parser fails on expressions that take address of overloaded operators 
	Fixed Bug 45287 : Scanner does not accept character sequence literals 
	Fixed Bug 36550 : Error recovery with unterminated string is weak 
	Fixed Bug 41063 : Remove unused K&R C support from ANSI Parser 
	Fixed Bug 39528 : Function try-blocks are not supported by the parser (ANSI C++) 
	Fixed Bug 39538 : Parser fails on explicit instantiation of templated operators 
	Fixed Bug 39536 : Parser fails on templated constructors/conversion operators 
	Refactored Scanner to make it easier to debug.  

2003-10-01 John Camelon
	Fixed Bug 43987 : Search results: Declaration of class not highlighted when selected 
	Fixed Bug 43997 : Search results: selection includes preceding whitespace 
	Fixed Bug 44034 : Scanner failure on #undef 

2003-10-01 Andrew Niefer
	bug43951 - search on ctor declarations returns definition too.
	PST changes:
	- modify lookupConstructor to copy the constructor list before resolving on it
	- modify checkUserDefinedConversionSequence the same way
	- modify isValidFunctionOverload to check for forward declarations

2003-10-01 Bogdan Gheorghe
	Modified CDT log dump in Parser.fetchToken to include error message

2003-10-01 Andrew Niefer
	bug43450 - Scanner needs to handle include paths that contain quotes

2003-09-30 Bogdan Gheorghe
	Added CDT log dump  in Parser.fetchToken to catch HandleInclusion failures

2003-09-30 John Camelon
	Fixed Bug 43503 : Search:f_SD_01 cannot be found in ManyClasses20 Project 
	Fixed Bug 43680 : Fix Parser Error Handling 

2003-09-30 Hoda Amer
	-Solution to [Bug 43053] require reference cleanup for expressions
	Added purgeReferences() at the end of ASTExpression::acceptElement()
		
2003-09-30 Andrew Niefer
	PST changes for bug 43503 - parser needs to know the different between ambiguous functions
	and no functions when no parameter information is provided
	- throw r_UnableToResolveFunction if we have more than 1 function and no parameter info was given
	- handle this case in addUsingDeclaration.
	* note that r_UnableToResolveFunction doesn't necessarily mean ambiguous if we had enough information

2003-09-29 Hoda Amer
	Solution to bug#43679 : Exceptions in indexer 
	
2003-09-29 Andrew Niefer
	fixed bug 43834 : Empty Parameter list and parameter list taking one void do not match

2003-09-29 John Camelon
	Continued work on Bug 43062 : Outline is confused on operator methods containing spaces 
	Partial fix for   Bug 43680 : Fix Parser Error Handling 

2003-09-26 John Camelon
	Fixed Bug 43644 : 6 triangle icons appearing in outline viewer when typing an error
	Fixed Bug 43062 : Outline is confused on operator methods containing spaces 
	Fixed Bug 39531 : Problems with type conversion operators 

2003-09-25 Hoda Amer
	- Last part of solution to bug#42453: Expression result types not computed 
	Added the handling of POSTFIX_TYPENAME_IDENTIFIER
	Completed bug#43221: POSTFIX_TYPENAME_IDENTIFIER not implemented
	- Solution to bug#43644 : 6 triangle icons appearing in outline viewer when typing ... 
	
2003-09-24 Hoda Amer
	Partial solution to bug#42453: Expression result types not computed 
	Added the handling of the NEW_TYPEID, CASTEXPRESSION, POSTFIX_DYNAMIC_CAST,
	POSTFIX_REINTERPRET_CAST, POSTFIX_STATIC_CAST, and POSTFIX_CONST_CAST
	
2003-09-25 John Camelon
	Partial fix for Bug 43221 : POSTFIX_TYPENAME_IDENTIFIER not implemented 

2003-09-24 John Camelon
	Fixed Bug 43106 : Symbol Table support needed to resolve types
	Fixed Bug 43375 : isExtern not returning true for extern declarations 

2003-09-23 John Camelon
	Fixed Bug 43084 : need to restructure TypeId to allow dynamic_cast<> type expression references.
	Fixed Bug 39504 : sizeof-expressions are not handled properly 

2003-09-23 Hoda Amer
	Solution to bug#43373: No reference to static member in definition
	Solution to bug#43371: constructor incorrectly marked private
	
2003-09-18 Andrew Niefer
	- modified Symbol table interfaces to use Lists & Maps instead of LinkedList and HashMap
	- fixed warnings in ParserSymbolTable
	- fixed bug43106 - Symbol Table support needed to resolve types
	- fixed bug43156 - require ability to add implicit inheritance copy constructor
	- fixed bug43159 - TypeInfo.equals() not working properly
	- fixed bug43238 - Postfix_Subscript expressions confuse function resolution

2003-09-16 Andrew Niefer
	- added setThrowExceptionOnBadCharacterRead to IScanner to help with wildcard bug43063

2003-09-17 Hoda Amer
	In completeParseASTFactory.getExpressionResultType(): Added the support 
	for expression types: PM_DOTSTAR, PM_ARROWSTAR, CONDITIONALEXPRESSION
		
2003-09-16 John Camelon
	Implement CompleteParse IASTFunction::previouslyDeclared(). 

2003-09-16 Hoda Amer
	In completeParseASTFactory.getExpressionResultType(): Added the support 
	for expression type PRIMARY_THIS.
	In createMethod(): changed the scope of a method definition to point to 
	the parent class.
	
2003-09-15 John Camelon
	Fixed Bug 39556 : 'restrict' qualifier is not supported (ANSI C99) 
	Fixed Bug 43126 : ISourceElementRequestor.acceptParameterReference accesses internal class
	Fixed Bug 43062 : Outline is confused on operator methods containing spaces 
	Cleaned up some warnings in the parser. 

2003-09-15 Andrew Niefer
	bug43106 - added getConditionalOperand to ParserSymbolTable

2003-09-15 John Camelon
	Partially fixed Bug 42979 : Cannot search for operator overloaders 

2003-09-12 Hoda Amer
	In completeParseASTFactory.getExpressionResultType()
	- Added the handling of some more expression types.
	See CompleteParseASTExpressionTest for details.
	
2003-09-12 John Camelon
	Fixed Bug 42985 : Search: Qualified function call is treated as a declaration 
	Fixed Bug 40419 : parser fails on heavily templated expressions 

2003-09-12 John Camelon
	Fixed Bug 43013 : IASTParameterDeclaration does not derive from IASTOffsetableNamedElement 
	
2003-09-12 Andrew Niefer
	Fixed some NPEs in ParserSymbolTable.getFlatTypeInfo
	Added some comments and created some constants to help clarify ranking of conversion sequences

2003-09-11 John Camelon
	Fixed Bug 42840 : Search: Cannot find things after double declarations 
	Fixed Bug 42798 : Selected #include <Angled> off by 1 char 
	Fixed Bug 42872 : dynamic cast not parsed properly 
	Partially fixed Bug 39504 : sizeof-expressions are not handled properly 
	Updated SourceElementRequestor callbacks to include IASTParameterReference callbacks. 

2003-09-09 Hoda Amer
	- Solved the double reference problem
	- solution to bugs #42822, #42823, & #42822B
	
2003-09-09 John Camelon
	Updated ScannerException to be more precise and include more information.  
	Updated Parser to be more careful of how it handles particular Scanner errors in COMPLETE_PARSE mode.  

2003-09-08 Bogdan Gheorghe
	Added ScannerExceptions in Preprocessor.java to PDE Error 
	Log

2003-09-09 Hoda Amer
	Added more IASTExpression.Kind handling to CompleteParseASTFactory.getExpressionResultType()
	
2003-09-08 John Camelon
	Made scoping support more robust in CompleteParse mode. 
	Refactored ISourceElementRequestor (enter|exit)CodeBlock() to take IASTCodeScope rather than IASTScope. 
	Removed the now obsolete DOM.  
`	Added enumerator references to ISourceElementRequestor.

2003-09-08 Andrew Niefer
	- Created ParserLanguage.java
	- Updated Factories to take language as parameter when create scanner & parser
	- Updated Parser, Scanner & ParserSymbolTable to take language in their constructor

2003-09-05 Hoda Amer
	- Added references to variables with pointers in solution 
	of bug#42453:Expression result types not computed
	

2003-09-05 John Camelon
	Continue to add support for parsing within function bodies.  
	Add workaround for 1.2 for inline function declaration-before-use chicken-and-egg.

2003-09-05 John Camelon
	Fixed NPE on nested declarations in code blocks.  

2003-09-04 John Camelon
    First pass of parsing function bodies with X-Reference information.
    Updated IASTFactory/ISourceElementRequestor to include IASTCodeScope
    constructs, clients should keep this in mind and update their implementations.

2003-09-04 Andrew Niefer
	Fix bug42541 - Anonymous structures cause NPE in full parse

2003-09-03 Andrew Niefer
	fix bug in PST that prevents > 2 constructors

2003-09-03 John Camelon
	Fixed bug41445 - QualifiedLookup succeeds where it should fail.  

2003-09-02 Andrew Niefer
	bug41935 - Modifications to PST to allow for namespace aliases

2003-08-28 John Camelon 
	Fixed bug39535 - Parser fails on namesapce aliases
	
2003-08-26 Bogdan Gheorghe
	Added parser constant to all debugLog tracing statements.
	
2003-08-25 John Camelon
	Fixed bug39526 - Parser doesn't handle initializers correctly.  
	Fixed bug41520 - FullParse : Constructor Initializer is mistaken as function prototype 

2003-08-25 John Camelon
	Fixed Bug 39530 - More problems with initializers. 
	Fixed Bug 37424 - Crash when opening big files
	Refactored pointerOperators & cvQualifiers to not throw backtracks in optional case.  
	Added tracing support to cdt.core plugin via .options file.  

2003-08-14 John Camelon
	Removed warnings from SymbolTable & QuickParseCallback (removing implicit accessor generation).
	Made IASTElaboratedTypeSpecifier derive from IASTOffsetableNamedElement (as it should).  

2003-08-14 John Camelon
	Added X-Reference support for ArrayModifiers and Exception Specifications.  
	Fixed Bug 41551  -  HandleInclusion always throws ScannerException on local includes.

2003-08-13 John Camelon
	Added constructor expression support for variables.  
	Added constructor chain x-reference support for methods. 

2003-08-13 John Camelon
	Added Expression x-reference support into Parser.

2003-08-12 John Camelon
	Added X-Ref/Elaborated type support w/element requestor callbacks.  

2003-08-11 John Camelon
	Added Complete Parse support for ASM Definitions.  
	Added isVolatile() to abstract declarations.
	Added Complte Parse support for elaborated types / forward declaration of classes.  
	Fixed some robustness issues.

2003-08-05 Andrew Niefer
	- Refactor symbol table functions to start with lower case letters
	- Added better constructor support :
		IDerivableContainerSymbol.addConstructor
		IDerivableContainerSymbol.lookupConstructor
		IDerivableContainerSymbol.getConstructors
	- Changed ParserSymbolTableException.r_Unspecified to r_InternalError
	- implicit user-defined conversion sequences now only use constructors not marked explicit
	- user-defined conversion sequences are now only applied at most once (12.3-4 in spec)

2003-07-31 Andrew Niefer
	Added better support to the parser symbol table for forward declarations

2003-07-31 Victor Mozgin
	Fixed PR 39540 : Parser fails on const qualifier after class specifier.

2003-07-30 Victor Mozgin
	Fixed PR 39532 : Parser fails on fully-qualified class names.

2003-07-29 John Camelon
	Updated AST to better represent pointers to functions/methods.
	Implemented typedef declaration/x-ref infrastructure.  

2003-07-29 Victor Mozgin
	Fixed PR 39546 : Parser fails on 'signed' casts.

2003-07-28 John Camelon
	Fixed Bug 40842 - Parser: NPE while parsing class declaration in full parse mode 
	Fixed Bug 40843 - Parser: failParse doesn't set parsePassed = false on EOF.
	Fixed Miscellaneous overrides issues involving parameters & functions. 

2003-07-28 John Camelon
	Fixed Bug 40730 : Parser is not searching the include path for #include"<name>" 

2003-07-28 Victor Mozgin
	Fixed PR 39537 : Parser fails if template parameters contain '>' or '<'  characters.

2003-07-25 Victor Mozgin
	Fixed PR 39553 : Macros are not expanded in #include statements.

2003-07-24 John Camelon
	Added COMPLETE_PARSE support for Method and Field declarations and cross-references. 
	Fixed some small ParserSymbolTable bugs.
	Added support for linkage specification under COMPLETE_PARSE.

2003-07-24 John Camelon
	Added CompleteParse - UsingDirective & UsingDeclarations w/namespace/class/field variable references.
	Added CompleteParse support for enumeration specifiers and references in variables & fields.  
	Stubbed out other Scopes/Declarations for COMPLETE_PARSE mode to allow indexer team to switch over ASAP. 

2003-07-22 John Camelon
	Added in preliminary support for Field/Variable w/cross references on their types.  

2003-07-21 John Camelon
	Addded in support for BaseSpecifier & class/namespace reference callbacks upon those.  

2003-07-21 John Camelon
	Fleshed out basic declarations for FullParse AST.
	Fixed Bug 40554  - Fields coming back as Vars 
	Fixed Bug 40555  - Methods come back as Functions 

2003-07-18 John Camelon
	Added ISourceElementCallbackDelegate interface for AST constructs to allow the Parser to delegate callback's to the nodes themselves.  
	Got rid of ParserMode.STRUCTURAL_PARSE for the time being. 
	Removed org.eclipse.cdt.internal.core.parser.ast.full. 
	Created org.eclipse.cdt.internal.core.parser.ast.complete. 
	Updated ParserFactory.createScanner() to force the user to provide a callback and a ParserMode.
	Introduced ASTSemanticException for COMPLETE_PARSE mode. 
	Fleshed out preliminary IASTReference interfaces and added callbacks to ISourceElementRequestor.
	Removed acceptElaboratedTypeSpecifier() from ISourceElementRequestor.

2003-07-18 John Camelon
	Removed DeclaratorDuple as it was obsolete.
	Fixed offsets in quickParse's IASTTypedefDeclaration implementation.
	Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search features)

2003-07-17 John Camelon
	Removed IParserCallback.  
	Partially converted DOM to ISourceElementRequestor (requires refactoring of CModelBuilder & StuctureComparator modules in near future).  
	Completely finished ISourceElementRequestor/IASTFactory work for QuickParse mode.  
	Added pointer to methods/functions into AST callback structure.  
	Restructured AST class hierarchy.  
	Removed the old IParserCallback return Objects from every Parser method.
	
2003-07-17 Victor Mozgin
	Added support for digraphs and trigraphs.
	Added support for hex floating point literals.
	Fixed stack overflow problem with string literals concatenation.
	Fixed problem with token pasting in macros.
	This solves PR 39523, 39550, 39552.

2003-07-15 Victor Mozgin
	Fixed PR 39349 : Scanner fails on long long literals.
	Fixed PR 39544 : Scanner fails on wide char literals.

2003-07-10 John Camelon
	Added in template support to IAST hierarchy.
	Updated instantiation & specialization hierarchy.  
	Removed ASTTemplateDeclarationType.  
	Added full requestor callbacks for fields, variables, functions, methods & typedefs.  

2003-07-08 John Camelon
	Filled out IASTMethod & IASTFunction & added implementations.
	Updated IScanner, clients & implementations to use IScannerInfo.  
	Finished SimpleDeclaration porting to new architecture, only thing left is templates.  

2003-07-07 John Camelon
	Bug 39652 - AST: Nested Classes incorrectly report null qualified Names 
	Fuller specification of Field/Method interfaces.

2003-07-04 John Camelon
	Fixed NPE in Parser::declarator().
	Bug 39652 - AST: Nested Classes incorrectly report null qualified Names 

2003-07-04 Victor Mozgin
	Added CTaskTagsReconciler.
	Extended ParserFactory with createProblemReporter() and createTranslationResult().
	
2003-07-02 Victor Mozgin
	Fixed PR 39501 : Parser problems with throw clauses.

2003-06-30 John Camelon
	Further restructuring of Parser for ISourceElementRequestor. 
	Added interfaces/implementation for Simple Declarations.  
	Cleaned up DOM's representation of Constructor chains.  

2003-06-28 John Camelon
	Completed Quickparse expression representation.  
	Updated ExpressionEvaluation and associated tests.  

2003-06-26 John Camelon
	Update IASTExpression. 
	Move Parser.Backtrack and Parser.EndOfFile to external interface. 

2003-06-26 Victor Mozgin
	Task tags support in C/C++ comments (initial revision).
	Infrastructure to support problem reporting during translation.
	Additional infrastructure for options/preferences handling.

2003-06-25 John Camelon
	Fixed bug39348 - sizeof elaborated types fail in parsing expression

2003-06-25 John Camelon
	Create new interface and support for calculating lineNumber/offset mapping.  
	Updated IASTClassSpecifier for qualified name query.  
	Began structuring expressions and declarators in Parser for ISourceElementRequestor.  
	Updated other packages to use new interfaces.  

2003-06-24 John Camelon
	Updates for ISourceElementRequestor - elaborated types & enumerations.  

2003-06-23 John Camelon
	Updating SimpleDeclarations to move towards new Callback structure.  

2003-06-23 John Camelon
	Updated Factory infrastructure, constructors, etc. 
	Introduced Preprocessor class for transitive closure calc. client.  

2003-06-20 Victor Mozgin
	Fixed PR 36463 : Offsets of macros are incorrect.
	
2003-06-17 Victor Mozgin
	Implemented correct handling of nested declarators in CModelBuilder.
	Added proper support for function pointers as parameters.
	This fixes PR 38921 and 39002.

2003-06-16 Victor Mozgin
	Implemented support for old K&R-style C function declarations.
	Added oldKRParametersBegin() and oldKRParametersEnd() to IParserCallback.
	Added getParameterTypes() with support of K&R to CModelBuilder.
	Fixed ExpressionEvaluator and NullSourceElementRequestor for additions to IParserCallback.
	Added handling of K&R syntax to the parser.
	This fixes PR 7541, 35320 and 38434.

2003-06-14 Victor Mozgin
	Fixed handling of parameter lists for typedefs for functions.
	More errorhandling in CModelBuilder.
	Added handling of pointers to members.
	Added handling of declarations for nested scopes (like A::B::C).
	This fixes PR 36290, 36931 and partially 38920.

2003-06-13 John Camelon
	Added Class/Base infrastructure to public interfaces & requestor callback. 
	Moved many internal interfaces to external packages. 
	Organized imports.  

2003-06-13 Victor Mozgin
	Renamed NullParserCallback into NullSourceElementRequester.
	NullSourceElementRequester now dummy-implements both IParserCallback and ISourceElementRequester.

2003-06-13 John Camelon
	Merged ParserSymbolTable branch back into HEAD.

2003-06-12 John Camelon
	Get rest of JUnit tests working, will merge back to HEAD branch.  

2003-06-12 John Camelon
	Introduction of ASTFactory strategy, some restructuring of packages and interfaces.

2003-06-10 John Camelon
	Futher pursuit of the golden hammer, symbol table integration. 

2003-06-09 John Camelon
	First step in replacing IParserCallback with ISourceElementRequestor.  

2003-06-05 Andrew Niefer
	Begin implementation of functions for template specializations: deduceTemplateArgument,
	classTemplateSpecializationToFunctionTemplate, transformFunctionTemplateForOrdering
	
2003-06-09 Victor Mozgin
	Fixed for conversion operator declarations.
	This fixes PR 36769 (finally) and PR 38657.

2003-06-09 Victor Mozgin
	Fixed Bug 36932 - RTS: Parser fails on "new" in ctor initializer
	Improved handling of new-expressions: placements, arrays and
	multiple parameters in initializers are now parsed.

2003-06-09 Victor Mozgin
	Fixed Bug 36701 - Scanner looses non-token chars while macro stringizing

2003-06-07 Victor Mozgin
	Fixes for templated constructor/destructor/operator declarations.
	This fixed PR 36766, 36767, 36769 (STL parsing problems).

2003-06-06 Victor Mozgin
	Fixed Bug 38065 - Scanner skipped backslashes inside the code

2003-06-05 John Camelon
	Fix Bug 38380  "Include" class public methods fails JUnit tests 

2003-05-29 Andrew Niefer
	new Class eType for stronger type safety in TypeInfo
	new class PtrOp for better handling of pointer operators and cv qualifiers
	new class TemplateInstance to support templates
	Start of implementation for templates & specializations

2003-05-29 John Camelon
	Remove all AST components.

2003-05-26 John Camelon
	Rollback PST/Parser integration.

2003-05-13 Andrew Niefer
	Moved symbol table to org.eclipse.cdt.internal.core.pst
	Created interface for symbol table: ISymbol, IContainerSymbol, IDerivableContainerSymbol, 
	IParameterizedSymbol, and ISpecializedSymbol.  These are all implemented by Declaration
	The symbol table itself uses this interface instead of using its Declaration directly
	(with the exception of the undo command framework)

2003-05-08 Andrew Niefer
	Added a basic command structure to support rollbacks

2003-05-06 John Camelon
	Further integration of SymbolTable into Parser, some refactoring. 

2003-05-05 John Camelon/Andrew Niefer
	Added Symboltable infrastructure into main parser.  

2003-05-05 Andrew Niefer
	Structural changes to ParserSymbolTable:
		- moved TypeInfo & Declaration inside ParserSymbolTable
		- removed the stack & push/pop/peek
		- moved nonstatic add/lookup fuctions from the table to Declaration
		- began undo framework: added AddDeclarationCommand

2003-05-01 Andrew Niefer
	Fixed Bug 36287 - Parser failure with new CDT 1.1 parser
	Fixed Bug 37011 - Scanner: #define A "//" not properly handled
	
2003-04-30 John Camelon
	Added some Javadoc to IParser.java and Parser.java.  

2003-04-28 John Camelon
	Fixed Bug 37019  - RTS: Parser fails on variable defn using constructor 
	Fixed Bug 36767  - STL Testing: Parser is confused and goes into template function body 

2003-04-28 John Camelon
	Partial fix for Bug37002 - Order of Offsetables is wrong 

2003-04-27 John Camelon
	Partial fix for Bug 36932 - RTS: Parser fails on "new" in ctor initializer
	Fixed Bug 36704 - Problem parsing Loki's Reference Typelist.h 
	Fixed Bug 36699 - Problem parsing Loki's Reference SmartPtr.h Impl 
	Fixed Bug 36691 - Problem parsing Loki's Reference HierarchyGenerators.h Impl 

2003-04-25 Andrew Niefer
	Fixed bug36771	  - Outline view shows include with no name
	Fixed bug36714	  - Parser fails on initial assignment using floating-suffix 
	Revisted bug36816 - Incomplete #include stops outline view 

2003-04-25 John Camelon
	Fixed bug36852  - outline window doesn't show all functions 
	Fixed bug36764  - Bit fields cause parse errors 
	Fixed bug36702  - Parser error when having function pointers as parameters 

2003-04-24 John Camelon
	Fixed Bug36799  STL Testing: Parser fails on Variable Definition 

2003-04-24 John Camelon
	Fixed bug36693 - Problem parsing Loki's Reference SmallObj.cpp Impl
	Fixed bug36696 - Problem parsing Loki's Reference SmartPtr.h Impl
	Improved our error handling robustness.
	Fixed bug36713 - Parser fails on definitions of pointers to functions 
	Fixed Dave's performance test parse failure. 
	Fixed bug36811 - The using directive causes parser to fail
	Fixed bug36794 - ClassCastException for A template with no parameters 

2003-04-24 Andrew Niefer
	Fixed Bug36816		Scanner infinite loop on incomplete #include
	Fixed Bug36255		Parser hangs/goes infinite

2003-04-21 John Camelon
	Revisited bug36247	Parser confused by symbols #defined elsewhere 
	Fixed Bug36708		Problem parsing Loki's Reference TypeTraits.h 
	Fixed Bug36690		Problem parsing Loki's Reference Functor.h Implementation 
	Fixed Bug36692		Problem parsing Loki's Reference Singleton.h Impl
	Fixed Bug36703		Problem parsing Loki's Reference TypeInfo.h Impl 
	Fixed Bug36689		Problem parsing Loki's Reference AbstractFactory.h Implementation
	Fixed Bug36707		Problem parsing Loki's Reference TypeManip.h 

2003-04-21 Andrew Niefer
	Fixed Bug36475 - Scanner does not concatenate strings
	Fixed Bug36509 - Scanner turns strings into identifiers when expanding macros
	Fixed Bug36521 - Scanner gets confused over commas in function like macros
	Fixed Bug36695 - Scanner looses escaping on chars (ie '\4' to '4')

2003-04-20 John Camelon
	Fixed Bug36551				Bad parse on attached file.
	Partial Fix for Bug36631	remove linear search algorithm from OffsetMapping 
	Some debunking of line numbers. 

2003-04-17 John Camelon
	Fixed error in Elaborated Enumeration Types.  
	Fixed Bug36559  - Parsing Templates... 
	Fixed Bug36634  - Enum start line error 

2003-04-16 John Camelon
	Fixed Bug36532  -   Hang on partial template definition.
	Fixed Bug36432  -   Trying to open attached source code hangs Eclipse. 
	Fixed Bug36594  -   Parser Stack Overflow on unaryExpression
	Fixed Bug36600  -   Elaborated Enumerated Types Parse Incorrectly. 

2003-04-15 John Camelon
	Fixed bug36434 - Broken outline in winbase.h
	Partial Fix for bug36379 - The parser to set Line informations when scanning.
	Fixed CModelManager to include header files with .H extension as C++ headers. 
	Fixed bug36448 - Parser fails for C programs containing C++ keywords as identifiers

2003-04-15 Andrew Niefer
	Added scanner support to fix Bug36047

2003-04-13 John Camelon
	Minor cleanup of callbacks due to removal of NewModelBuilder.
	Added parser support to partially fix bug36416 & bug36294.  Also added minimal C-Model support for these fixes. 

2003-04-11 John Camelon
	Minimized the number of objects being returned from Parser callbacks.  
	Fixed CModelBuilder to handle errors better. 
	Reorganized the DOM Hierarchy to ensure that nodes were added to the tree on End() callbacks.  
	Fixed defect 36247().

2003-04-11 John Camelon
	Fixed Bug 36243 DomBuilder Offsetable List 

2003-04-10 John Camelon
	Fixed Bug36237  Parser fails on casts in ctor initializer.
	Added AccessSpecifier to TemplateDeclaration.

2003-04-10 John Camelon
	Updated callbacks and parser to add offset information to template declarations, 
	thus making TemplateDeclaration implement IOffsetable.

2003-04-09 John Camelon
	Removed all the old Code Model Builder source that was no longer being used (NewModelBuilder.java, etc.). 
	Moved all the files in parser.util directory to the dom.  
	Organized imports. 
	Fixed bug36250 Parser ignores functions with default parameters that have no name.
	Fixed bug36240 Parser incorrectly parses operator= 
	Fixed bug36254 Parser doesn't recognize unsigned as a type by itself.

2003-04-09 John Camelon
	Added timing printout for CModelTests.
	Provided partial fix for bug36255 to get past infinite loop, will leave defect open.
	Fixed bug36045 (Again).  
	Fixed bug36287.
	
2003-04-06 Andrew Niefer
	Added ParserSymbolTable::Cost and used it to fix up the conversion sequence ranking

2003-04-06 John Camelon
	Fixed defect 36073.
	Fixed error handling for unterminated strings in Scanner.
	Significantly updated callback structure to better suite the nature of the Code Model.
	Updated all callbacks and parser to accommodate altered callbacks.  

2003-04-04 John Camelon
	Fixed defect 35939.  Proper CElement::pos() is set on Simple Declarations, 
	Class Specifications, Namespaces, Enumerations and Enumerators, Macros and Inclusions.  

2003-04-03 John Camelon
	Fixed defects 36019, 36020, 36045.  
	Finished template declarations and their callbacks for the DOM (not the Code Model).  

2003-04-01 John Camelon
	Updated Scanner to convert control-characters to ' '.  
	Fixed logic error in SimpleDeclarationWrapper.
	Added operator support to grammar.  
	Fixed Name.toString() to support non-qualified yet multi-part names.

2003-04-01 Andrew Niefer
	Parser Symbol Table, modified lookup with respect to resolving ambiguous names,
	reducing the number of temporary lists/sets.  Modified adding using declarations
	to properly support overloaded functions.  Added initial support for user defined
	conversion sequences when resolving overloaded functions.

2003-04-01 John Camelon
	Fixed bug35906
	Udated Scanner to not puke on certain control characters.

2003-03-31 John Camelon
	Fixed unsigned short SimpleDeclarations not showing up in the outline view.  
	Fixed default visibilities for structs in outline view.  
	Fixed bug35892.  
	Added icon-less typedefs and enums to the outline view.  
	Fixed NPEs relating to anonymous structs, unions, enums in outline view.  

2003-03-31 Andrew Niefer
	Parser Symbol Table, better support for function resolution with pointers and 
	references as parameters.  Also support for typedefs as function parameters
		
2003-03-31 John Camelon
	Updated NewModelBuilder to work for ElaboratedTypeSpecifiers, PointerOperators, Const Methods.  
	Fixed bug35878. 

2003-03-31 John Camelon
	Updated Scanner to work for Strings literals like L"this string"
	Updated Scanner to work for floating points literals.
	Updated Scanner to be more forgiving on errors in QuickScan mode.
	Got template instantiation and specialization working (w/callbacks and DOM). 
	Updated Parser/Callbacks for handle pure virtual function declarations.
	Added callback support for some template declarations (not all branches).  

2003-03-28 John Camelon
	Added AccessSpecifier and ClassKind to parser.util package and refactored callbacks. 
	Better encapsulated ExceptionSpecification in the DOM. 
	Updated DOM structures to return unmodifiable collections.
	Added callback support for asmdefinitions.  
	Added callback support for constructor initializer chains.
	Fixed bug 35781 and updated parser to catch all exceptions from callbacks to ensure best-effort parsing. 
	Removed Main.java from Parser package.

2003-03-26 Andrew Niefer
	Moved type information and ParameterInfo from Declaration into util.TypeInfo
	Initial implementation of standard conversion sequences for function resolution

2003-03-24 John Camelon
	Added callback support for namespace definitions.  
	Updated Parser exception hierarchy. 
	Added callback support for linkage specifications.
	Added callback support for using declarations and directives.

2003-03-23 John Camelon
	Added callback support for class member visibility.
	Added callback support for pointer and reference operators on declarators.
	Added callback support for throws clauses an const operations.  
	Added callback support for array declarators. 
	
2003-03-20 Andrew Niefer
	Parser Symbol Table updates for:
	* friends
	* "this" pointer
	* enumerators
	* Argument dependent lookup
	* adding parameters to functions & function overloading
	
2003-03-19	John Camelon
	Updated Parser method visibility to solidify external interface.  
	Solved and removed TODO's from Scanner implementation.
	Updated Parser and callbacks to handle basic expressions.  

2003-03-18 John Camelon
	Updated IParserCallback (and implementations) to add a typeName to DeclSpecifier. 
	Updated IParserCallback and NewModelBuilder to distinguish between Function declarations and definitions. 

2003-03-17 Doug Schaefer
	Changed EOF to be a Backtrack exception instead of a token so simplify
	error handling.
	
2003-03-13 John Camelon
	Moved ## token to IScanner from Scanner.
	Updated IParserCallback and implementations to deal with Elaborated Type Specifiers. 
	Moved IScope into the internal DOM package.

2003-03-11 John Camelon
	added ChangeLog to parser directory
	updated IParserCallback (and all implementors) for expressions 
	removed inheritance relationship between ExpressionEvaluator and NullParserCallback
	removed redundant assignmentOperator() calls in Parser::initDeclarator
	removed class util.DeclarationSpecifier, merged Container interface into util.DeclSpecifier
	organized imports on the parser folder
	* dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
	* dom/org/eclipse/cdt/internal/core/dom/Declarator.java
	* dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java
	* dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java
	* parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java
	* parser/org/eclipse/cdt/internal/core/model/Parameter.java
	* parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java
	* parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
	* parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
	* parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
	* parser/org/eclipse/cdt/internal/core/parser/Parser.java
	* parser/org/eclipse/cdt/internal/core/parser/util/DeclSpecifier.java

2003-03-10 John Camelon
	added in support for detecting and reporting circular inclusions
	added optimization by caching inclusion directories
	added macro pasting capabilities
	updated inclusion searching algorithm for local inclusions

2003-03-07 John Camelon
	fixed initDeclarators for the outline view. 

2003-03-06 Doug Schaefer
	Some minor fixes to get constructors/destructors parsing as well as some minor clean up and robustness.

2003-03-06 John Camelon
	added quickParse heuristic to Scanner for handling #if conditionals to avoid throwing 
	ScannerExceptions on undefined preprocessor symbols
	added minimal enum support to Parser (though not to DOM or CModel)

2003-03-06 Andrew Niefer
	Implementation of Namespaces & using directives in new parser's symbol table

2003-03-05 Doug Schaefer
	Some minor fixes to the parser. 

2003-03-04 Doug Schaefer
	Added Parser in the "parser" source folder in cdt.core 
	Preference in the C/C++ preference page to enable/disable use of the new parser (disabled by default) 
	Start on the DOM which we are using to test the parser (source folder "dom") 
	Start on a new Model Builder for creating CElements using the new parser (currently in source folder "parser") 
