step_over (Debugger::Context)

    /*
     *   call-seq:
     *      context.step_over(steps, frame = nil, force = false)
     *
     *   Steps over a +steps+ number of times.
     *   Make step over operation on +frame+, by default the current frame.
     *   +force+ parameter (if true) ensures that the cursor moves from the current line.
     */
    static VALUE
    context_step_over(int argc, VALUE *argv, VALUE self)
    {
        VALUE lines, frame, force;
        debug_context_t *debug_context;

        debug_check_started();
        Data_Get_Struct(self, debug_context_t, debug_context);
        if(debug_context->stack_size == 0)
            rb_raise(rb_eRuntimeError, "No frames collected.");

        rb_scan_args(argc, argv, "12", &lines, &frame, &force);
        debug_context->stop_line = FIX2INT(lines);
        CTX_FL_UNSET(debug_context, CTX_FL_STEPPED);
        if(frame == Qnil)
        {
            debug_context->dest_frame = debug_context->stack_size;
        }
        else
        {
            if(FIX2INT(frame) < 0 && FIX2INT(frame) >= debug_context->stack_size)
                rb_raise(rb_eRuntimeError, "Destination frame is out of range.");
            debug_context->dest_frame = debug_context->stack_size - FIX2INT(frame);
        }
        if(RTEST(force))
            CTX_FL_SET(debug_context, CTX_FL_FORCE_MOVE);
        else
            CTX_FL_UNSET(debug_context, CTX_FL_FORCE_MOVE);

        return Qnil;
    }