List of usage examples for org.eclipse.jdt.internal.compiler.parser ScannerHelper C_JLS_SPACE
int C_JLS_SPACE
To view the source code for org.eclipse.jdt.internal.compiler.parser ScannerHelper C_JLS_SPACE.
Click Source Link
From source file:org.eclipse.jdt.internal.compiler.parser.Parser.java
License:Open Source License
/** * Look for a specific tag comment leading a given source range (comment located after any statement in astStack) * @param rangeEnd int//from w ww. ja v a 2 s .co m * @return boolean */ public boolean hasLeadingTagComment(char[] commentPrefixTag, int rangeEnd) { int iComment = this.scanner.commentPtr; if (iComment < 0) return false; // no comment available int iStatement = this.astLengthPtr; if (iStatement < 0 || this.astLengthStack[iStatement] <= 1) return false; // no statement available // Fallthrough comment must be located after the previous statement ASTNode lastNode = this.astStack[this.astPtr]; int rangeStart = lastNode.sourceEnd; previousComment: for (; iComment >= 0; iComment--) { int commentStart = this.scanner.commentStarts[iComment]; if (commentStart < 0) commentStart = -commentStart; // line comments have negative start positions // ignore comments before start if (commentStart < rangeStart) return false; // no more comments in range // ignore comments after end if (commentStart > rangeEnd) continue previousComment; // found last comment in range - only check the last comment in range char[] source = this.scanner.source; int charPos = commentStart + 2; // skip // or /* // tag can be leaded by optional spaces for (; charPos < rangeEnd; charPos++) { char c = source[charPos]; if (c >= ScannerHelper.MAX_OBVIOUS || (ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[c] & ScannerHelper.C_JLS_SPACE) == 0) { break; } } for (int iTag = 0, length = commentPrefixTag.length; iTag < length; iTag++, charPos++) { if (charPos >= rangeEnd) return false; // comment is too small to host tag if (source[charPos] != commentPrefixTag[iTag]) return false; } return true; } return false; }