Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] More performance modifications to the Scanner


Here is a patch to reduce the number of objects created by the scanner and speed up the overall operation..

On my test of #include <windows.h> the object count dropped from

        total bytes         objs                time(ms)
orig        59905960        1455079        1593        
new        40868312         950355        1322

        - Dave

Index: parser/ChangeLog-parser
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog-parser,v
retrieving revision 1.116
diff -u -r1.116 ChangeLog-parser
--- parser/ChangeLog-parser	13 Apr 2004 15:31:15 -0000	1.116
+++ parser/ChangeLog-parser	14 Apr 2004 00:42:51 -0000
@@ -1,1382 +1,1395 @@
-2004-04-13 Andrew Niefer
-	fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=46246
-	modified symbol table sorting to use a collator instead of String.compare()
-
-2004-04-11 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=55785.
-	Fix required update to ISourceElementRequestor interface : clients updated accordingly.
-
-2004-04-11 John Camelon
-	Updated errorhandling in Parser::translationUnit().
-
-2004-04-10 John Camelon
-	Removed unused methods from IToken.
-	Restructured Token implementation to be more memory efficient.
-	Tightened up visibility of different members in the implementation.
-	Added TokenFactory construct to isolate Token clients from the particulars of which IToken implementation to instantiate.
-
-2004-04-10 John Camelon
-	Partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=57898
-
-2004-04-09 Andrew Niefer
-	handle NPE during template argument deduction
-	fix bug in definitions of certain template member templates  (fixes a ClassCastException encountered in <list>)
-
-2004-04-09 Andrew Niefer
-	fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=57754
-	Fixed problems found after parsing iostream with discovered symbols, once 57754 was fixed:
-  		fixed some problems with explicit specializations
-		handle using declarations of templates
-		handle typedefs in ASTCompleteParseFactory.queryIsTypeName
-		fixed instantiating constructors
-
-2004-04-08 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=57800.
-
-2004-04-07 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=50808.
-	Provided partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=50807.
-	Provided partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=52988.
-	Introduced EMPTY_STRING, a single constant that replaced > 100'S O literal "" in the code.
-	Updated IASTCompletionNode interface to provide better support for FUNCTION_REFERENCE and CONSTRUCTOR_REFERENCE.
-	Implemented IASTTypeId.getFullSignature() for both QUICK_PARSE and COMPLETE_PARSE.
-	Tweaked ASTNode.lookup() so that it would work for FUNCTION_REFERENCE.
-
-2004-04-07 Andrew Niefer
-	fix lookup in parents when the parent is a deferred template instance, enables content assist on list (from <list>)
-
-2004-04-07 Andrew Niefer
-	fix bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=44338
-
-2004-04-07 Andrew Niefer
-	small changes to get through iostream under standard make with discovered symbols
-	- check null pointer in GCCScannerExtension.handlePreprocessorDirective, the null is probably a symptom of whatever 
-	  is giving us an unbalanced preprocessor directive
-	- catch exceptions during our 3rd attempt at a template argument in ExpressionParser.templateArgumentList
-
-2004-04-07 John Camelon
-	Provided a partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=50152
-	Updated IExpressionParser::expression() interface necessitated by this fix, and updated its clients appropriately.  
-
-2004-04-06 David Daoust
-	Removed some temporary objects that the scanner was producing.
-	Fixed small bug in GCCScannerExtension.
-
-2004-04-06 Andrew Niefer
-	Small changes to help with template parsing
-	 - report line numbers with some problems
-	 - don't throw on SEMANTIC_INVALID_TYPE while doing templates
-	 - handle some NPEs
-
-2004-04-06 Andrew Niefer
-	fix bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=47625
-
-2004-04-06 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39704 
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=29060 
-
-2004-04-06 John Camelon
-		Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=47797
-
-2004-04-05 Andrew Niefer
-	- performance improvements originally from Dave Daoust:
-		- create new TraceUtil to handle logging trace messages
-		- postpone building Problem message until it is asked for
-		- only ask for problem message if it will actually be traced
-	- added more problem strings for problems coming from the symbol table
-	- added CompleteParseASTFactory.shouldThrowException, so we can ignore certain problems
-	  encountered while parsing templates
-	- fix NPEs caused by bad type info objects
-
-2004-04-05 John Camelon
-	Fixed NPE in CompleteParseASTFactory::createUsingDeclaration().  
-
-2004-04-05 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=54029
-	
-2004-04-04 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=56516  
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=53786
-
-2004-04-02 Andrew Niefer
-	- partial handling template explicit instantiations
-	- bug 56834 - Symbols not available until end of parameter list, fixed for templates using temporary code block
-	- change IASTFactory.createTemplateParameter to take an IASTTypeId for the default value
-	- handle instantiating templates using default value that is a deferred instance
-
-2004-04-02 John Camelon
-	Updated SelectionSearch to work for functions, variables with initializers, etc.
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39705
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=44336  
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=36770  
-	Partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=51428  
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39694  
-
-2004-03-30 John Camelon
-	Partial fix for Bug 56614 - Content Assist] Global variables do not appear in a global completion list
-
-2004-03-29 Andrew Niefer
-	fixed bug 56620 - Outline view stops on error on last line of block
-	(errorHandling() goes to far)
-
-2004-03-29 John Camelon
-	Fixed Bug 56517 - Preprocessor skipping doesn't ignore the contents of string literals.	
-
-2004-03-28 John Camelon
-	Remove warnings.  
-
-2004-03-26 Andrew Niefer
-	- handle template template parameters
-
-2004-03-26 Andrew Niefer
-	-report references to symbols used in a template-id.
-
-
-
-2004-03-25 Andrew Niefer
-	-modify IASTFactory.createField & .createVariable to take ITokenDuple's for the name
-	-modify ITokenDuple to support manipulating TokenDuples that have template arguments in them
-	-fix NullPointer & ClassCast exceptions found while parsing <string>
-
-2004-03-25 Hoda Amer
-	Joined effort with Bogdan: Added a parserTimeout() method to ISourceElementRequestor
-	and the ability for the parser to timeout.
-	
-2004-03-23 Andrew Niefer
-	-fix recursive loop leading to StackOverFlowException during template instantiation
-	-fix copy constructors for templated classes
-	-fix bug 55673
-	
-2004-03-22 Andrew Niefer
-	-handling of Typedefs
-	-handle unbalanced preprocessor condition in scanner
-	-fix concurrent modification exception while processing unresolved references in a Class Specifier
-	-report correct owner class for templated methods
-	-some work on template explicit specializations
-	-handle templated class forward declarations
-
-2004-03-18 Andrew Niefer
-	parsing template-ids: enables clas template partial specializations and fixes 54778 indirectly
-	- add ITokenDuple.getTemplateIdArgLists
-	- Added ExpressionParser.templateArgumentList & ExpressionParser.consumeTemplateArguments
-	- modifications to ExpressionParser & Parser to parse template argument lists
-	- modified lookups to lookup with template-id if the token duple has argument lists
-	- modified TemplateFactory to handle partial specializations
-
-2004-03-17 Andrew Niefer
-	fix bug 55163 
-	- in for-init-statement, try expression-statement before simple-declaration since if it actually is a statement instead of a 
-	declaration, the simple-declaration fails hard and can actually enter an infinite loop.
-
-2004-03-16 Dave Daoust
-	refactor scanner for performance improvements
-	-changes to accountForUndo, now named readFromStream
-	-changes to checking for valid macros
-
-2004-03-15 Andrew Niefer
-	Templates:
-	- added ISourceElementRequestor.acceptTemplateParameterReference
-	- added throws ASTSemanticException to IASTFactory.createTemplateDeclaration & createTemplateParameter
-	- IASTTemplateDeclaration extends IASTScope, IASTTemplateParameter extends ISourceElementCallbackDelegate
-	- modified DeclarationWrapper.createASTNode & createMethodASTNode to handle member templates
-	- Add functionality to ASTTemplateDeclaration
-	- implemented CompleteParseASTFactory.createTemplateDeclaration & createTemplateParameter
-	- changes to symbol table to make it easier for the parser to use 
-
-2004-03-12 Andrew Niefer
-	handle case causing NPE in CompleteParseASTFactory.createElaboratedTypeSpecifier
-
-2004-03-12 Andrew Niefer
-	bug 54639 fix NPE in CompleteParseASTFactory.cloneSimpleTypeSymbol 
-
-2004-03-11 John Camelon
-	Refactoring of Scanner to allow reuse in GCCScannerExtension
-
-2004-03-10 John Camelon
-	Further performance improvements in Scanner.  
-
-2004-03-09 Andrew Niefer
-	bug 52948
-	modified CompleteParseASTFactory.createTypedef() to set the typeSymbol of the typedef symbol
-	modified TypeFilter to handle LookupKind.TYPES and LookupKind.TYPEDEFS
-
-2004-03-09 John Camelon
-	Put back the work to reconcile relative paths w/IResource readers which was lost upon merge.  
-
-2004-03-09 Dave Daoust
-	Removed the Strings associated with constant value tokens and keywords  -- it looks cleaner, and reduces the number of objects created (only by 30 to 40 K) (about 2% quicker) 
-	Buffered the File I/O associated with reading inclusions.
-	Restructured the scanner into a large case statement with a few 
-	helper functions -- this is the start of removing the strings (or 
-	providing a preallocated buffer for string manipulation) (about 2% quicker) 
-
-2004-03-04 Andrew Niefer
-	bug 53213 externalize strings
-
-2004-03-03 John Camelon
-	Refactored parser for further content assist work.
-
-2004-03-03 John Camelon
-	Added some trace statements to CompleteParseASTFactory.  
-	Cleaned up usage of Enum.getValue() wrt encapsulation of enumerator value.  
-	Refactored CompleteParseASTFactory for correctness and abstraction. 
-	Added preliminary IProblem support to CompleteParseASTFactory.  
-	Added (commented out unfortunately) assertions into CompleteParseASTFactory. 
-	Updated IASTUsingDeclaration to return an Iterator for declarations mapped rather than just a single declaration.  
-
-2004-03-01 Andrew Niefer
-	bug 52695 :  ast.complete.IASTClassSpecifier#getDeclarations returns an empty iterator 
-	- take ASTNode.SymbolIterator and move it to org.eclipse.cdt.internal.core.parser.ast
-	- hook up ASTScope.getDeclarations to IContainerSymbol.getContentsIterator() using SymbolIterator
-	- create ExtensibleSymbol to implement IExtensibleSymbol and derive BasicSymbol, UsingDeclarationSymbol and UsingDirectiveSymbol from it.
-	
-
-2004-02-26 Andrew Niefer
-	mark strings that don't need to be externalized for translation
-
-2004-02-25 Bogdan Gheorghe
-	Added a check to make sure that the parser is in the top context before throwing
-	an EOF exception in SeletionParser.
-	
-2004-02-25 John Camelon
-	Fixed Bug 43051 : Search: cannot specify relative search paths
-	Fixed Bug 45140 : refactor IScanner to allow use of Readers of IResource
-
-2004-02-25 John Camelon
-	Updated Scanner to allow for invalid identifier names despite C++'s best efforts at maintaining its honour.  
-
-2004-02-24 John Camelon
-	Refactoring Scanner.handleInclusion to be more modular.
-
-2004-02-24 Andrew Niefer
-	Template Explicit Specializations (bug 51485)
-	adding basic symbol table functionality for non-nested template specializations
-
-2004-02-24 John Camelon
-	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=52823
-
-2004-02-24 John Camelon
-	Partial Fix for Bug 52534 - Selection Search offset limit reached is broken 
-
-2004-02-18 Andrew Niefer
-	added IUsingDeclarationSymbol and UsingDeclarationSymbol
-	changed IContainerSymbol.addUsingDeclaration to return a IUsingDeclarationSymbol
-
-2004-02-17 Andrew Niefer
-	bug 52111 : added IContainerSymbol.removeSymbol() which is implemented as ContainerSymbol.removeSymbol()
-	
-2004-02-16 Andrew Niefer
-	bug 52120 document symbol table use of ParserSymbolTableException
-	also clean up a couple of exceptions
-
-2004-02-12 Andrew Niefer
-	Fixed up symbol table handling of const & volatile
-	fixed bug 47628 - signed char is parsed as char 
-	fixed bug 47636 - char* and char[] are treated as different types 
-	fixed bug 45697 - Parser/Symbol table: Mismatched declaration & definition 
-
-2004-02-12 John Camelon
-	Removed IASTCompletionKind.SCOPED_REFERENCE as it was obsolete.  
-	Did preliminary work to support content assist within qualified names.
-
-2004-02-11 John Camelon
-	Restructured Parser implementation to allow for better support of Selection Search.
-	Restructured Parser implementation to allow for separation between parsing expressions (Scanner) and complete C/C++ source.  
-
-2004-02-10 John Camelon
-	Workaround for Bug 51502 - Parser spins on particular file (Scalability)
-	
-2004-02-10 Andrew Niefer
-	Templates in the symbol table (org.eclipse.cdt.internal.core.parser.pst)
-			   ITemplateFactory.java
-			   ITemplateSymbol.java
-			   DeferredTemplateInstance.java
-			   ParserSymbolTableError.java
-			   TemplateEngine.java
-			   TemplateFactory.java
-			   TemplateSymbol.java
-	Most of the other main symbol table files (BasicSymbol, ContainerSymbol, etc) were modified
-	
-2004-02-10 John Camelon
-	Fixed Bug 51302 - Content Assist: No completion list available following namespace declaration. 
-
-2004-02-10 John Camelon
-	Refactored Parser.java to allow inline small functions and tightened the signatures for statement().  
-	Refactored Scanner.java to allow for data to be encapsulated to allow for IScannerExtension to act upon it. 
-	Partially fixed Bug 47628 - signed char is parsed as char (affects the outline view) 
-
-2004-02-08 John Camelon
-	Added support for inline method x-references.  
-	Fixed Bug 44340 - Inline functions fail to resolve references 
-	Fixed Bug 51243 - Content Assist in an empty document causes a NPE 
-
-2004-02-06 Andrew Niefer
-	fixed bug51260 - Content Assist: Completion inside a class method silently fails with a ClassCastException
-	filter symbols without attached AST nodes out of the completion results so the iterator doesn't sometimes return null.
-
-2004-02-04 John Camelon
-	Added preliminary (crude) bSelectionParser IParser implementation for SELECTION_PARSE clients.  
-
-2004-02-01 John Camelon
-	Added CompletionKind.UNREACHABLE_CODE to IASTCompletionNode.  
-	Updated Scanner to handle unreachable code scenarios in content assist.  
-	Added Directives class to centralize preprocessor directive strings.  
-	Added keyword completion for preprocessor lines that start with #.  
-
-2004-01-30 John Camelon
-	Partial fix for Bug 47752 - Outline does not recognize functions with full body try/catch blocks 
-
-2004-01-30 John Camelon
-	Updated Scanner to allow for more robust completion in #if directives. 
-
-2004-01-30 John Camelon
-	Fixed Bug 50487 - Wrong completion kind and prefix after "#ifdef" 
-	
-2004-01-29 Hoda Amer
-	Removed CompletionKind.KEYWORD.
-	
-2004-01-29 John Camelon
-	Fixed  50642 - Wrong completion kind when declaring an argument type
-	Updated using declarations for more accurate keywords and closure.
-	
-2004-01-29 Hoda Amer
-	Put CompletionKind.FUNCTION_REFERENCE back.
-	
-2004-01-28 John Camelon
-	Fixed Bug 50821 - Freezes when opening / saving .c file 
-
-2004-01-28 John Camelon
-	Fixed Bug 50711 - Wrong completion kind in a new expression
-
-2004-01-28 John Camelon
-	Updated Scanner to add ANSI built-in defined macros for C and C++.
-	Updated GCCScannerExtension to add GCC specific defined macros for C++.
-	Added factory infrastructure to allow for C/C++ dialect extensions to be added and contained.
-	Added IASTExpressionExtension w/implementation to allow for GCC specific leniency on evaluating expressions.
-
-2004-01-28 Andrew Niefer
-	Fixed bug#50729: Visibility is incorrectly decided in inheritance
-	
-2004-01-27 John Camelon
-	Refactored parser to allow for cleaner content assist implementation.  
-	Removed IASTCompletionNode.CompletionKind.STATEMENT_START as it is redundant.  
-	Fixed bug 50640 - Wrong completion kind when expecting an exception 
-	Fixed bug 50471 - Wrong completion kind after the "using" keyword
-	Fixed bug 50621 - Wrong completion kind in a class declaration 
-
-2004-01-17 Hoda Amer
-	Added IASTCompletionNode.CompletionKind.New_Type_Reference
-	for a completion kind after a new expression.
-	
-2004-01-27 Andrew Niefer
-	Updates to handle _Bool
-	 - modified  CompleteParseASTFactory.getParameterTypeInfo
-				 CompleteParseASTFactory.createReference 
-				 CompleteParseASTFactory.usualArithmeticConversions
-				 CompleteParseASTFactory.getTypeKind
-				 Parser.typeId
-				 TypeFilter.shouldAccept
-				 TypeInfo.equals
-
-2004-01-26 John Camelon
-	Added traceLogs into Scanner.  
-	Fixed Bug 46402 : expression evaluation error on branch not taken
-	Added beginning of IScannerExtension and GCCScannerExtension support for gcc specific aspects.
-	Added separate Scanner log category for tracing and updated clients to use it.  
-
-2004-01-26 Andrew Niefer
-	Handle the C types _Complex, _Imaginary, _Bool, & long long int:
-	modified ParserSymbolTable.promotion() & conversion()
-	added TypeInfo.isLongLong
-	modified TypeInfo.canHold()
-
-2004-01-23 John Camelon
-	Added support for content assist in the scanner..
-
-2004-01-22 John Camelon
-	Added token, scanner and problem subpackages to org.eclipse.cdt.internal.core.parser.
-
-2004-01-22 Hoda Amer
-	Solved a small problem in the ASTCompleteParseASTFactory sent to me by Dave.
-	
-2004-01-20 John Camelon
-	Added traceLog() call into Scanner.handleProblem() and updated ParserFactory.createPreprocessor() for extra error handling.  
-
-2004-01-20 John Camelon
-	Tidied up Scanner implementation for unused fields, inefficient String manipulations and redundant parameters.
-
-2004-01-19 John Camelon
-	Added IToken.getLineNumber() to facilitate adding line numbers to AST.
-	Added line number support into IASTOffsetableElement.  Updated all implementations to use this.  
-	Updated Parser and IASTFactory to populate IASTOffsetableElement with the values retrieved from IToken.  
-	Removed IScanner.getLineNumberForOffset().  
-
-2004-01-16 Andrew Niefer
-	Created IExtensibleSymbol, which is a new base class for the symbol interfaces
-	Created IUsingDirectiveSymbol and UsingDirectiveSymbol
-	Modified ASTUsingDirective to use IUsingDirectiveSymbol
-	Modified CompleteParseASTFactory.createUsingDirective
-	Added IContainerSymbol.getContentsIterator()
-	Implemented getContentsIterator in ContainerSymbol
-
-2004-01-16 John Camelon
-	Changed IASTNode.LookupException to IASTNode.LookupError.
-	Updated IASTElaboratedTypeSpecifier to remove redundant extends relationships.
-
-2004-01-15 Andrew Niefer
-	Modified symbol table constructor to take a ParseMode as a parameter.
-	Modified symbol table to use a TreeMap instead of HashMap when ParseMode is CONTEXTUAL_PARSE
-	Modified ASTNode.lookup to throw ASTNotImplementedException if called when ParseMode is not CONTEXTUAL_PARSE
-	
-2004-01-15 Hoda Amer
-	
-2004-01-15 John Camelon
-	Renamed IASTNode.LookupResult IASTNode.ILookupResult.  
-	Introduced new ParseError exception for contextual parse() methods.  
-	Renamed ParserFactoryException ParserFactoryError.  
-	Replaced ParserNotImplementedException with a variant of ParseError.
-	Updated IScanner & IParser to not reference OffsetLimitReachedException explicitly. 
-	Renamed ParserMode.CONTEXTUAL_PARSE to COMPLETION_PARSE.  
-	Cleaned up IMacroDescriptor and made Scanner definitions table consistent.
-	Added IScanner.getDefinitions() to return the entire Map of definitions to a client.
-	Removed most of the warnings from parser source directory.  
-	Removed the unused SyntaxErrorException. 
-	Provided partial fix for Bug 44370  IASTMacro requires more information for clients.  
-
-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") 
+2004-04-13 David Daoust
+	Modified Scanner Performance by 
+		1. Moving ScannerContext sentinal to ContextStack
+		2. Delay Stringizing macro parameter until needed
+		
+		Effect on #include <windows.h>
+		
+						total bytes	 objs	time(ms)tokens
+	orig				59905960	1455079	1593	83812
+	move sentinel		53824616	1262428	1462	83812
+	delay stringizing	40868312	950355	1322	83812
+	
+
+2004-04-13 Andrew Niefer
+	fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=46246
+	modified symbol table sorting to use a collator instead of String.compare()
+
+2004-04-11 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=55785.
+	Fix required update to ISourceElementRequestor interface : clients updated accordingly.
+
+2004-04-11 John Camelon
+	Updated errorhandling in Parser::translationUnit().
+
+2004-04-10 John Camelon
+	Removed unused methods from IToken.
+	Restructured Token implementation to be more memory efficient.
+	Tightened up visibility of different members in the implementation.
+	Added TokenFactory construct to isolate Token clients from the particulars of which IToken implementation to instantiate.
+
+2004-04-10 John Camelon
+	Partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=57898
+
+2004-04-09 Andrew Niefer
+	handle NPE during template argument deduction
+	fix bug in definitions of certain template member templates  (fixes a ClassCastException encountered in <list>)
+
+2004-04-09 Andrew Niefer
+	fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=57754
+	Fixed problems found after parsing iostream with discovered symbols, once 57754 was fixed:
+  		fixed some problems with explicit specializations
+		handle using declarations of templates
+		handle typedefs in ASTCompleteParseFactory.queryIsTypeName
+		fixed instantiating constructors
+
+2004-04-08 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=57800.
+
+2004-04-07 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=50808.
+	Provided partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=50807.
+	Provided partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=52988.
+	Introduced EMPTY_STRING, a single constant that replaced > 100'S O literal "" in the code.
+	Updated IASTCompletionNode interface to provide better support for FUNCTION_REFERENCE and CONSTRUCTOR_REFERENCE.
+	Implemented IASTTypeId.getFullSignature() for both QUICK_PARSE and COMPLETE_PARSE.
+	Tweaked ASTNode.lookup() so that it would work for FUNCTION_REFERENCE.
+
+2004-04-07 Andrew Niefer
+	fix lookup in parents when the parent is a deferred template instance, enables content assist on list (from <list>)
+
+2004-04-07 Andrew Niefer
+	fix bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=44338
+
+2004-04-07 Andrew Niefer
+	small changes to get through iostream under standard make with discovered symbols
+	- check null pointer in GCCScannerExtension.handlePreprocessorDirective, the null is probably a symptom of whatever 
+	  is giving us an unbalanced preprocessor directive
+	- catch exceptions during our 3rd attempt at a template argument in ExpressionParser.templateArgumentList
+
+2004-04-07 John Camelon
+	Provided a partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=50152
+	Updated IExpressionParser::expression() interface necessitated by this fix, and updated its clients appropriately.  
+
+2004-04-06 David Daoust
+	Removed some temporary objects that the scanner was producing.
+	Fixed small bug in GCCScannerExtension.
+
+2004-04-06 Andrew Niefer
+	Small changes to help with template parsing
+	 - report line numbers with some problems
+	 - don't throw on SEMANTIC_INVALID_TYPE while doing templates
+	 - handle some NPEs
+
+2004-04-06 Andrew Niefer
+	fix bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=47625
+
+2004-04-06 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39704 
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=29060 
+
+2004-04-06 John Camelon
+		Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=47797
+
+2004-04-05 Andrew Niefer
+	- performance improvements originally from Dave Daoust:
+		- create new TraceUtil to handle logging trace messages
+		- postpone building Problem message until it is asked for
+		- only ask for problem message if it will actually be traced
+	- added more problem strings for problems coming from the symbol table
+	- added CompleteParseASTFactory.shouldThrowException, so we can ignore certain problems
+	  encountered while parsing templates
+	- fix NPEs caused by bad type info objects
+
+2004-04-05 John Camelon
+	Fixed NPE in CompleteParseASTFactory::createUsingDeclaration().  
+
+2004-04-05 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=54029
+	
+2004-04-04 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=56516  
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=53786
+
+2004-04-02 Andrew Niefer
+	- partial handling template explicit instantiations
+	- bug 56834 - Symbols not available until end of parameter list, fixed for templates using temporary code block
+	- change IASTFactory.createTemplateParameter to take an IASTTypeId for the default value
+	- handle instantiating templates using default value that is a deferred instance
+
+2004-04-02 John Camelon
+	Updated SelectionSearch to work for functions, variables with initializers, etc.
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39705
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=44336  
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=36770  
+	Partial fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=51428  
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=39694  
+
+2004-03-30 John Camelon
+	Partial fix for Bug 56614 - Content Assist] Global variables do not appear in a global completion list
+
+2004-03-29 Andrew Niefer
+	fixed bug 56620 - Outline view stops on error on last line of block
+	(errorHandling() goes to far)
+
+2004-03-29 John Camelon
+	Fixed Bug 56517 - Preprocessor skipping doesn't ignore the contents of string literals.	
+
+2004-03-28 John Camelon
+	Remove warnings.  
+
+2004-03-26 Andrew Niefer
+	- handle template template parameters
+
+2004-03-26 Andrew Niefer
+	-report references to symbols used in a template-id.
+
+
+
+2004-03-25 Andrew Niefer
+	-modify IASTFactory.createField & .createVariable to take ITokenDuple's for the name
+	-modify ITokenDuple to support manipulating TokenDuples that have template arguments in them
+	-fix NullPointer & ClassCast exceptions found while parsing <string>
+
+2004-03-25 Hoda Amer
+	Joined effort with Bogdan: Added a parserTimeout() method to ISourceElementRequestor
+	and the ability for the parser to timeout.
+	
+2004-03-23 Andrew Niefer
+	-fix recursive loop leading to StackOverFlowException during template instantiation
+	-fix copy constructors for templated classes
+	-fix bug 55673
+	
+2004-03-22 Andrew Niefer
+	-handling of Typedefs
+	-handle unbalanced preprocessor condition in scanner
+	-fix concurrent modification exception while processing unresolved references in a Class Specifier
+	-report correct owner class for templated methods
+	-some work on template explicit specializations
+	-handle templated class forward declarations
+
+2004-03-18 Andrew Niefer
+	parsing template-ids: enables clas template partial specializations and fixes 54778 indirectly
+	- add ITokenDuple.getTemplateIdArgLists
+	- Added ExpressionParser.templateArgumentList & ExpressionParser.consumeTemplateArguments
+	- modifications to ExpressionParser & Parser to parse template argument lists
+	- modified lookups to lookup with template-id if the token duple has argument lists
+	- modified TemplateFactory to handle partial specializations
+
+2004-03-17 Andrew Niefer
+	fix bug 55163 
+	- in for-init-statement, try expression-statement before simple-declaration since if it actually is a statement instead of a 
+	declaration, the simple-declaration fails hard and can actually enter an infinite loop.
+
+2004-03-16 Dave Daoust
+	refactor scanner for performance improvements
+	-changes to accountForUndo, now named readFromStream
+	-changes to checking for valid macros
+
+2004-03-15 Andrew Niefer
+	Templates:
+	- added ISourceElementRequestor.acceptTemplateParameterReference
+	- added throws ASTSemanticException to IASTFactory.createTemplateDeclaration & createTemplateParameter
+	- IASTTemplateDeclaration extends IASTScope, IASTTemplateParameter extends ISourceElementCallbackDelegate
+	- modified DeclarationWrapper.createASTNode & createMethodASTNode to handle member templates
+	- Add functionality to ASTTemplateDeclaration
+	- implemented CompleteParseASTFactory.createTemplateDeclaration & createTemplateParameter
+	- changes to symbol table to make it easier for the parser to use 
+
+2004-03-12 Andrew Niefer
+	handle case causing NPE in CompleteParseASTFactory.createElaboratedTypeSpecifier
+
+2004-03-12 Andrew Niefer
+	bug 54639 fix NPE in CompleteParseASTFactory.cloneSimpleTypeSymbol 
+
+2004-03-11 John Camelon
+	Refactoring of Scanner to allow reuse in GCCScannerExtension
+
+2004-03-10 John Camelon
+	Further performance improvements in Scanner.  
+
+2004-03-09 Andrew Niefer
+	bug 52948
+	modified CompleteParseASTFactory.createTypedef() to set the typeSymbol of the typedef symbol
+	modified TypeFilter to handle LookupKind.TYPES and LookupKind.TYPEDEFS
+
+2004-03-09 John Camelon
+	Put back the work to reconcile relative paths w/IResource readers which was lost upon merge.  
+
+2004-03-09 Dave Daoust
+	Removed the Strings associated with constant value tokens and keywords  -- it looks cleaner, and reduces the number of objects created (only by 30 to 40 K) (about 2% quicker) 
+	Buffered the File I/O associated with reading inclusions.
+	Restructured the scanner into a large case statement with a few 
+	helper functions -- this is the start of removing the strings (or 
+	providing a preallocated buffer for string manipulation) (about 2% quicker) 
+
+2004-03-04 Andrew Niefer
+	bug 53213 externalize strings
+
+2004-03-03 John Camelon
+	Refactored parser for further content assist work.
+
+2004-03-03 John Camelon
+	Added some trace statements to CompleteParseASTFactory.  
+	Cleaned up usage of Enum.getValue() wrt encapsulation of enumerator value.  
+	Refactored CompleteParseASTFactory for correctness and abstraction. 
+	Added preliminary IProblem support to CompleteParseASTFactory.  
+	Added (commented out unfortunately) assertions into CompleteParseASTFactory. 
+	Updated IASTUsingDeclaration to return an Iterator for declarations mapped rather than just a single declaration.  
+
+2004-03-01 Andrew Niefer
+	bug 52695 :  ast.complete.IASTClassSpecifier#getDeclarations returns an empty iterator 
+	- take ASTNode.SymbolIterator and move it to org.eclipse.cdt.internal.core.parser.ast
+	- hook up ASTScope.getDeclarations to IContainerSymbol.getContentsIterator() using SymbolIterator
+	- create ExtensibleSymbol to implement IExtensibleSymbol and derive BasicSymbol, UsingDeclarationSymbol and UsingDirectiveSymbol from it.
+	
+
+2004-02-26 Andrew Niefer
+	mark strings that don't need to be externalized for translation
+
+2004-02-25 Bogdan Gheorghe
+	Added a check to make sure that the parser is in the top context before throwing
+	an EOF exception in SeletionParser.
+	
+2004-02-25 John Camelon
+	Fixed Bug 43051 : Search: cannot specify relative search paths
+	Fixed Bug 45140 : refactor IScanner to allow use of Readers of IResource
+
+2004-02-25 John Camelon
+	Updated Scanner to allow for invalid identifier names despite C++'s best efforts at maintaining its honour.  
+
+2004-02-24 John Camelon
+	Refactoring Scanner.handleInclusion to be more modular.
+
+2004-02-24 Andrew Niefer
+	Template Explicit Specializations (bug 51485)
+	adding basic symbol table functionality for non-nested template specializations
+
+2004-02-24 John Camelon
+	Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=52823
+
+2004-02-24 John Camelon
+	Partial Fix for Bug 52534 - Selection Search offset limit reached is broken 
+
+2004-02-18 Andrew Niefer
+	added IUsingDeclarationSymbol and UsingDeclarationSymbol
+	changed IContainerSymbol.addUsingDeclaration to return a IUsingDeclarationSymbol
+
+2004-02-17 Andrew Niefer
+	bug 52111 : added IContainerSymbol.removeSymbol() which is implemented as ContainerSymbol.removeSymbol()
+	
+2004-02-16 Andrew Niefer
+	bug 52120 document symbol table use of ParserSymbolTableException
+	also clean up a couple of exceptions
+
+2004-02-12 Andrew Niefer
+	Fixed up symbol table handling of const & volatile
+	fixed bug 47628 - signed char is parsed as char 
+	fixed bug 47636 - char* and char[] are treated as different types 
+	fixed bug 45697 - Parser/Symbol table: Mismatched declaration & definition 
+
+2004-02-12 John Camelon
+	Removed IASTCompletionKind.SCOPED_REFERENCE as it was obsolete.  
+	Did preliminary work to support content assist within qualified names.
+
+2004-02-11 John Camelon
+	Restructured Parser implementation to allow for better support of Selection Search.
+	Restructured Parser implementation to allow for separation between parsing expressions (Scanner) and complete C/C++ source.  
+
+2004-02-10 John Camelon
+	Workaround for Bug 51502 - Parser spins on particular file (Scalability)
+	
+2004-02-10 Andrew Niefer
+	Templates in the symbol table (org.eclipse.cdt.internal.core.parser.pst)
+			   ITemplateFactory.java
+			   ITemplateSymbol.java
+			   DeferredTemplateInstance.java
+			   ParserSymbolTableError.java
+			   TemplateEngine.java
+			   TemplateFactory.java
+			   TemplateSymbol.java
+	Most of the other main symbol table files (BasicSymbol, ContainerSymbol, etc) were modified
+	
+2004-02-10 John Camelon
+	Fixed Bug 51302 - Content Assist: No completion list available following namespace declaration. 
+
+2004-02-10 John Camelon
+	Refactored Parser.java to allow inline small functions and tightened the signatures for statement().  
+	Refactored Scanner.java to allow for data to be encapsulated to allow for IScannerExtension to act upon it. 
+	Partially fixed Bug 47628 - signed char is parsed as char (affects the outline view) 
+
+2004-02-08 John Camelon
+	Added support for inline method x-references.  
+	Fixed Bug 44340 - Inline functions fail to resolve references 
+	Fixed Bug 51243 - Content Assist in an empty document causes a NPE 
+
+2004-02-06 Andrew Niefer
+	fixed bug51260 - Content Assist: Completion inside a class method silently fails with a ClassCastException
+	filter symbols without attached AST nodes out of the completion results so the iterator doesn't sometimes return null.
+
+2004-02-04 John Camelon
+	Added preliminary (crude) bSelectionParser IParser implementation for SELECTION_PARSE clients.  
+
+2004-02-01 John Camelon
+	Added CompletionKind.UNREACHABLE_CODE to IASTCompletionNode.  
+	Updated Scanner to handle unreachable code scenarios in content assist.  
+	Added Directives class to centralize preprocessor directive strings.  
+	Added keyword completion for preprocessor lines that start with #.  
+
+2004-01-30 John Camelon
+	Partial fix for Bug 47752 - Outline does not recognize functions with full body try/catch blocks 
+
+2004-01-30 John Camelon
+	Updated Scanner to allow for more robust completion in #if directives. 
+
+2004-01-30 John Camelon
+	Fixed Bug 50487 - Wrong completion kind and prefix after "#ifdef" 
+	
+2004-01-29 Hoda Amer
+	Removed CompletionKind.KEYWORD.
+	
+2004-01-29 John Camelon
+	Fixed  50642 - Wrong completion kind when declaring an argument type
+	Updated using declarations for more accurate keywords and closure.
+	
+2004-01-29 Hoda Amer
+	Put CompletionKind.FUNCTION_REFERENCE back.
+	
+2004-01-28 John Camelon
+	Fixed Bug 50821 - Freezes when opening / saving .c file 
+
+2004-01-28 John Camelon
+	Fixed Bug 50711 - Wrong completion kind in a new expression
+
+2004-01-28 John Camelon
+	Updated Scanner to add ANSI built-in defined macros for C and C++.
+	Updated GCCScannerExtension to add GCC specific defined macros for C++.
+	Added factory infrastructure to allow for C/C++ dialect extensions to be added and contained.
+	Added IASTExpressionExtension w/implementation to allow for GCC specific leniency on evaluating expressions.
+
+2004-01-28 Andrew Niefer
+	Fixed bug#50729: Visibility is incorrectly decided in inheritance
+	
+2004-01-27 John Camelon
+	Refactored parser to allow for cleaner content assist implementation.  
+	Removed IASTCompletionNode.CompletionKind.STATEMENT_START as it is redundant.  
+	Fixed bug 50640 - Wrong completion kind when expecting an exception 
+	Fixed bug 50471 - Wrong completion kind after the "using" keyword
+	Fixed bug 50621 - Wrong completion kind in a class declaration 
+
+2004-01-17 Hoda Amer
+	Added IASTCompletionNode.CompletionKind.New_Type_Reference
+	for a completion kind after a new expression.
+	
+2004-01-27 Andrew Niefer
+	Updates to handle _Bool
+	 - modified  CompleteParseASTFactory.getParameterTypeInfo
+				 CompleteParseASTFactory.createReference 
+				 CompleteParseASTFactory.usualArithmeticConversions
+				 CompleteParseASTFactory.getTypeKind
+				 Parser.typeId
+				 TypeFilter.shouldAccept
+				 TypeInfo.equals
+
+2004-01-26 John Camelon
+	Added traceLogs into Scanner.  
+	Fixed Bug 46402 : expression evaluation error on branch not taken
+	Added beginning of IScannerExtension and GCCScannerExtension support for gcc specific aspects.
+	Added separate Scanner log category for tracing and updated clients to use it.  
+
+2004-01-26 Andrew Niefer
+	Handle the C types _Complex, _Imaginary, _Bool, & long long int:
+	modified ParserSymbolTable.promotion() & conversion()
+	added TypeInfo.isLongLong
+	modified TypeInfo.canHold()
+
+2004-01-23 John Camelon
+	Added support for content assist in the scanner..
+
+2004-01-22 John Camelon
+	Added token, scanner and problem subpackages to org.eclipse.cdt.internal.core.parser.
+
+2004-01-22 Hoda Amer
+	Solved a small problem in the ASTCompleteParseASTFactory sent to me by Dave.
+	
+2004-01-20 John Camelon
+	Added traceLog() call into Scanner.handleProblem() and updated ParserFactory.createPreprocessor() for extra error handling.  
+
+2004-01-20 John Camelon
+	Tidied up Scanner implementation for unused fields, inefficient String manipulations and redundant parameters.
+
+2004-01-19 John Camelon
+	Added IToken.getLineNumber() to facilitate adding line numbers to AST.
+	Added line number support into IASTOffsetableElement.  Updated all implementations to use this.  
+	Updated Parser and IASTFactory to populate IASTOffsetableElement with the values retrieved from IToken.  
+	Removed IScanner.getLineNumberForOffset().  
+
+2004-01-16 Andrew Niefer
+	Created IExtensibleSymbol, which is a new base class for the symbol interfaces
+	Created IUsingDirectiveSymbol and UsingDirectiveSymbol
+	Modified ASTUsingDirective to use IUsingDirectiveSymbol
+	Modified CompleteParseASTFactory.createUsingDirective
+	Added IContainerSymbol.getContentsIterator()
+	Implemented getContentsIterator in ContainerSymbol
+
+2004-01-16 John Camelon
+	Changed IASTNode.LookupException to IASTNode.LookupError.
+	Updated IASTElaboratedTypeSpecifier to remove redundant extends relationships.
+
+2004-01-15 Andrew Niefer
+	Modified symbol table constructor to take a ParseMode as a parameter.
+	Modified symbol table to use a TreeMap instead of HashMap when ParseMode is CONTEXTUAL_PARSE
+	Modified ASTNode.lookup to throw ASTNotImplementedException if called when ParseMode is not CONTEXTUAL_PARSE
+	
+2004-01-15 Hoda Amer
+	
+2004-01-15 John Camelon
+	Renamed IASTNode.LookupResult IASTNode.ILookupResult.  
+	Introduced new ParseError exception for contextual parse() methods.  
+	Renamed ParserFactoryException ParserFactoryError.  
+	Replaced ParserNotImplementedException with a variant of ParseError.
+	Updated IScanner & IParser to not reference OffsetLimitReachedException explicitly. 
+	Renamed ParserMode.CONTEXTUAL_PARSE to COMPLETION_PARSE.  
+	Cleaned up IMacroDescriptor and made Scanner definitions table consistent.
+	Added IScanner.getDefinitions() to return the entire Map of definitions to a client.
+	Removed most of the warnings from parser source directory.  
+	Removed the unused SyntaxErrorException. 
+	Provided partial fix for Bug 44370  IASTMacro requires more information for clients.  
+
+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") 
Index: parser/org/eclipse/cdt/core/parser/IScanner.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java,v
retrieving revision 1.22
diff -u -r1.22 IScanner.java
--- parser/org/eclipse/cdt/core/parser/IScanner.java	3 Mar 2004 15:59:51 -0000	1.22
+++ parser/org/eclipse/cdt/core/parser/IScanner.java	14 Apr 2004 00:42:51 -0000
@@ -3,6 +3,7 @@
 import java.util.Map;
 
 import org.eclipse.cdt.core.parser.ast.IASTFactory;
