Esempio n. 1
0
void RexxInstructionTrace::execute(
    RexxActivation      *context,      /* current activation context        */
    RexxExpressionStack *stack)        /* evaluation stack                  */
/******************************************************************************/
/* Function:  Execute a REXX TRACE instruction                                */
/******************************************************************************/
{
    RexxObject  *result;                 /* expression result                 */
    RexxString  *value;                  /* string version of expression      */

    context->traceInstruction(this);     /* trace if necessary                */
    // is this a debug skip request (the setting value is zero in that case)
    if ((traceSetting&TRACE_SETTING_MASK) == 0)
    {
                                         /* turn on the skip mode             */
        context->debugSkip(this->debugskip, (traceSetting&DEBUG_NOTRACE) != 0);
    }
    /* non-dynamic form?                 */
    else if (this->expression == OREF_NULL)
    {
        if (!context->inDebug())           /* not in debug mode?                */
        {
                                           /* just change the setting           */
            context->setTrace(traceSetting, traceFlags);
        }
        else
        {
            context->pauseInstruction();     /* do debug pause if necessary       */
        }
    }
    else                               /* need to evaluate an expression    */
    {
        /* get the expression value          */
        result = this->expression->evaluate(context, stack);
        ProtectedObject p_result(result);
        value = REQUEST_STRING(result);    /* force to string form              */
        ProtectedObject p_value(value);
        context->traceResult(result);      /* trace if necessary                */
        if (!context->inDebug())           /* not in debug mode?                */
        {
                                           /* now change the setting            */
            context->setTrace(value);
        }
        else
        {
            context->pauseInstruction();     /* do debug pause if necessary       */
        }
    }
}
Esempio n. 2
0
 inline AutoConverter Demo()
 {
     std::tr1::shared_ptr<boost::any> p_result
         (new boost::any(std::tr1::make_tuple(1, 2, 3, 4)));
     return p_result;
 }