update
This commit is contained in:
parent
2699a62d6c
commit
c4a6d94543
|
@ -86,6 +86,10 @@ var die=func(str)
|
|||
nasal_call_builtin_die(str);
|
||||
return nil;
|
||||
}
|
||||
var type=func(object)
|
||||
{
|
||||
return nasal_call_builtin_type(object);
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
|
@ -101,6 +101,7 @@ private:
|
|||
int builtin_getkeys(int);
|
||||
int builtin_import(int);
|
||||
int builtin_die(int);
|
||||
int builtin_type(int);
|
||||
void load_builtin_function();
|
||||
public:
|
||||
nasal_runtime();
|
||||
|
@ -167,6 +168,7 @@ void nasal_runtime::load_builtin_function()
|
|||
{"nasal_call_builtin_get_keys", nasal_runtime::builtin_getkeys},
|
||||
{"nasal_call_import", nasal_runtime::builtin_import},
|
||||
{"nasal_call_builtin_die", nasal_runtime::builtin_die},
|
||||
{"nasal_call_builtin_type", nasal_runtime::builtin_type},
|
||||
{"", NULL}
|
||||
};
|
||||
for(int i=0;builtin_func_table[i].func_pointer;++i)
|
||||
|
|
Loading…
Reference in New Issue