/*
* Copyright (C) 2023 Manuel Bentele (bentele@informatik.uni-freiburg.de)
* Copyright (C) 2023 University of Freiburg
*
* This file is part of the ULTIMATE WitnessParser plug-in.
*
* The ULTIMATE WitnessParser plug-in is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The ULTIMATE WitnessParser plug-in is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the ULTIMATE WitnessParser plug-in. If not, see .
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify the ULTIMATE WitnessParser plug-in, or any covered work, by linking
* or combining it with Eclipse RCP (or a modified version of Eclipse RCP),
* containing parts covered by the terms of the Eclipse Public License, the
* licensors of the ULTIMATE WitnessParser plug-in grant you additional permission
* to convey the resulting work.
*/
package de.uni_freiburg.informatik.ultimate.witnessparser.yaml;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author Manuel Bentele (bentele@informatik.uni-freiburg.de)
*/
public class Location {
private final String mFileName;
private final String mFileHash;
private final Integer mLine;
private final Integer mColumn;
private final String mFunction;
public Location(final String fileName, final String fileHash, final Integer line, final Integer column,
final String function) {
mFileName = fileName;
mFileHash = fileHash;
mLine = line;
mColumn = column;
mFunction = function;
}
public String getFileName() {
return mFileName;
}
public String getFileHash() {
return mFileHash;
}
public Integer getLine() {
return mLine;
}
public Integer getColumn() {
return mColumn;
}
public String getFunction() {
return mFunction;
}
@Override
public String toString() {
return "(" + mFileName + ", L" + mLine + "-" + mColumn + ")";
}
@Override
public int hashCode() {
return Objects.hash(mColumn, mFileHash, mFileName, mFunction, mLine);
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
final Location other = (Location) obj;
return mColumn == other.mColumn && Objects.equals(mFileHash, other.mFileHash)
&& Objects.equals(mFileName, other.mFileName) && Objects.equals(mFunction, other.mFunction)
&& mLine == other.mLine;
}
public Map toMap() {
final LinkedHashMap result = new LinkedHashMap<>();
result.put("file_name", mFileName);
result.put("file_hash", mFileHash);
result.put("line", mLine);
if (mColumn != null) {
result.put("column", mColumn);
}
if (mFunction != null) {
result.put("function", mFunction);
}
return result;
}
}