Method: RCSimCinterface.rcsim_add_print_args

Defined in:
ext/hruby_sim/hruby_rcsim_build.c

.rcsim_add_print_args(printV, argVs) ⇒ Object

Adds arguments to a C print.


1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
# File 'ext/hruby_sim/hruby_rcsim_build.c', line 1304

VALUE rcsim_add_print_args(VALUE mod, VALUE printV, VALUE argVs) {
    /* Get the C print from the Ruby value. */
    Print print;
    value_to_rcsim(PrintS,printV,print);
    // printf("rcsim_add_print_args with print=%p\n",print);
    /* Prepare the size for the arguments. */
    long num = RARRAY_LEN(argVs);
    long old_num = print->num_args;
    print->num_args += num;
    // printf("first print->args=%p\n",print->args); fflush(stdout);
    print->args = realloc(print->args,
                          sizeof(Expression[print->num_args]));
    // print->args = (Expression*)my_realloc(print->args,
    //         sizeof(Expression[old_num]), sizeof(Expression[print->num_args]));
    // printf("now print->args=%p\n",print->args); fflush(stdout);
    // printf("access test: %p\n",print->args[0]); fflush(stdout);
    /* Get and add the arguments from the Ruby value. */
    for(long i=0; i< num; ++i) {
        Expression arg;
        // show_access(print->args,old_num+i);
        value_to_rcsim(ExpressionS,rb_ary_entry(argVs,i),arg);
        print->args[old_num + i] = arg;
    }
    return printV;
}