1 //////////////////////////////////////////////////////////////////////////////// 2 // checkstyle: Checks Java source code for adherence to a set of rules. 3 // Copyright (C) 2001-2015 the original author or authors. 4 // 5 // This library is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU Lesser General Public 7 // License as published by the Free Software Foundation; either 8 // version 2.1 of the License, or (at your option) any later version. 9 // 10 // This library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public 16 // License along with this library; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 //////////////////////////////////////////////////////////////////////////////// 19 package com.puppycrawl.tools.checkstyle.api; 20 21 /** 22 * Representation of the comment block. 23 * 24 * @author o_sukhodolsky 25 */ 26 public class Comment implements TextBlock 27 { 28 /** text of the comment. */ 29 private final String[] text; 30 31 /** number of first line of the comment. */ 32 private final int firstLine; 33 34 /** number of last line of the comment. */ 35 private final int lastLine; 36 37 /** number of first column of the comment. */ 38 private final int firstCol; 39 40 /** number of last column of the comment. */ 41 private final int lastCol; 42 43 /** 44 * Creates new instance. 45 * @param text the lines that make up the comment. 46 * @param firstCol number of the first column of the comment. 47 * @param lastLine number of the last line of the comment. 48 * @param lastCol number of the last column of the comment. 49 */ 50 public Comment(final String[] text, final int firstCol, 51 final int lastLine, final int lastCol) 52 { 53 this.text = new String[text.length]; 54 System.arraycopy(text, 0, this.text, 0, this.text.length); 55 firstLine = lastLine - this.text.length + 1; 56 this.lastLine = lastLine; 57 this.firstCol = firstCol; 58 this.lastCol = lastCol; 59 } 60 61 /** {@inheritDoc} */ 62 @Override 63 public final String[] getText() 64 { 65 return text.clone(); 66 } 67 68 /** {@inheritDoc} */ 69 @Override 70 public final int getStartLineNo() 71 { 72 return firstLine; 73 } 74 75 /** {@inheritDoc} */ 76 @Override 77 public final int getEndLineNo() 78 { 79 return lastLine; 80 } 81 82 /** {@inheritDoc} */ 83 @Override 84 public int getStartColNo() 85 { 86 return firstCol; 87 } 88 89 /** {@inheritDoc} */ 90 @Override 91 public int getEndColNo() 92 { 93 return lastCol; 94 } 95 96 /** {@inheritDoc} */ 97 @Override 98 public boolean intersects(int startLineNo, int startColNo, 99 int endLineNo, int endColNo) 100 { 101 // compute a single number for start and end 102 // to simplify conditional logic 103 final long multiplier = Integer.MAX_VALUE; 104 final long thisStart = firstLine * multiplier + firstCol; 105 final long thisEnd = lastLine * multiplier + lastCol; 106 final long inStart = startLineNo * multiplier + startColNo; 107 final long inEnd = endLineNo * multiplier + endColNo; 108 109 return !(thisEnd < inStart || inEnd < thisStart); 110 } 111 112 @Override 113 public String toString() 114 { 115 return "Comment[" + firstLine + ":" + firstCol + "-" 116 + lastLine + ":" + lastCol + "]"; 117 } 118 }