Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[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#templateDeclarationBegi
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#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/Templ
ateDeclaration.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 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/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 16:02:23 -0000
@@ -680,7 +680,7 @@
 	/* (non-Javadoc)
 	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegi
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#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 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/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 16:02:28 -0000
@@ -569,7 +569,7 @@
 	/* (non-Javadoc)
 	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#templateDeclarationBegi
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#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
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 )
 		{


Back to the top