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 */ } } }
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; }