## SwfdecAsFrame

SwfdecAsFrame — information about currently executing frames

## Synopsis

    #include <swfdec/swfdec.h>

                        SwfdecAsFrame;
    SwfdecAsFrame*      swfdec_as_frame_get_next            (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);

## 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_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