Method: RCSimCinterface.rcsim_add_block_inners

Defined in:
ext/hruby_sim/hruby_rcsim_build.c

.rcsim_add_block_inners(blockV, sigVs) ⇒ Object

Adds inners to a C block.



1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
# File 'ext/hruby_sim/hruby_rcsim_build.c', line 1405

VALUE rcsim_add_block_inners(VALUE mod, VALUE blockV, VALUE sigVs) {
    /* Get the C block from the Ruby value. */
    Block block;
    value_to_rcsim(BlockS,blockV,block);
    // printf("rcsim_add_block_inners with block=%p\n",block);
    /* Prepare the size for the inners. */
    long num = RARRAY_LEN(sigVs);
    long old_num = block->num_inners;
    block->num_inners += num;
    // printf("first block->inners=%p\n",block->inners); fflush(stdout);
    block->inners = realloc(block->inners,
            sizeof(SignalI[block->num_inners]));
    // block->inners = (SignalI*)my_realloc(block->inners,
    //         sizeof(SignalI[old_num]), sizeof(SignalI[block->num_inners]));
    // printf("now block->inners=%p\n",block->inners); fflush(stdout);
    // printf("access test: %p\n",block->inners[0]); fflush(stdout);
    /* Get and add the signals from the Ruby value. */
    for(long i=0; i< num; ++i) {
        SignalI sig;
        // show_access(block->inners,old_num+i);
        value_to_rcsim(SignalIS,rb_ary_entry(sigVs,i),sig);
        block->inners[old_num + i] = sig;
    }
    return blockV;
}