static void DumpLocals( void ) { address addr; int row; int depth; int inherit; var_node *v; if( !_IsOn( SW_TASK_RUNNING ) ) { VarErrState(); VarInfoRefresh( VAR_LOCALS, &Locals, &addr, NULL ); VarOkToCache( &Locals, TRUE ); } for( row = 0;; ++row ) { v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_GADGET, &depth, &inherit ); if( v == NULL ) break; v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_NAME, &depth, &inherit ); v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_VALUE, &depth, &inherit ); switch( v->gadget ) { case VARGADGET_NONE: printf( " " ); break; case VARGADGET_OPEN: printf( "+ " ); break; case VARGADGET_CLOSED: printf( "- " ); break; case VARGADGET_POINTS: printf( "->" ); break; case VARGADGET_UNPOINTS: printf( "<-" ); break; } VarBuildName( &Locals, v, TRUE ); printf( " %-20s %s\n", TxtBuff, v->value ); } if( !_IsOn( SW_TASK_RUNNING ) ) { VarOkToCache( &Locals, FALSE ); VarOldErrState(); } }
static void DumpLocals( void ) { #if 0 address addr; int row; int depth; var_node *v; if( _IsOff( SW_TASK_RUNNING ) ) { VarErrState(); VarInfoRefresh( VAR_LOCALS, &Locals, &addr, NULL ); VarOkToCache( &Locals, true ); } for( row = 0; (v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_GADGET, &depth )) != NULL; ++row ) { v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_NAME, &depth ); v = VarGetDisplayPiece( &Locals, row, VAR_PIECE_VALUE, &depth ); switch( v->gadget ) { case VARGADGET_NONE: printf( " " ); break; case VARGADGET_OPEN: printf( "+ " ); break; case VARGADGET_CLOSE: printf( "- " ); break; case VARGADGET_POINTS: printf( "->" ); break; case VARGADGET_UNPOINTS: printf( "<-" ); break; } VarBuildName( v, true ); printf( " %-20s %s\n", TxtBuff, v->value ); } if( _IsOff( SW_TASK_RUNNING ) ) { VarOkToCache( &Locals, false ); VarOldErrState(); } #endif }
static void VarModify( a_window *wnd, int row, int piece ) { var_node *v; type_kind class; var_window *var = WndVar( wnd ); bool ok; bool followable; unsigned old; if( row < 0 ) { if( var->vtype == VAR_WATCH || var->vtype == VAR_VARIABLE ) { VarMenuItem( wnd, MENU_VAR_NEW_EXPRESSION, row, piece ); } return; } VarErrState(); VarKillExprSPCache( &var->i ); v = VarFindRow( &var->i, row ); if( v == NULL ) { v = VarFindRowNode( &var->i, row ); if( v == NULL ) return; if( piece != VAR_PIECE_GADGET && piece != VAR_PIECE_NAME ) return; if( v->expand != NULL || v->node_type == NODE_INHERIT ) { VarExpandRow( &var->i, v, row ); WndNewCurrent( wnd, row, VAR_PIECE_NAME ); VarRepaint( wnd ); } return; } followable = VarGetStackClass( &class ); switch( piece ) { case VAR_PIECE_GADGET: case VAR_PIECE_NAME: if( VarExpandable( class ) || followable || v->expand != NULL ) { VarExpandRow( &var->i, v, row ); WndNewCurrent( wnd, row, VAR_PIECE_NAME ); VarRepaint( wnd ); } break; case VAR_PIECE_VALUE: if( !VarExpandable( class ) ) { char *value = DbgAlloc( TXT_LEN ); char *name = DbgAlloc( TXT_LEN ); old = VarNewCurrRadix( v ); ExprValue( ExprSP ); VarBuildName( &var->i, v, FALSE ); StrCopy( TxtBuff, name ); VarPrintText( &var->i, value, PrintValue, TXT_LEN ); VarKillExprSPCache( &var->i ); v = VarFindRow( &var->i, row ); FreezeStack(); ok = DlgAnyExpr( name, value, TXT_LEN ); UnFreezeStack( FALSE ); if( ok ) VarDoAssign( &var->i, v, value ); NewCurrRadix( old ); WndRowDirty( wnd, row ); DbgFree( value ); DbgFree( name ); } break; } VarDoneRow( &var->i ); VarOldErrState(); }