コード例 #1
0
ファイル: cfunc_rubyvm.c プロジェクト: a-bx/mruby-cfunc
void
free_task_arg(struct task_arg* arg)
{
    if(!arg) {
        return;
    }
    switch (arg->tt) {
    case MRB_TT_SYMBOL:
    case MRB_TT_STRING:
        free(arg->value.string.ptr);
        break;

    case MRB_TT_ARRAY:
        {
            for(int i=0; i<arg->value.array.len; i++) {
                free_task_arg(arg->value.array.ptr[i]);
            }
            free(arg->value.array.ptr);
        }
        break;

    default:
        break;
    }
}
コード例 #2
0
void
free_task_arg(mrb_state *mrb, struct task_arg* arg)
{
    if(!arg) {
        return;
    }
    switch (arg->tt) {
    case MRB_TT_SYMBOL:
    case MRB_TT_STRING:
        mrb_free(mrb, arg->value.string.ptr);
        break;

    case MRB_TT_ARRAY:
        {
            int i;
            for(i=0; i<arg->value.array.len; i++) {
                free_task_arg(mrb, arg->value.array.ptr[i]);
            }
            mrb_free(mrb, arg->value.array.ptr);
        }
        break;

    default:
        break;
    }
}
コード例 #3
0
ファイル: cfunc_rubyvm.c プロジェクト: a-bx/mruby-cfunc
void
free_queue_task(struct queue_task* task)
{
    task->refcount--;
    if(task->refcount < 1) {
        for(int i=0; i<task->args_len; ++i) {
            free_task_arg(task->args[i]);
        }
        free(task->args);
        free(task->result);
        free(task->name);
        free(task);
    }
}
コード例 #4
0
void
free_queue_task(mrb_state *mrb, struct queue_task* task)
{
    task->refcount--;
    if(task->refcount < 1) {
        int i;
        for(i=0; i<task->args_len; ++i) {
            free_task_arg(mrb, task->args[i]);
        }
        mrb_free(mrb, task->args);
        mrb_free(mrb, task->result);
        mrb_free(mrb, task->name);
        mrb_free(mrb, task);
    }
}