mb_push_value

Previous  Next

 

status_t mb_push_value( mb_interpreter_t* s, void** l, mb_value_t val )

 


 

Pushes a function return value of type mb_value_t to the interpreter.  Please see Structures for more information on this type.

 

Example

 

/////////////////////////////////////////////////////////////////////////////

// number = ABS( number )

//

int _std_abs( mb_interpreter_t* s, void** l )

  {

  /* Get the absolute value of a number */

  int result = MB_FUNC_OK;

 

  mb_value_t arg;

 

  mb_assert( s && l );

 

  mb_check( mb_attempt_open_bracket( s, l ) );

  mb_check( mb_pop_value( s, l, &arg ) );

  mb_check( mb_attempt_close_bracket( s, l ) );

 

  switch ( arg.type )

     {

     case MB_DT_INT:

        arg.value.integer = (int_t)abs(arg.value.integer);

        break;

     case MB_DT_REAL:

        arg.value.float_point = (real_t)fabs(arg.value.float_point);

        break;

     default:

        break;

     }

  endswitch

 

  mb_check( mb_push_value( s, l, arg ) );

 

  return result;

  }

endfunc