update
This commit is contained in:
parent
2699a62d6c
commit
c4a6d94543
|
@ -86,6 +86,10 @@ var die=func(str)
|
||||||
nasal_call_builtin_die(str);
|
nasal_call_builtin_die(str);
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
var type=func(object)
|
||||||
|
{
|
||||||
|
return nasal_call_builtin_type(object);
|
||||||
|
}
|
||||||
|
|
||||||
var io=
|
var io=
|
||||||
{
|
{
|
||||||
|
|
|
@ -763,4 +763,27 @@ int nasal_runtime::builtin_die(int local_scope_addr)
|
||||||
nasal_vm.gc_get(ret_addr).set_type(vm_nil);
|
nasal_vm.gc_get(ret_addr).set_type(vm_nil);
|
||||||
return ret_addr;
|
return ret_addr;
|
||||||
}
|
}
|
||||||
|
int nasal_runtime::builtin_type(int local_scope_addr)
|
||||||
|
{
|
||||||
|
int value_addr=in_builtin_find("object");
|
||||||
|
if(value_addr<0)
|
||||||
|
{
|
||||||
|
std::cout<<">> [runtime] builtin_type: cannot find \"object\".\n";
|
||||||
|
++error;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int type=nasal_vm.gc_get(value_addr).get_type();
|
||||||
|
int ret_addr=nasal_vm.gc_alloc();
|
||||||
|
nasal_vm.gc_get(ret_addr).set_type(vm_string);
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case vm_nil: nasal_vm.gc_get(ret_addr).set_string("nil");break;
|
||||||
|
case vm_number: nasal_vm.gc_get(ret_addr).set_string("number");break;
|
||||||
|
case vm_string: nasal_vm.gc_get(ret_addr).set_string("string");break;
|
||||||
|
case vm_vector: nasal_vm.gc_get(ret_addr).set_string("vector");break;
|
||||||
|
case vm_hash: nasal_vm.gc_get(ret_addr).set_string("hash");break;
|
||||||
|
case vm_function: nasal_vm.gc_get(ret_addr).set_string("function");break;
|
||||||
|
}
|
||||||
|
return ret_addr;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
|
@ -101,6 +101,7 @@ private:
|
||||||
int builtin_getkeys(int);
|
int builtin_getkeys(int);
|
||||||
int builtin_import(int);
|
int builtin_import(int);
|
||||||
int builtin_die(int);
|
int builtin_die(int);
|
||||||
|
int builtin_type(int);
|
||||||
void load_builtin_function();
|
void load_builtin_function();
|
||||||
public:
|
public:
|
||||||
nasal_runtime();
|
nasal_runtime();
|
||||||
|
@ -167,6 +168,7 @@ void nasal_runtime::load_builtin_function()
|
||||||
{"nasal_call_builtin_get_keys", nasal_runtime::builtin_getkeys},
|
{"nasal_call_builtin_get_keys", nasal_runtime::builtin_getkeys},
|
||||||
{"nasal_call_import", nasal_runtime::builtin_import},
|
{"nasal_call_import", nasal_runtime::builtin_import},
|
||||||
{"nasal_call_builtin_die", nasal_runtime::builtin_die},
|
{"nasal_call_builtin_die", nasal_runtime::builtin_die},
|
||||||
|
{"nasal_call_builtin_type", nasal_runtime::builtin_type},
|
||||||
{"", NULL}
|
{"", NULL}
|
||||||
};
|
};
|
||||||
for(int i=0;builtin_func_table[i].func_pointer;++i)
|
for(int i=0;builtin_func_table[i].func_pointer;++i)
|
||||||
|
|
Loading…
Reference in New Issue