/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package flash.tools.debugger; /** * The Frame object represents a single frame of the actionscript call stack. * Each Frame contains a Location object, which identifies the line of source * for the frame, and a set of variables that are available within the frame. * The set of variables includes a 'this' pointer, arguments passed into * the function and locals available within the scope of the function. * A given frame is only valid when execution has suspended. * @since Version 2 */ public interface Frame { /** * Location object related to this frame. */ public Location getLocation(); /** * 'this' variable for the frame. Will return null * if no 'this' pointer available for the frame. * @throws NoResponseException * @throws NotSuspendedException * @throws NotConnectedException */ public Variable getThis(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException; /** * Arguments that were passed into the function. An empty * array is used to denote that no arguments were passed into * this function scope. * @throws NoResponseException * @throws NotSuspendedException * @throws NotConnectedException */ public Variable[] getArguments(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException; /** * Locals used within this function scope. An empty * array is used to denote no locals are available * within this function scope. * @throws NoResponseException * @throws NotSuspendedException * @throws NotConnectedException */ public Variable[] getLocals(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException; /** * Returns a string which contains the raw signature of * the call. This information can be used for display * purposes in the event the Location object contains * a null SourceFile, which happens when a call is * made into or through a non-debug executable. * The format of the string is one of the following: * <ul> * <li> <code>declaringClass/[[namespace::]function]</code> (for regular functions) </li> * <li> <code>declaringClass$cinit</code> (class constructor for statics) </li> * <li> <code>declaringClass$iinit</code> (class instance ctor)</li> * <li> <code>global$init</code> </li> * </ul> *<p> * where <code>declaringClass</code> is the name of the * class in which the function is declared (even if it * is an anonymous inner function); <code>namespace</code> * is the namespace of the function (the meaning of this * varies depending on whether the function is private, * protected etc.; see <code>Variable.getNamespace()</code> * for more information); and <code>function</code> is * the name of the function, or <code>""</code> if the * function is anonymous. *</p><p> * If the signature is unknown then the value * "" will be returned. Note: this may occur even when * Location contains a non-null SourceFile. * </p><p> * Examples: * <ul> * <li> <code>MyClass/myFunction</code> for a public function </li> * <li> <code>MyClass/MyClass::myFunction</code> for a private function </li> * <li> <code>MyClass/</code> for an anonymous inner function declared * somewhere inside <code>MyClass</code> </li> * <li> <code>""</code> if unknown </li> * </ul> * </p> */ public String getCallSignature(); /** * Returns a list of objects which make up the scope chain of * this frame. * <p> * Some of the entries will be classes; some will be instances * of classes; some will be functions; etc. * <p> * <b>Bug:</b> Currently, this does <em>not</em> include any * scope chain entries which were created via "with var". */ public Variable[] getScopeChain(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException; /** * Returns the worker ID associated to this frame. This will return * Isolate.DEFAULT_ID, that is, the main worker. */ public int getIsolateId(); }