diff --git a/version3.0/lib.nas b/version3.0/lib.nas new file mode 100644 index 0000000..c0d63d9 --- /dev/null +++ b/version3.0/lib.nas @@ -0,0 +1,41 @@ +var print=func(elements...) +{ + nasal_call_builtin_std_cout(elements); + return nil; +}; +var append=func(vector,elements...) +{ + nasal_call_builtin_push_back(vector,elements); + return nil; +} +var setsize=func(vector,size) +{ + nasal_call_builtin_set_size(vector,size); + return nil; +} +var system=func(str) +{ + nasal_call_builtin_system(str); + return; +} +var input=func() +{ + return nasal_call_builtin_input(); +} +var sleep=func(duration) +{ + nasal_call_builtin_sleep(duration); + return; +} +var io= +{ + fin:func(filename) + { + return nasal_call_builtin_finput(filename); + }, + fout:func(filename,str) + { + nasal_call_builtin_foutput(filename,str); + return; + } +}; \ No newline at end of file diff --git a/version3.0/nasal_builtin.h b/version3.0/nasal_builtin.h index 9011425..a7e55c4 100644 --- a/version3.0/nasal_builtin.h +++ b/version3.0/nasal_builtin.h @@ -198,4 +198,64 @@ int nasal_runtime::builtin_sleep(int local_scope_addr) return ret_addr; } +int nasal_runtime::builtin_finput(int local_scope_addr) +{ + int value_addr=-1; + if(local_scope_addr>=0) + value_addr=nasal_vm.gc_get(local_scope_addr).get_closure().get_value_address("filename"); + if(value_addr<0 || nasal_vm.gc_get(value_addr).get_type()!=vm_string) + { + std::cout<<">> [runtime] builtin_finput: cannot find values or wrong value type(must be string)."<=0) + value_addr=nasal_vm.gc_get(local_scope_addr).get_closure().get_value_address("filename"); + if(value_addr<0 || nasal_vm.gc_get(value_addr).get_type()!=vm_string) + { + std::cout<<">> [runtime] builtin_foutput: cannot find values or wrong value type(filename must be string)."<=0) + str_value_addr=nasal_vm.gc_get(local_scope_addr).get_closure().get_value_address("str"); + if(str_value_addr<0 || nasal_vm.gc_get(str_value_addr).get_type()!=vm_string) + { + std::cout<<">> [runtime] builtin_foutput: cannot find values or wrong value type(file's content must be string)."<