Changeset 439 for EcnlProtoTool/trunk/prototool/src/cmdprint.c
- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/prototool/src/cmdprint.c
r321 r439 4 4 */ 5 5 6 #include <stdlib.h> 7 6 #include <string.h> 8 7 #include "mrdb.h" 9 #include "mruby/value.h"10 #include "mruby/class.h"11 #include "mruby/compile.h"12 #include "mruby/error.h"13 #include "mruby/numeric.h"14 #include "mruby/string.h"8 #include <mruby/value.h> 9 #include <mruby/class.h> 10 #include <mruby/compile.h> 11 #include <mruby/error.h> 12 #include <mruby/numeric.h> 13 #include <mruby/string.h> 15 14 #include "apiprint.h" 16 15 … … 18 17 dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb) 19 18 { 20 mrb_value expr; 21 mrb_value result; 22 mrb_value s; 23 uint8_t wcnt; 24 int ai; 19 mrb_value expr; 20 mrb_value result; 21 uint8_t wcnt; 22 int ai; 25 23 26 27 28 29 24 if (mrdb->wcnt <= 1) { 25 puts("Parameter not specified."); 26 return DBGST_PROMPT; 27 } 30 28 31 29 ai = mrb_gc_arena_save(mrb); 32 30 33 34 35 for (wcnt = 1; wcnt <mrdb->wcnt; wcnt++) {36 37 38 31 /* eval expr */ 32 expr = mrb_str_new_cstr(mrb, NULL); 33 for (wcnt=1; wcnt<mrdb->wcnt; wcnt++) { 34 expr = mrb_str_cat_lit(mrb, expr, " "); 35 expr = mrb_str_cat_cstr(mrb, expr, mrdb->words[wcnt]); 36 } 39 37 40 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL);38 result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0); 41 39 42 /* $print_no = result */ 43 s = mrb_str_cat_lit(mrb, result, "\0"); 44 printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); 40 /* $print_no = result */ 41 printf("$%lu = ", (unsigned long)mrdb->print_no++); 42 fwrite(RSTRING_PTR(result), RSTRING_LEN(result), 1, stdout); 43 putc('\n', stdout); 45 44 46 47 48 45 if (mrdb->print_no == 0) { 46 mrdb->print_no = 1; 47 } 49 48 50 49 mrb_gc_arena_restore(mrb, ai); 51 50 52 51 return DBGST_PROMPT; 53 52 } 54 53 … … 56 55 dbgcmd_eval(mrb_state *mrb, mrdb_state *mrdb) 57 56 { 58 57 return dbgcmd_print(mrb, mrdb); 59 58 } 59 60 dbgcmd_state 61 dbgcmd_info_local(mrb_state *mrb, mrdb_state *mrdb) 62 { 63 mrb_value result; 64 mrb_value s; 65 int ai; 66 67 ai = mrb_gc_arena_save(mrb); 68 69 result = mrb_debug_eval(mrb, mrdb->dbg, "local_variables", 0, NULL, 1); 70 71 s = mrb_str_cat_lit(mrb, result, "\0"); 72 printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); 73 74 if (mrdb->print_no == 0) { 75 mrdb->print_no = 1; 76 } 77 78 mrb_gc_arena_restore(mrb, ai); 79 80 return DBGST_PROMPT; 81 }
Note:
See TracChangeset
for help on using the changeset viewer.