package gdsc.smlm.results.filter;
/*-----------------------------------------------------------------------------
* GDSC SMLM Software
*
* Copyright (C) 2016 Alex Herbert
* Genome Damage and Stability Centre
* University of Sussex, UK
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*---------------------------------------------------------------------------*/
/**
* Specifies the result of fitting a frame using different fitting methods.
* <p>
* The multi-path results can be evaluated by the MultiPathFilter to determine which result from the different paths
* should be accepted.
*/
public interface IMultiPathFitResults
{
/**
* @return The frame containing the results
*/
int getFrame();
/**
* Get the number of results. The {@link #getResult(int)} method should support being called with any index up to
* the number of results (exclusive).
*
* @return The number of results
*/
int getNumberOfResults();
/**
* Gets the result.
*
* @param index
* the index
* @return the result
*/
MultiPathFitResult getResult(int index);
/**
* Called when the results that would be returned by {@link #getResult(int)} are no longer required
*
* @param index the index
*/
void complete(int index);
/**
* The total number of candidates. This may be greater than the size of the {@link #getNumberOfResults()} if
* this is a subset of the results, i.e. has been prefiltered.
*
* @return the total candidates
*/
int getTotalCandidates();
// Possible support for iteration
// /**
// * Begin. Called before a pass through the results using {@link #getResult(int)}.
// *
// * @return true, if a pass through the results is possible
// */
// boolean begin();
//
// /**
// * Called after a pass through the results. Returns a boolean indicating a repeat is possible.
// *
// * @return true, if another pass through the results is possible
// */
// boolean end();
}