/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Processing project - http://processing.org
Copyright (c) 2012-16 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package processing.app;
import java.util.Optional;
/**
* Structure describing a problem encountered in sketch compilation.
*/
public interface Problem {
/**
* Get if the problem is an error that prevented compilation.
*
* @return True if an error such that the sketch did not compile and false
* otherwise.
*/
public boolean isError();
/**
* Get if the problem is an warning that did not prevent compilation.
*
* @return True if a warning and the sketch compiled and false otherwise.
*/
public boolean isWarning();
/**
* Get which tab (sketch file) the problem was encountered.
*
* @return The index of the tab in which the problem was encountered.
*/
public int getTabIndex();
/**
* Get at which line the problem was encountered.
*
* @return Zero-indexed line number within the tab at getTabIndex in which
* this problem was encountered. Note that this is not the line in the
* generated Java file.
*/
public int getLineNumber();
/**
* Get a human-reabable description of the problem encountered.
*
* @return String describing the error or warning encountered.
*/
public String getMessage();
/**
* Get the exact character on which this problem starts in code line relative.
*
* @return Number of characters past the start of the line if known where the
* code associated with the Problem starts.
*/
public int getStartOffset();
/**
* Get the exact character on which this problem ends in code line relative.
*
* @return Number of characters past the start of the line if known where the
* code associated with the Problem ends. If -1, should use the whole line.
*/
public int getStopOffset();
}