1 //////////////////////////////////////////////////////////////////////////////// 2 // checkstyle: Checks Java source code for adherence to a set of rules. 3 // Copyright (C) 2001-2019 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 20 package com.puppycrawl.tools.checkstyle.checks.indentation; 21 22 import java.util.SortedMap; 23 import java.util.TreeMap; 24 25 /** 26 * Represents a set of lines. 27 * 28 */ 29 public class LineSet { 30 31 /** 32 * Maps line numbers to their start column. 33 */ 34 private final SortedMap<Integer, Integer> lines = new TreeMap<>(); 35 36 /** 37 * Get the starting column for a given line number. 38 * 39 * @param lineNum the specified line number 40 * 41 * @return the starting column for the given line number 42 */ 43 public Integer getStartColumn(Integer lineNum) { 44 return lines.get(lineNum); 45 } 46 47 /** 48 * Get the starting column for the first line. 49 * 50 * @return the starting column for the first line. 51 */ 52 public int firstLineCol() { 53 final Integer firstLineKey = lines.firstKey(); 54 return lines.get(firstLineKey); 55 } 56 57 /** 58 * Get the line number of the first line. 59 * 60 * @return the line number of the first line 61 */ 62 public int firstLine() { 63 return lines.firstKey(); 64 } 65 66 /** 67 * Get the line number of the last line. 68 * 69 * @return the line number of the last line 70 */ 71 public int lastLine() { 72 return lines.lastKey(); 73 } 74 75 /** 76 * Add a line to this set of lines. 77 * 78 * @param lineNum the line to add 79 * @param col the starting column of the new line 80 */ 81 public void addLineAndCol(int lineNum, int col) { 82 lines.put(lineNum, col); 83 } 84 85 /** 86 * Determines if this set of lines is empty. 87 * 88 * @return true if it is empty, false otherwise 89 */ 90 public boolean isEmpty() { 91 return lines.isEmpty(); 92 } 93 94 @Override 95 public String toString() { 96 return "LineSet[firstLine=" + lines.firstKey() + ", lastLine=" + lines.lastKey() + "]"; 97 } 98 99 }