+import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext;
 
 /**
  * @author jcamelon
@@ -48,5 +49,6 @@
 	 * @return
 	 */
 	public boolean isOnTopContext();
+	public void setScannerContext(IScannerContext context);
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java,v
retrieving revision 1.6
diff -u -r1.6 ContextStack.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java	6 Apr 2004 21:31:15 -0000	1.6
+++ parser/org/eclipse/cdt/internal/core/parser/scanner/ContextStack.java	14 Apr 2004 00:42:55 -0000
@@ -13,16 +13,12 @@
 
 import java.io.IOException;
 import java.io.Reader;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.Stack;
 
 import org.eclipse.cdt.core.parser.IParserLogService;
 import org.eclipse.cdt.core.parser.IProblem;
+import org.eclipse.cdt.core.parser.IScanner;
 import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext.ContextKind;
 import org.eclipse.cdt.internal.core.parser.util.TraceUtil;
 
 /**
@@ -33,34 +29,84 @@
  */
 public class ContextStack {
 
+	private static class SentinelContext implements IScannerContext {
+		public int read() throws IOException { return '\n'; }
+		public String getFilename() { return ""; }
+		public int getMacroOffset() { return -1; }
+		public int getMacroLength() { return -1; }
+		public int getOffset() { return 0; }
+		public int getRelativeOffset() { return 0; }
+		public Reader getReader() { return null; }
+		public void pushUndo(int undo) { }
+		public int getKind() { return IScannerContext.ContextKind.SENTINEL; }
+		public void setKind(int kind) { }
+		public IASTInclusion getExtension() { return null; }
+		public void setExtension(IASTInclusion ext) { }
+		public int getLine() { return -1; }
+		public int undoStackSize() { return 0; }  
+		public int popUndo() { return '\n'; }
+	}
 	private final IParserLogService log;
-	private Scanner scanner;
+	private int current_size = 12;
+
+	private IScannerContext [] cs = new IScannerContext[current_size];;
+	private int cs_pos = 0;
+	
+	
+	private static IScannerContext sentinel = new SentinelContext();
+	 
+	private IScanner scanner;
+
+	private final void cs_push(IScannerContext c) {
+		try {
+			cs[cs_pos++] = c;;
+		}
+		catch (ArrayIndexOutOfBoundsException a)
+		{
+			int new_size = current_size*2;
+			IScannerContext [] new_cs = new IScannerContext[new_size];
+			
+			for (int i = 0; i < current_size; i++) {
+				new_cs[i] = cs[i];
+			}
+			
+			new_cs[current_size] = c;
+			current_size = new_size;
+			cs = new_cs;
+		}
+		scanner.setScannerContext(c);
+	}
+	private final IScannerContext cs_pop() {
+		IScannerContext context = cs[--cs_pos];
+		scanner.setScannerContext((cs_pos == 0) ? sentinel : cs[cs_pos -1]);
+		return context;
+	}
 	
-	public ContextStack( Scanner s, IParserLogService l ) {
-		scanner = s;
+	public ContextStack( IScanner scanner, IParserLogService l ) {
 		log = l;
+		this.scanner = scanner;
+		scanner.setScannerContext(sentinel);
 	}
 
-    public void updateContext(Reader reader, String filename, ContextKind type, IASTInclusion inclusion, ISourceElementRequestor requestor) throws ContextException {
+    public void updateContext(Reader reader, String filename, int type, IASTInclusion inclusion, ISourceElementRequestor requestor) throws ContextException {
         updateContext(reader, filename, type, inclusion, requestor, -1, -1);
     }
   
-	public void updateContext(Reader reader, String filename, ContextKind type, IASTInclusion inclusion, ISourceElementRequestor requestor, int macroOffset, int macroLength) throws ContextException 
+	public void updateContext(Reader reader, String filename, int type, IASTInclusion inclusion, ISourceElementRequestor requestor, int macroOffset, int macroLength) throws ContextException 
     {
 		int startLine = 1;
 		
         // If we expand a macro within a macro, then keep offsets of the top-level one,
         // as only the top level macro identifier is properly positioned    
         if (type == IScannerContext.ContextKind.MACROEXPANSION) {
-            if (currentContext.getKind() == IScannerContext.ContextKind.MACROEXPANSION) {
-                macroOffset = currentContext.getMacroOffset();
-                macroLength = currentContext.getMacroLength();
+            if (getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION) {
+                macroOffset = getCurrentContext().getMacroOffset();
+                macroLength = getCurrentContext().getMacroLength();
             }
             
-			startLine = currentContext.getLine();
+			startLine = getCurrentContext().getLine();
         }
 
-		undoStack.clear();
 		IScannerContext context = new ScannerContext( reader, filename, type, null, macroOffset, macroLength, startLine );
 		context.setExtension(inclusion); 
 		push( context, requestor );	
@@ -68,70 +114,42 @@
 	
 	protected void push( IScannerContext context, ISourceElementRequestor requestor ) throws ContextException
 	{
-		if( context.getKind() == IScannerContext.ContextKind.INCLUSION )
-		{
-			if( !inclusions.add( context.getFilename() ) )
+		if( context.getKind() == IScannerContext.ContextKind.INCLUSION ) {
+			if( isCircularInclusion( context.getFilename() ) )
 				throw new ContextException( IProblem.PREPROCESSOR_CIRCULAR_INCLUSION );
 			
 			TraceUtil.outputTrace(log, "Scanner::ContextStack: entering inclusion ", null, context.getFilename(), null, null ); //$NON-NLS-1$
 			context.getExtension().enterScope( requestor );				
-
-		} else if( context.getKind() == IScannerContext.ContextKind.MACROEXPANSION )
-		{
-			if( !defines.add( context.getFilename() ) )
-				throw new ContextException( IProblem.PREPROCESSOR_INVALID_MACRO_DEFN );
-		}
-		if( currentContext != null )
-			contextStack.push(currentContext);
-		
-		currentContext = context;
-		if( context.getKind() == IScannerContext.ContextKind.TOP )
-			topContext = context;
+		} 
+//		else if( context.getKind() == IScannerContext.ContextKind.MACROEXPANSION )
+//		{
+//			if( !defines.add( context.getFilename() ) )
+//				throw new ContextException( IProblem.PREPROCESSOR_INVALID_MACRO_DEFN );
+//		}
+		cs_push(context);
 	}
 	
 	public boolean rollbackContext(ISourceElementRequestor requestor) {
+		IScannerContext context = getCurrentContext();
 		try {
-			currentContext.getReader().close();
+			context.getReader().close();
 		} catch (IOException ie) {
 			TraceUtil.outputTrace( log, "ContextStack : Error closing reader "); //$NON-NLS-1$
 		}
 
-		if( currentContext.getKind() == IScannerContext.ContextKind.INCLUSION )
-		{
-			TraceUtil.outputTrace(log, "Scanner::ContextStack: ending inclusion ", null, currentContext.getFilename(), null, null); //$NON-NLS-1$
-			inclusions.remove( currentContext.getFilename() );
-			currentContext.getExtension().exitScope( requestor );
-		} else if( currentContext.getKind() == IScannerContext.ContextKind.MACROEXPANSION )
+		if( context.getKind() == IScannerContext.ContextKind.INCLUSION )
 		{
-			defines.remove( currentContext.getFilename() );
+			TraceUtil.outputTrace(log, "Scanner::ContextStack: ending inclusion ", null, context.getFilename(), null, null); //$NON-NLS-1$
+			context.getExtension().exitScope( requestor );
 		}
-		
-		undoStack.addFirst( currentContext );
-		
-		if (contextStack.isEmpty()) {
-			currentContext = null;
-			return false;
-		}
-
-		currentContext = (ScannerContext) contextStack.pop();
-		return true;
+		cs_pop();
+		return cs_pos != 0;
 	}
 	
-	public void undoRollback( IScannerContext undoTo, ISourceElementRequestor requestor ) throws ContextException {
-		if( currentContext == undoTo ){
-			return;
-		}
-		
-		int size = undoStack.size();
-		if( size > 0 )
-		{
-			for( int i = size; i > 0; i-- )
-			{
-				push( (IScannerContext) undoStack.removeFirst(), requestor );
-				
-				if( currentContext == undoTo )
-					break;
-			}	
+	public void undoRollback( IScannerContext undoTo, ISourceElementRequestor requestor ) {
+		while (getCurrentContext() != undoTo ) {
+			//cs_pos++;
+			scanner.setScannerContext(cs[cs_pos++]);
 		}
 	}
 	
@@ -147,58 +165,42 @@
 	 */
 	protected boolean shouldExpandDefinition( String symbol )
 	{
-		return !defines.contains( symbol );
+		for(int i = cs_pos-1; i >= 0; i--)
+			if (cs[i].getKind() == IScannerContext.ContextKind.MACROEXPANSION
+					&& cs[i].getFilename().equals(symbol))
+				return false;
+		return true;
 	}
 	
-	public IScannerContext getCurrentContext(){
-		return currentContext;
+	protected boolean isCircularInclusion( String symbol )
+	{
+		for(int i = cs_pos-1; i >= 0; i--)
+			if (cs[i].getKind() == IScannerContext.ContextKind.INCLUSION &&
+					cs[i].getFilename().equals(symbol))
+				return true;
+		return false;
 	}
 	
-	private IScannerContext currentContext, topContext;
-	private Stack contextStack = new Stack();
-	private LinkedList undoStack = new LinkedList();
-	private Set inclusions = new HashSet(); 
-	private Set defines = new HashSet();
-	
-	/**
-	 * @return
-	 */
-	public IScannerContext getTopContext() {
-		return topContext;
+	public final IScannerContext getCurrentContext(){
+		return (cs_pos == 0) ? sentinel : cs[cs_pos -1];
 	}
 
 	public IScannerContext getMostRelevantFileContext()
 	{
-		if( currentContext != null )
+		IScannerContext context = sentinel;
+		for( int i = cs_pos - 1; i > 0; --i )
 		{
-			if( currentContext.getKind() == IScannerContext.ContextKind.TOP ) return currentContext;
-			if( currentContext.getKind() == IScannerContext.ContextKind.INCLUSION ) return currentContext;
-		}
-				
-		IScannerContext context = null;
-		for( int i = contextStack.size() - 1; i >= 0; --i )
-		{
-			context = (IScannerContext)contextStack.get(i);
-			if( context.getKind() == IScannerContext.ContextKind.INCLUSION || context.getKind() == IScannerContext.ContextKind.TOP )
+			context = cs[i];
+			if( context.getKind() == IScannerContext.ContextKind.INCLUSION 
+					|| context.getKind() == IScannerContext.ContextKind.TOP )
 				break;
-			if( i == 0 ) context = null;
 		}
-		
 		return context;
 	}
 	
 	public int getCurrentLineNumber()
 	{
-		return getMostRelevantFileContext() != null ? getMostRelevantFileContext().getLine() : -1;
-	}
-	
-	public int getTopFileLineNumber()
-	{
-		return topContext.getLine();
-	}
-	
-	public Scanner getScanner()
-	{
-		return scanner;
+		return getMostRelevantFileContext().getLine();
 	}
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/scanner/IScannerContext.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/IScannerContext.java,v
retrieving revision 1.1
diff -u -r1.1 IScannerContext.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner/IScannerContext.java	22 Jan 2004 20:15:26 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/scanner/IScannerContext.java	14 Apr 2004 00:42:55 -0000
@@ -2,7 +2,6 @@
 import java.io.IOException;
 import java.io.Reader;
 
-import org.eclipse.cdt.core.parser.Enum;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 /**
  * @author jcamelon
@@ -11,20 +10,12 @@
 public interface IScannerContext {
 	
 	
-	public static class ContextKind extends Enum  
+	public static class ContextKind  
 	{
-		public static ContextKind SENTINEL = new ContextKind( 0 );
-		public static ContextKind TOP = new ContextKind( 1 ); 
-		public static ContextKind INCLUSION = new ContextKind( 2 ); 
-		public static ContextKind MACROEXPANSION = new ContextKind( 3 ); 
-		
-		/**
-		 * @param enumValue
-		 */
-		protected ContextKind(int enumValue) {
-			super(enumValue);
-			// 
-		}
+		public static int SENTINEL =  0;
+		public static int TOP = 1; 
+		public static int INCLUSION = 2; 
+		public static int MACROEXPANSION = 3; 
 	}
 
     /**
@@ -67,8 +58,8 @@
 	public int popUndo();
 	public void pushUndo(int undo);
 	
-	public ContextKind getKind(); 
-	public void setKind( ContextKind kind ); 
+	public int getKind(); 
+	public void setKind( int kind ); 
 
 	public IASTInclusion getExtension(); 
 	public void setExtension( IASTInclusion ext );
Index: parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java,v
retrieving revision 1.2
diff -u -r1.2 LimitedScannerContext.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java	30 Jan 2004 18:28:07 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/scanner/LimitedScannerContext.java	14 Apr 2004 00:42:55 -0000
@@ -30,7 +30,7 @@
 	 * @param object
 	 * @param offsetLimit
 	 */
-	public LimitedScannerContext(Scanner scanner, Reader reader, String string, ContextKind kind, int offsetLimit) {
+	public LimitedScannerContext(Scanner scanner, Reader reader, String string, int kind, int offsetLimit) {
 		super( reader, string, kind, null );
 		this.scanner = scanner;
 		limit = offsetLimit;
Index: parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java,v
retrieving revision 1.35
diff -u -r1.35 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java	12 Apr 2004 15:37:39 -0000	1.35
+++ parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java	14 Apr 2004 00:42:57 -0000
@@ -80,6 +80,11 @@
 	private static final int NO_OFFSET_LIMIT = -1;
 	private int offsetLimit = NO_OFFSET_LIMIT;
 	private boolean limitReached = false; 
+	private IScannerContext currentContext;
+	
+	public void setScannerContext(IScannerContext context) {
+		currentContext = context;
+	}
 	
 	protected void handleProblem( int problemID, String argument, int beginningOffset, boolean warning, boolean error ) throws ScannerException
 	{
@@ -546,7 +551,7 @@
 			}
 			else // local inclusion
 			{
-				duple = ScannerUtility.createReaderDuple( new File( scannerData.getContextStack().getCurrentContext().getFilename() ).getParentFile().getAbsolutePath(), fileName, scannerData.getClientRequestor(), scannerData.getWorkingCopies() );
+				duple = ScannerUtility.createReaderDuple( new File( currentContext.getFilename() ).getParentFile().getAbsolutePath(), fileName, scannerData.getClientRequestor(), scannerData.getWorkingCopies() );
 				if( duple != null )
 					break totalLoop;
 				useIncludePaths = true;
@@ -599,7 +604,7 @@
 		File includeFile = null;
 		
 		if( !useIncludePaths ) {  // local inclusion is checked first 			
-			String currentFilename = scannerData.getContextStack().getCurrentContext().getFilename(); 
+			String currentFilename = currentContext.getFilename(); 
 			File currentIncludeFile = new File( currentFilename );
 			String parentDirectory = currentIncludeFile.getParentFile().getAbsolutePath();
 			currentIncludeFile = null; 
@@ -723,9 +728,9 @@
 	private int getChar( boolean insideString ) throws ScannerException {	
 		int c = NOCHAR;
 		
-		lastContext = scannerData.getContextStack().getCurrentContext();
+		lastContext = currentContext;
 		
-		if (lastContext == null)
+		if (lastContext.getKind() == IScannerContext.ContextKind.SENTINEL)
 			// past the end of file
 			return c;
 
@@ -845,7 +850,7 @@
     {
     	int c;
     	try {
-    		c = scannerData.getContextStack().getCurrentContext().read();
+    		c = currentContext.read();
     	}
     	catch (IOException e) {
     		c = NOCHAR;
@@ -857,22 +862,16 @@
     	if (scannerData.getContextStack().rollbackContext(scannerData.getClientRequestor()) == false)
     		return NOCHAR;
     	
-    	if (scannerData.getContextStack().getCurrentContext().undoStackSize() != 0 )
-    		return scannerData.getContextStack().getCurrentContext().popUndo();
+    	if (currentContext.undoStackSize() != 0 )
+    		return currentContext.popUndo();
     	
     	return readFromStream();
     }
 
 	final void ungetChar(int c) throws ScannerException{
-		scannerData.getContextStack().getCurrentContext().pushUndo(c);
-		try
-		{
-			scannerData.getContextStack().undoRollback( lastContext, scannerData.getClientRequestor() );
-		}
-		catch (ContextException e)
-		{
-			handleProblem( e.getId(), scannerData.getContextStack().getCurrentContext().getFilename(), getCurrentOffset(), false, true );
-		}
+		currentContext.pushUndo(c);
+		scannerData.getContextStack().undoRollback( lastContext, scannerData.getClientRequestor() );
+
 	}
 
 	protected boolean lookAheadForTokenPasting() throws ScannerException
@@ -898,7 +897,7 @@
 
 	protected void consumeUntilOutOfMacroExpansion() throws ScannerException
 	{
-		while( scannerData.getContextStack().getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION )
+		while( currentContext.getKind() == IScannerContext.ContextKind.MACROEXPANSION )
 			getChar();
 	}
 
@@ -933,7 +932,7 @@
 			}
 			catch (ContextException e)
 			{
-				handleProblem( e.getId(), scannerData.getContextStack().getCurrentContext().getFilename(), getCurrentOffset(), false, true  );
+				handleProblem( e.getId(), currentContext.getFilename(), getCurrentOffset(), false, true  );
 			}
 			storageBuffer = null; 
 			return true;
@@ -1172,7 +1171,7 @@
 	public IToken processPreprocessor() throws ScannerException, EndOfFileException
 	{
 		int c;
-		int beginningOffset = scannerData.getContextStack().getCurrentContext().getOffset() - 1;
+		int beginningOffset = currentContext.getOffset() - 1;
 		int beginningLine = scannerData.getContextStack().getCurrentLineNumber();
 
 		// we are allowed arbitrary whitespace after the '#' and before the rest of the text
@@ -2679,7 +2678,7 @@
 	protected void poundDefine(int beginning, int beginningLine ) throws ScannerException, EndOfFileException {
 		// definition 
 		String key = getNextIdentifier();
-		int offset = scannerData.getContextStack().getCurrentContext().getOffset() - key.length() - scannerData.getContextStack().getCurrentContext().undoStackSize();
+		int offset = currentContext.getOffset() - key.length() - currentContext.undoStackSize();
 		int nameLine = scannerData.getContextStack().getCurrentLineNumber();
 
 		// store the previous definition to check against later
@@ -2819,7 +2818,7 @@
 		
 		try
         {
-			scannerData.getASTFactory().createMacro( key, beginning, beginningLine, offset, offset + key.length(), nameLine, scannerData.getContextStack().getCurrentContext().getOffset(), scannerData.getContextStack().getCurrentLineNumber(), descriptor ).acceptElement( scannerData.getClientRequestor() );
+			scannerData.getASTFactory().createMacro( key, beginning, beginningLine, offset, offset + key.length(), nameLine, currentContext.getOffset(), scannerData.getContextStack().getCurrentLineNumber(), descriptor ).acceptElement( scannerData.getClientRequestor() );
         }
         catch (Exception e)
         {
@@ -2952,7 +2951,7 @@
 			}
 			catch (ContextException e)
 			{
-				handleProblem( e.getId(), scannerData.getContextStack().getCurrentContext().getFilename(), getCurrentOffset(), false, true );
+				handleProblem( e.getId(), currentContext.getFilename(), getCurrentOffset(), false, true );
 				consumeUntilOutOfMacroExpansion();
 				return;
 			}
@@ -2983,7 +2982,7 @@
 				String betweenTheBrackets = buffer.toString().trim();
                 
                 Vector parameterValues = getMacroParameters(betweenTheBrackets, false);
-                Vector parameterValuesForStringizing = getMacroParameters(betweenTheBrackets, true);
+                Vector parameterValuesForStringizing = null;
                 SimpleToken t = null;
                 
 				// create a string that represents what needs to be tokenized
@@ -3018,6 +3017,8 @@
 					} else if (t.getType() == tPOUND) {
 						//next token should be a parameter which needs to be turned into
 						//a string literal
+						if( parameterValuesForStringizing == null)
+							parameterValuesForStringizing = getMacroParameters(betweenTheBrackets, true);
 						t = (SimpleToken) tokens.get( ++i );
 						int index = parameterNames.indexOf(t.getImage());
 						if( index == -1 ){
@@ -3102,7 +3103,7 @@
 				}
 				catch (ContextException e)
 				{
-					handleProblem( e.getId(), scannerData.getContextStack().getCurrentContext().getFilename(), getCurrentOffset(), false, true );
+					handleProblem( e.getId(), currentContext.getFilename(), getCurrentOffset(), false, true );
 					consumeUntilOutOfMacroExpansion();
 					return;
 				}
@@ -3192,7 +3193,7 @@
 	 * @see org.eclipse.cdt.core.parser.IScanner#isOnTopContext()
 	 */
 	public boolean isOnTopContext() {
-		return ( scannerData.getContextStack().getCurrentContext() == scannerData.getContextStack().getTopContext() );
+		return ( currentContext.getKind() == IScannerContext.ContextKind.TOP );
 	}	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.core.parser.IFilenameProvider#getCurrentFilename()
 	 */
@@ -3208,8 +3209,8 @@
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append( "Scanner @"); //$NON-NLS-1$
-		if( scannerData.getContextStack().getCurrentContext() != null )
-			buffer.append( scannerData.getContextStack().getCurrentContext().toString());
+		if( currentContext != null )
+			buffer.append( currentContext.toString());
 		else
 			buffer.append( "EOF"); //$NON-NLS-1$
 		return buffer.toString();
Index: parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java,v
retrieving revision 1.3
diff -u -r1.3 ScannerContext.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java	12 Apr 2004 15:37:39 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java	14 Apr 2004 00:42:57 -0000
@@ -23,12 +23,12 @@
     private int macroLength = -1;
 	private int line = 1;
 	private int offset;
-	private ContextKind kind; 
+	private int kind; 
 				
     /* (non-Javadoc)
      * @see org.eclipse.cdt.internal.core.parser.IScannerContext#initialize(Reader, String, int, IASTInclusion, int, int, int)
      */
-	public ScannerContext(Reader r, String f, ContextKind k, IASTInclusion i, int mO, int mL, int l)
+	public ScannerContext(Reader r, String f, int k, IASTInclusion i, int mO, int mL, int l)
 	{
 		reader = r;
 		filename = f;
@@ -43,7 +43,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.internal.core.parser.IScannerContext#initialize(Reader, String, int, IASTInclusion)
      */
-    public ScannerContext(Reader r, String f, ContextKind k, IASTInclusion i)
+    public ScannerContext(Reader r, String f, int k, IASTInclusion i)
     {
         this(r, f, k, i, -1, -1, 1);
     }
@@ -151,7 +151,7 @@
 	 * Returns the kind.
 	 * @return int
 	 */
-	public ContextKind getKind() {
+	public int getKind() {
 		return kind;
 	}
 
@@ -159,7 +159,7 @@
 	 * Sets the kind.
 	 * @param kind The kind to set
 	 */
-	public void setKind(ContextKind kind) {
+	public void setKind(int kind) {
 		this.kind = kind;
 	}
 	/* (non-Javadoc)

Back to the top