/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package abs.backend.java.observing;
import java.util.List;
/**
* A view to task stack.
* A task stack represents the stack of a task at runtime.
* The stack consists of multiple stack frames.
* A stack frame represents a single method invocation.
* The stack frames can be obtained by using the getFrames() method.
* It is possible that a task has no stack frame at all if it has not been started yet.
*
* @author Jan Schäfer
*
*/
public interface TaskStackView {
/**
* Returns the task to which this stack belongs to
* @return the task to which this stack belongs to
*/
public TaskView getTask();
/**
* Returns the list of stack frames of this task stack.
* The last element of the list represents the top of the stack
* @return the list of stack frames of this task stack.
*/
public List<? extends TaskStackFrameView> getFrames();
/**
* Returns the current active frame of the task stack.
* I.e. the top of the stack.
* Returns null if there is no stack frame
* @return the current active frame of the task stack, or null if there is no frame
*/
public TaskStackFrameView getCurrentFrame();
/**
* Whether this task has any frames
* @return whether this task has any frames
*/
boolean hasFrames();
}