Ejemplo n.º 1
0
static void
check_range_enumerator(sl_vm_t* vm, sl_range_enumerator_t* range_enum)
{
    if(sl_responds_to2(vm, range_enum->current, vm->id.succ)) {
        if(sl_responds_to2(vm, range_enum->current, range_enum->method)) {
            return;
        }
    }
    sl_throw_message2(vm, vm->lib.TypeError, "Uniterable type in range");
}
Ejemplo n.º 2
0
Archivo: slash.c Proyecto: Hmaal/slash
static void
output(sl_vm_t* sub_vm, char* buff, size_t len)
{
    slash_t* sl = sub_vm->data;
    sl_vm_t* vm = sl->host_vm;
    if(sl_responds_to2(vm, sl->output_handler, vm->id.call)) {
        SLVAL ex;
        sl_vm_frame_t catch_frame;
        SL_TRY(catch_frame, SL_UNWIND_ALL, {
            SLVAL string = sl_make_string(vm, (uint8_t*)buff, len);
            sl_send_id(vm, sl->output_handler, vm->id.call, 1, string);
        }, ex, {
Ejemplo n.º 3
0
int
sl_responds_to(sl_vm_t* vm, SLVAL object, char* id)
{
    return sl_responds_to2(vm, object, sl_intern(vm, id));
}