001/******************************************************************************* 002 * Copyright (c) 2016 EclipseSource. 003 * 004 * Permission is hereby granted, free of charge, to any person obtaining a copy 005 * of this software and associated documentation files (the "Software"), to deal 006 * in the Software without restriction, including without limitation the rights 007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 008 * copies of the Software, and to permit persons to whom the Software is 009 * furnished to do so, subject to the following conditions: 010 * 011 * The above copyright notice and this permission notice shall be included in all 012 * copies or substantial portions of the Software. 013 * 014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 017 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 019 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 020 * SOFTWARE. 021 ******************************************************************************/ 022package com.restfb.json; 023 024import java.io.Serializable; 025 026/** 027 * An immutable object that represents a location in the parsed text. 028 */ 029public class Location implements Serializable { 030 031 private static final long serialVersionUID = -1249816104753838044L; 032 033 /** 034 * The absolute character index, starting at 0. 035 */ 036 public final int offset; 037 038 /** 039 * The line number, starting at 1. 040 */ 041 public final int line; 042 043 /** 044 * The column number, starting at 1. 045 */ 046 public final int column; 047 048 Location(int offset, int line, int column) { 049 this.offset = offset; 050 this.column = column; 051 this.line = line; 052 } 053 054 @Override 055 public String toString() { 056 return line + ":" + column; 057 } 058 059 @Override 060 public int hashCode() { 061 return offset; 062 } 063 064 @Override 065 public boolean equals(Object obj) { 066 if (this == obj) { 067 return true; 068 } 069 if (obj == null) { 070 return false; 071 } 072 if (getClass() != obj.getClass()) { 073 return false; 074 } 075 Location other = (Location) obj; 076 return offset == other.offset && column == other.column && line == other.line; 077 } 078 079}