Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2011 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.jdt.internal.codeassist.select;
 
 import java.util.List;
 
Parser specialized for decoding javadoc comments which includes code selection.
 
 public class SelectionJavadocParser extends JavadocParser {
 
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=171019
 	public boolean inheritDocTagSelected;
 
 	public SelectionJavadocParser(SelectionParser sourceParser) {
 		super(sourceParser);
 		this. = false;
 		this. = false;
 		this. = false;
 	}
 
 	/*
 	 * Do not parse comment if selection is not included.
 	 */
 	public boolean checkDeprecation(int commentPtr) {
 		this. = this...[commentPtr];
 		this. = this...[commentPtr];
 		if (this. <= this. && this. <= this.) {
 				..println("SELECTION in Javadoc:"); //$NON-NLS-1$
 			}
 			super.checkDeprecation(commentPtr);
 		} else {
 			this. = null;
 		}
 		return false;
 	}
 
 	/*
 	 * Replace stored Javadoc node with specific selection one.
 	 */
 	protected boolean commentParse() {
 		this. = new SelectionJavadoc(this.this.);
 		return super.commentParse();
 	}
 
 	/*
 	 * Create argument expression and store it if it includes selection.
 	 */
 	protected Object createArgumentReference(char[] nameint dimboolean isVarargsObject typeReflong[] dimPositionslong argNamePosthrows InvalidInputException {
 		// Create argument as we may need it after
 		Expression expression = (Expressionsuper.createArgumentReference(namedimisVarargstypeRefdimPositionsargNamePos);
 		// See if selection is in argument
 		int start = ((TypeReference)typeRef).;
 		int end = ((TypeReference)typeRef).;
 		if (start <= this. && this. <= end) {
 			this. = expression;
 			this. = true;
 				..println("	selected argument="+this.); //$NON-NLS-1$
 			}
 		}
 		return expression;
 	}
 
 	/*
 	 * Verify if field identifier positions include selection.
 	 * If so, create field reference, store it and abort comment parse.
 	 * Otherwise return null as we do not need this reference.
 	 */
 	protected Object createFieldReference(Object receiverthrows InvalidInputException {
 		int start = (int) (this.[0] >>> 32);
 		int end = (intthis.[0];
 		if (start <= this. && this. <= end) {
 			this. = (ASTNodesuper.createFieldReference(receiver);
 			this. = true;
 				..println("	selected field="+this.); //$NON-NLS-1$
 			}
 		}
		return null;
	}
	/*
	 * Verify if method identifier positions include selection.
	 * If so, create field reference, store it and abort comment parse.
	 * Otherwise return null as we do not need this reference.
	 */
	protected Object createMethodReference(Object receiverList argumentsthrows InvalidInputException {
		int memberPtr = this.[0] - 1;	// may be > 0 for inner class constructor reference
		int start = (int) (this.[memberPtr] >>> 32);
		int end = (intthis.[memberPtr];
		if (start <= this. && this. <= end) {
			this. = (ASTNodesuper.createMethodReference(receiverarguments);
			this. = true;
				..println("	selected method="+this.); //$NON-NLS-1$
			}
		}
		return null;
	}
	/*
	 * Create type reference and verify if it includes selection.
	 * If so, store it and abort comment parse.
	 * Otherwise return null as we do not need this reference.
	 */
	protected Object createTypeReference(int primitiveToken) {
		// Need to create type ref in case it was needed by members
		TypeReference typeRef = (TypeReferencesuper.createTypeReference(primitiveToken);
		// See if node is concerned by selection
		if (typeRef.sourceStart <= this. && this. <= typeRef.sourceEnd) {
			// See if selection is in one of tokens of qualification
			if (typeRef instanceof JavadocQualifiedTypeReference) {
				int size = qualifiedTypeRef.tokens.length - 1;
				for (int i=0; i<sizei++) {
					int start = (int) (qualifiedTypeRef.sourcePositions[i] >>> 32);
					int end = (intqualifiedTypeRef.sourcePositions[i];
					if (start <= this. && this. <= end) {
						int pos = i + 1;
						char[][] tokens = new char[pos][];
						int ptr = this. - size;
						System.arraycopy(this.ptrtokens, 0, pos);
						long[] positions = new long[pos];
						System.arraycopy(this.ptrpositions, 0, pos);
						this. = new JavadocQualifiedTypeReference(tokenspositionsthis.this.);
						this. = true// we got selected node => cancel parse
							..println("	selected partial qualified type="+this.); //$NON-NLS-1$
						}
						return typeRef;
					}
				}
				// Selection is in last token => we'll store type ref as this
			}
			// Store type ref as selected node
			this. = typeRef;
			this. = true// we got selected node => cancel parse
				..println("	selected type="+this.); //$NON-NLS-1$
			}
		}
		return typeRef;
	}
	/*
	 * Push param reference and verify if it includes selection.
	 * If so, store it and abort comment parse.
	 */
	protected boolean pushParamName(boolean isTypeParam) {
		if (super.pushParamName(isTypeParam)) {
			Expression expression = (Expressionthis.[this.--];
			// See if expression is concerned by selection
			if (expression.sourceStart <= this. && this. <= expression.sourceEnd) {
				this. = expression;
				this. = true// we got selected node => cancel parse
					..println("	selected param="+this.); //$NON-NLS-1$
				}
			}
		}
		return false;
	}
	/*
	 * Store selected node into doc comment.
	 */
	protected void updateDocComment() {
		if (this. instanceof Expression) {
else if (this.) {
		}
	}
	/*
	 * Sets a flag to denote that selection has taken place on an inheritDoc tag
	 */
	protected void parseInheritDocTag() {
		if (this. == this. && this. == this.)
			this. = true;
	}
New to GrepCode? Check out our FAQ X