SwfdecAsFrame

SwfdecAsFrame — information about currently executing frames

Synopsis


#include <swfdec/swfdec.h>


                    SwfdecAsFrame;
SwfdecAsFrame*      swfdec_as_frame_get_next            (SwfdecAsFrame *frame);
const char*         swfdec_as_frame_get_function_name   (SwfdecAsFrame *frame);
SwfdecScript*       swfdec_as_frame_get_script          (SwfdecAsFrame *frame);
SwfdecAsObject*     swfdec_as_frame_get_this            (SwfdecAsFrame *frame);
                    SwfdecAsStackIterator;
SwfdecAsValue*      swfdec_as_stack_iterator_init       (SwfdecAsStackIterator *iter,
                                                         SwfdecAsFrame *frame);
SwfdecAsValue*      swfdec_as_stack_iterator_init_arguments
                                                        (SwfdecAsStackIterator *iter,
                                                         SwfdecAsFrame *frame);
SwfdecAsValue*      swfdec_as_stack_iterator_next       (SwfdecAsStackIterator *iter);

Object Hierarchy


  GObject
   +----SwfdecAsObject
         +----SwfdecAsFrame

Description

This section is only interesting for people that want to look into debugging. A SwfdecAsFrame describes a currently executing function while it is running. On every new function call, a new frame is created and pushed on top of the frame stack. To get the topmost one, use swfdec_as_context_get_frame(). After that you can inspect various properties of the frame, like the current stack.

a SwfdecAsFrame is a SwfdecAsObject, so it is possible to set variables on it. These are local variables inside the executing function. So you can use functions such as swfdec_as_object_get_variable() to inspect them.

Details

SwfdecAsFrame

typedef struct _SwfdecAsFrame SwfdecAsFrame;

the object used to represent an executing function.


swfdec_as_frame_get_next ()

SwfdecAsFrame*      swfdec_as_frame_get_next            (SwfdecAsFrame *frame);

Gets the next frame in the frame stack. The next frame is the frame that will be executed after this frame.

frame : a SwfdecAsFrame
Returns : the next SwfdecAsFrame or NULL if this is the bottommost frame.

swfdec_as_frame_get_function_name ()

const char*         swfdec_as_frame_get_function_name   (SwfdecAsFrame *frame);

Gets the name of the function that is currently executing. This function is intended for debugging purposes.

frame : a SwfdecAsFrame
Returns : a string. Do not free.

swfdec_as_frame_get_script ()

SwfdecScript*       swfdec_as_frame_get_script          (SwfdecAsFrame *frame);

Gets the script associated with the given frame. If the frame references a native function, there will be no script and this function returns NULL.

frame : a SwfdecAsFrame
Returns : The script executed by this frame or NULL

swfdec_as_frame_get_this ()

SwfdecAsObject*     swfdec_as_frame_get_this            (SwfdecAsFrame *frame);

Gets the this object of the given frame. If the frame has no this object, NULL is returned.

frame : a SwfdecAsFrame
Returns : The this object of the frame or NULL if none.

SwfdecAsStackIterator

typedef struct {
} SwfdecAsStackIterator;

This is a struct used to walk the stack of a frame. It is supposed to be allocated on the stack. All of its members are private.


swfdec_as_stack_iterator_init ()

SwfdecAsValue*      swfdec_as_stack_iterator_init       (SwfdecAsStackIterator *iter,
                                                         SwfdecAsFrame *frame);

Initializes iter to walk the stack of frame. The first value on the stack will alread be returned. This makes it possible to write a simple loop to print the whole stack:

for (value = swfdec_as_stack_iterator_init (&iter, frame); value != NULL;
    value = swfdec_as_stack_iterator_next (&iter)) {
  char *s = swfdec_as_value_to_debug (value);
  g_print ("%s\n", s);
  g_free (s);
}

iter : a SwfdecStackIterator
frame : the frame to initialize from
Returns : the topmost value on the stack of frame or NULL if none

swfdec_as_stack_iterator_init_arguments ()

SwfdecAsValue*      swfdec_as_stack_iterator_init_arguments
                                                        (SwfdecAsStackIterator *iter,
                                                         SwfdecAsFrame *frame);

Initializes a stack iterator to walk the arguments passed to the given frame. See swfdec_as_stack_iterator_init() about suggested iterator usage.

iter : iterator to be initialized
frame : the frame to initialize from
Returns : The value of the first argument

swfdec_as_stack_iterator_next ()

SwfdecAsValue*      swfdec_as_stack_iterator_next       (SwfdecAsStackIterator *iter);

Gets the next value on the stack.

iter : a SwfdecAsStackIterator
Returns : The next value on the stack or NULL if no more values are on the stack