Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-patch] Parser patch - Adding offsets to TemplateDeclarat ions for outline view

CORE
	Updated callbacks and parser to add offset information to template
declarations, 
	thus making TemplateDeclaration implement IOffsetable.

JohnC aka Dude

> -----Original Message-----
> From: Schaefer, Doug [mailto:dschaefer@xxxxxxxxxxxx]
> Sent: Thursday, April 10, 2003 12:59 PM
> To: 'cdt-patch@xxxxxxxxxxx'
> Subject: RE: [cdt-patch] Parser patch - Adding offsets to
> TemplateDeclarat ions for outline view
> 
> 
> Dude, Outlook is messing up your patch.  Please attach the patch file.
> 
> Doug Schaefer
> Rational Software - IBM Software Group
> Ottawa (Kanata), Ontario, Canada
>  
> 
> -----Original Message-----
> From: Camelon, John [mailto:jcamelon@xxxxxxxxxxxx] 
> Sent: Thursday, April 10, 2003 12:00 PM
> To: Cdt-Patch (E-mail)
> Subject: [cdt-patch] Parser patch - Adding offsets to 
> TemplateDeclarations
> for outline view
> 
> 
> Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/
> core/dom/DOMBu
> ilder.java,v
> retrieving revision 1.18
> diff -u -r1.18 DOMBuilder.java
> --- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	
> 9 Apr 2003
> 21:11:59 -0000	1.18
> +++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	
> 10 Apr 2003
> 16:02:07 -0000
> @@ -813,7 +813,7 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationBegi
> n(java.lang.Object, boolean)
>  	 */
> -	public Object templateDeclarationBegin(Object container, boolean
> exported) {
> +	public Object templateDeclarationBegin(Object container, Token
> exported) {
>  		return new TemplateDeclaration( 
> (IScope)container, exported
> );
>  	}
>  
> @@ -827,8 +827,9 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationEnd(
> java.lang.Object)
>  	 */
> -	public void templateDeclarationEnd(Object templateDecl) {
> +	public void templateDeclarationEnd(Object templateDecl, Token
> lastToken) {
>  		TemplateDeclaration decl =
> (TemplateDeclaration)templateDecl;
> +		decl.setLastToken(lastToken);
>  		decl.getOwnerScope().addDeclaration(decl);
>  	}
>  
> Index: dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/
> core/dom/Templ
> ateDeclaration.java,v
> retrieving revision 1.2
> diff -u -r1.2 TemplateDeclaration.java
> --- 
> dom/org/eclipse/cdt/internal/core/dom/TemplateDeclarati
> on.java	4
> Apr 2003 14:05:18 -0000	1.2
> +++ 
> dom/org/eclipse/cdt/internal/core/dom/TemplateDeclarati
> on.java	10
> Apr 2003 16:02:09 -0000
> @@ -16,21 +16,25 @@
>  import java.util.Collections;
>  import java.util.List;
>  
> +import org.eclipse.cdt.internal.core.parser.Token;
> +
>  /**
>   * @author jcamelon
>   *
>   */
> -public class TemplateDeclaration extends Declaration 
> implements IScope,
> ITemplateParameterListOwner {
> +public class TemplateDeclaration extends Declaration 
> implements IScope,
> ITemplateParameterListOwner, IOffsetable {
>  
> -	private final boolean exported; 
> +	private final boolean exported;
> +	private Token firstToken, lastToken; 
>  	private IScope ownerScope;  
>  	private List declarations = new ArrayList(); 
>  	private TemplateParameterList templateParms = null;     
>            
>  
> -	public TemplateDeclaration( IScope ownerScope, boolean 
> exported )
> +	public TemplateDeclaration( IScope ownerScope, Token exported )
>  	{
>  		this.ownerScope = ownerScope;
> -		this.exported = exported;
> +		this.firstToken = exported; 
> +		this.exported = exported.getType() == 
> Token.t_export ? true
> : false;
>  	}
>  
>  	/* (non-Javadoc)
> @@ -73,6 +77,62 @@
>  	 */
>  	public void setTemplateParms(TemplateParameterList list) {
>  		templateParms = list;
> +	}
> +
> +	/**
> +	 * @return
> +	 */
> +	public Token getFirstToken() {
> +		return firstToken;
> +	}
> +
> +	/**
> +	 * @return
> +	 */
> +	public Token getLastToken() {
> +		return lastToken;
> +	}
> +
> +	/**
> +	 * @param token
> +	 */
> +	public void setFirstToken(Token token) {
> +		firstToken = token;
> +	}
> +
> +	/**
> +	 * @param token
> +	 */
> +	public void setLastToken(Token token) {
> +		lastToken = token;
> +	}
> +
> +	/* (non-Javadoc)
> +	 * @see
> org.eclipse.cdt.internal.core.dom.IOffsetable#getStartingOffset()
> +	 */
> +	public int getStartingOffset() {
> +		return getFirstToken().getOffset();
> +	}
> +
> +	/* (non-Javadoc)
> +	 * @see
> org.eclipse.cdt.internal.core.dom.IOffsetable#getTotalLength()
> +	 */
> +	public int getTotalLength() {
> +		return getLastToken().getOffset() +
> getLastToken().getLength() - getStartingOffset();
> +	}
> +
> +	/* (non-Javadoc)
> +	 * @see
> org.eclipse.cdt.internal.core.dom.IOffsetable#setStartingOffset(int)
> +	 */
> +	public void setStartingOffset(int i) {
> +		throw new Error( "Sorry, not implemented bucko!");
> +	}
> +
> +	/* (non-Javadoc)
> +	 * @see
> org.eclipse.cdt.internal.core.dom.IOffsetable#setTotalLength(int)
> +	 */
> +	public void setTotalLength(int i) {
> +		throw new Error( "Sorry, not implemented bucko!");
>  	}
>  
>  }
> Index: 
> parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/intern
> al/core/parser
> /ExpressionEvaluator.java,v
> retrieving revision 1.16
> diff -u -r1.16 ExpressionEvaluator.java
> --- 
> parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
> 6 Apr 2003 03:06:16 -0000	1.16
> +++ 
> parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
> 10 Apr 2003 16:02:23 -0000
> @@ -680,7 +680,7 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationBegi
> n(java.lang.Object, boolean)
>  	 */
> -	public Object templateDeclarationBegin(Object container, boolean
> exported) {
> +	public Object templateDeclarationBegin(Object container, Token
> exported) {
>  		return null;
>  	}
>  
> @@ -693,7 +693,7 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationEnd(
> java.lang.Object)
>  	 */
> -	public void templateDeclarationEnd(Object templateDecl) {
> +	public void templateDeclarationEnd(Object templateDecl, Token
> lastToken) {
>  	}
>  
>  	/* (non-Javadoc)
> Index: 
> parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/intern
> al/core/parser
> /IParserCallback.java,v
> retrieving revision 1.15
> diff -u -r1.15 IParserCallback.java
> --- 
> parser/org/eclipse/cdt/internal/core/parser/IParserCallba
> ck.java	6
> Apr 2003 03:06:16 -0000	1.15
> +++ 
> parser/org/eclipse/cdt/internal/core/parser/IParserCallba
> ck.java	10
> Apr 2003 16:02:25 -0000
> @@ -124,9 +124,9 @@
>  	public Object	explicitSpecializationBegin( Object container );
>  	public void		explicitSpecializationEnd( Object
> instantiation );
>  
> -	public Object	templateDeclarationBegin( Object 
> container, boolean
> exported );
> +	public Object	templateDeclarationBegin( Object 
> container, Token
> firstToken );
>  	public void 	templateDeclarationAbort( Object templateDecl );
> -	public void		templateDeclarationEnd( Object 
> templateDecl
> );	
> +	public void		templateDeclarationEnd( Object 
> templateDecl,
> Token lastToken );	
>  	
>  	public Object	templateParameterListBegin( Object 
> declaration );
>  	public void		templateParameterListEnd( Object
> parameterList );
> Index: 
> parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/intern
> al/core/parser
> /NullParserCallback.java,v
> retrieving revision 1.15
> diff -u -r1.15 NullParserCallback.java
> --- 
> parser/org/eclipse/cdt/internal/core/parser/NullParserCallba
> ck.java	6
> Apr 2003 03:06:16 -0000	1.15
> +++ 
> parser/org/eclipse/cdt/internal/core/parser/NullParserCallba
> ck.java	10
> Apr 2003 16:02:28 -0000
> @@ -569,7 +569,7 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationBegi
> n(java.lang.Object, boolean)
>  	 */
> -	public Object templateDeclarationBegin(Object container, boolean
> exported) {
> +	public Object templateDeclarationBegin(Object container, Token
> exported) {
>  		return null;
>  	}
>  
> @@ -582,7 +582,7 @@
>  	/* (non-Javadoc)
>  	 * @see
> org.eclipse.cdt.internal.core.parser.IParserCallback#templateD
> eclarationEnd(
> java.lang.Object)
>  	 */
> -	public void templateDeclarationEnd(Object templateDecl) {
> +	public void templateDeclarationEnd(Object templateDecl, Token
> lastToken) {
>  	}
>  
>  	/* (non-Javadoc)
> Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/intern
> al/core/parser
> /Parser.java,v
> retrieving revision 1.25
> diff -u -r1.25 Parser.java
> --- parser/org/eclipse/cdt/internal/core/parser/Parser.java	
> 9 Apr 2003
> 21:11:59 -0000	1.25
> +++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	
> 10 Apr 2003
> 16:02:35 -0000
> @@ -283,14 +283,16 @@
>  	 */
>  	protected void templateDeclaration( Object container ) throws
> Backtrack
>  	{
> -		boolean export = false; 
> +		Token firstToken = null; 
>  		if( LT(1) == Token.t_export )
>  		{
> -			consume( Token.t_export ); 
> -			export = true; 
> +			firstToken = consume( Token.t_export );
> +			consume( Token.t_template ); 
>  		}
> +		else
> +			firstToken = consume( Token.t_template );
> +		
>  		
> -		consume( Token.t_template );
>  		if( LT(1) != Token.tLT )
>  		{
>  			// explicit-instantiation
> @@ -318,11 +320,11 @@
>  		Object templateDeclaration = null;
>  		try
>  		{
> -			try{ templateDeclaration =
> callback.templateDeclarationBegin( container, export ); } 
> catch ( Exception
> e ) {}
> +			try{ templateDeclaration =
> callback.templateDeclarationBegin( container, firstToken ); } catch (
> Exception e ) {}
>  			templateParameterList( templateDeclaration );
>  			consume( Token.tGT );
>  			declaration( templateDeclaration ); 
> -			try{ callback.templateDeclarationEnd(
> templateDeclaration ); } catch( Exception e ) {}
> +			try{ callback.templateDeclarationEnd(
> templateDeclaration, lastToken ); } catch( Exception e ) {}
>  			
>  		} catch( Backtrack bt )
>  		{
> _______________________________________________
> cdt-patch mailing list
> cdt-patch@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/cdt-patch
> _______________________________________________
> cdt-patch mailing list
> cdt-patch@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/cdt-patch
> 

Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java,v
retrieving revision 1.18
diff -u -r1.18 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	9 Apr 2003 21:11:59 -0000	1.18
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	10 Apr 2003 17:07:47 -0000
@@ -813,7 +813,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegin(java.lang.Object, boolean)
 	 */
-	public Object templateDeclarationBegin(Object container, boolean exported) {
+	public Object templateDeclarationBegin(Object container, Token exported) {
 		return new TemplateDeclaration( (IScope)container, exported );
 	}
 
@@ -827,8 +827,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationEnd(java.lang.Object)
 	 */
-	public void templateDeclarationEnd(Object templateDecl) {
+	public void templateDeclarationEnd(Object templateDecl, Token lastToken) {
 		TemplateDeclaration decl = (TemplateDeclaration)templateDecl;
+		decl.setLastToken(lastToken);
 		decl.getOwnerScope().addDeclaration(decl);
 	}
 
Index: dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java,v
retrieving revision 1.2
diff -u -r1.2 TemplateDeclaration.java
--- dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java	4 Apr 2003 14:05:18 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java	10 Apr 2003 17:07:48 -0000
@@ -16,21 +16,25 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Token;
+
 /**
  * @author jcamelon
  *
  */
-public class TemplateDeclaration extends Declaration implements IScope, ITemplateParameterListOwner {
+public class TemplateDeclaration extends Declaration implements IScope, ITemplateParameterListOwner, IOffsetable {
 
-	private final boolean exported; 
+	private final boolean exported;
+	private Token firstToken, lastToken; 
 	private IScope ownerScope;  
 	private List declarations = new ArrayList(); 
 	private TemplateParameterList templateParms = null;                
 
-	public TemplateDeclaration( IScope ownerScope, boolean exported )
+	public TemplateDeclaration( IScope ownerScope, Token exported )
 	{
 		this.ownerScope = ownerScope;
-		this.exported = exported;
+		this.firstToken = exported; 
+		this.exported = exported.getType() == Token.t_export ? true : false;
 	}
 
 	/* (non-Javadoc)
@@ -73,6 +77,62 @@
 	 */
 	public void setTemplateParms(TemplateParameterList list) {
 		templateParms = list;
+	}
+
+	/**
+	 * @return
+	 */
+	public Token getFirstToken() {
+		return firstToken;
+	}
+
+	/**
+	 * @return
+	 */
+	public Token getLastToken() {
+		return lastToken;
+	}
+
+	/**
+	 * @param token
+	 */
+	public void setFirstToken(Token token) {
+		firstToken = token;
+	}
+
+	/**
+	 * @param token
+	 */
+	public void setLastToken(Token token) {
+		lastToken = token;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getStartingOffset()
+	 */
+	public int getStartingOffset() {
+		return getFirstToken().getOffset();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTotalLength()
+	 */
+	public int getTotalLength() {
+		return getLastToken().getOffset() + getLastToken().getLength() - getStartingOffset();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setStartingOffset(int)
+	 */
+	public void setStartingOffset(int i) {
+		throw new Error( "Sorry, not implemented bucko!");
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTotalLength(int)
+	 */
+	public void setTotalLength(int i) {
+		throw new Error( "Sorry, not implemented bucko!");
 	}
 
 }
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.24
diff -u -r1.24 ChangeLog
--- parser/ChangeLog	9 Apr 2003 21:12:00 -0000	1.24
+++ parser/ChangeLog	10 Apr 2003 17:07:50 -0000
@@ -1,3 +1,7 @@
+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.  
Index: parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java,v
retrieving revision 1.16
diff -u -r1.16 ExpressionEvaluator.java
--- parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	6 Apr 2003 03:06:16 -0000	1.16
+++ parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	10 Apr 2003 17:07:55 -0000
@@ -680,7 +680,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegin(java.lang.Object, boolean)
 	 */
-	public Object templateDeclarationBegin(Object container, boolean exported) {
+	public Object templateDeclarationBegin(Object container, Token exported) {
 		return null;
 	}
 
@@ -693,7 +693,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationEnd(java.lang.Object)
 	 */
-	public void templateDeclarationEnd(Object templateDecl) {
+	public void templateDeclarationEnd(Object templateDecl, Token lastToken) {
 	}
 
 	/* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java,v
retrieving revision 1.15
diff -u -r1.15 IParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	6 Apr 2003 03:06:16 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	10 Apr 2003 17:07:56 -0000
@@ -124,9 +124,9 @@
 	public Object	explicitSpecializationBegin( Object container );
 	public void		explicitSpecializationEnd( Object instantiation );
 
-	public Object	templateDeclarationBegin( Object container, boolean exported );
+	public Object	templateDeclarationBegin( Object container, Token firstToken );
 	public void 	templateDeclarationAbort( Object templateDecl );
-	public void		templateDeclarationEnd( Object templateDecl );	
+	public void		templateDeclarationEnd( Object templateDecl, Token lastToken );	
 	
 	public Object	templateParameterListBegin( Object declaration );
 	public void		templateParameterListEnd( Object parameterList );
Index: parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java,v
retrieving revision 1.15
diff -u -r1.15 NullParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	6 Apr 2003 03:06:16 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	10 Apr 2003 17:08:01 -0000
@@ -569,7 +569,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegin(java.lang.Object, boolean)
 	 */
-	public Object templateDeclarationBegin(Object container, boolean exported) {
+	public Object templateDeclarationBegin(Object container, Token exported) {
 		return null;
 	}
 
@@ -582,7 +582,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationEnd(java.lang.Object)
 	 */
-	public void templateDeclarationEnd(Object templateDecl) {
+	public void templateDeclarationEnd(Object templateDecl, Token lastToken) {
 	}
 
 	/* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java,v
retrieving revision 1.25
diff -u -r1.25 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	9 Apr 2003 21:11:59 -0000	1.25
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	10 Apr 2003 17:08:12 -0000
@@ -283,14 +283,16 @@
 	 */
 	protected void templateDeclaration( Object container ) throws Backtrack
 	{
-		boolean export = false; 
+		Token firstToken = null; 
 		if( LT(1) == Token.t_export )
 		{
-			consume( Token.t_export ); 
-			export = true; 
+			firstToken = consume( Token.t_export );
+			consume( Token.t_template ); 
 		}
+		else
+			firstToken = consume( Token.t_template );
+		
 		
-		consume( Token.t_template );
 		if( LT(1) != Token.tLT )
 		{
 			// explicit-instantiation
@@ -318,11 +320,11 @@
 		Object templateDeclaration = null;
 		try
 		{
-			try{ templateDeclaration = callback.templateDeclarationBegin( container, export ); } catch ( Exception e ) {}
+			try{ templateDeclaration = callback.templateDeclarationBegin( container, firstToken ); } catch ( Exception e ) {}
 			templateParameterList( templateDeclaration );
 			consume( Token.tGT );
 			declaration( templateDeclaration ); 
-			try{ callback.templateDeclarationEnd( templateDeclaration ); } catch( Exception e ) {}
+			try{ callback.templateDeclarationEnd( templateDeclaration, lastToken ); } catch( Exception e ) {}
 			
 		} catch( Backtrack bt )
 		{

Back to the top