/******************************************************************************
* Copyright (C) 2012 Jonah Graham and others
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Jonah Graham <jonah@kichwacoders.com> - initial API and implementation
* Fabio Zadrozny <fabiofz@gmail.com> - ongoing maintenance
******************************************************************************/
package org.python.pydev.debug.model;
import org.eclipse.debug.core.DebugException;
/**
* This class represents a stack frame for the "virtual" frame of the
* interactive console. When no code is running, there is no real frame
* that this represents, but rather it represents the set of Globals
* that are used by execLine() to run the user's typed code in.
* <p>
* This frame lives as the one frame in {@link PyThreadConsole}.
*/
public class PyStackFrameConsole extends PyStackFrame {
public static final String VIRTUAL_FRAME_ID = "1";
public PyStackFrameConsole(PyThread in_thread, AbstractDebugTarget target) {
super(in_thread, VIRTUAL_FRAME_ID, "frame_main", null, -1, target);
}
@Override
public boolean canResume() {
return false;
}
@Override
public boolean canStepInto() {
return false;
}
@Override
public boolean canStepOver() {
return false;
}
@Override
public boolean canStepReturn() {
return false;
}
@Override
public boolean canSuspend() {
return false;
}
@Override
public String getName() throws DebugException {
// This matches hard coded __main__ in pydevconsole.py
return "__main__ [<console>:0]";
}
@Override
public int hashCode() {
return getThread().hashCode();
}
@Override
public boolean equals(Object obj) {
// All PyStackFrame Consoles look the same, so they are only equal if
// they are identical
return this == obj;
}
}