Method: RCSimCinterface.rcsim_add_systemT_outputs

Defined in:
ext/hruby_sim/hruby_rcsim_build.c

.rcsim_add_systemT_outputs(systemTV, sigVs) ⇒ Object

Adds outputs to a C systemT.



949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
# File 'ext/hruby_sim/hruby_rcsim_build.c', line 949

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