diff --git a/version2.0/nasal_runtime.h b/version2.0/nasal_runtime.h index e0eab20..54b2521 100644 --- a/version2.0/nasal_runtime.h +++ b/version2.0/nasal_runtime.h @@ -1,9 +1,10 @@ #ifndef __NASAL_RUNTIME_H__ #define __NASAL_RUNTIME_H__ -#define nas_lib_func_num 30 +#define nas_lib_func_num 31 std::string inline_func_name[nas_lib_func_num]= { //base.nas + "nasal_call_inline_push_back", "nasal_call_inline_push_null", "nasal_call_inline_subvec", "nasal_call_inline_contains", @@ -4588,7 +4589,63 @@ int nasal_runtime::func_proc( int nasal_runtime::inline_function(std::list >& local_scope,std::string func_name) { int ret_addr=-1; - if(func_name=="nasal_call_inline_c_std_puts") + if(func_name=="nasal_call_inline_push_back") + { + int vector_addr=-1; + int elements_addr=-1; + for(std::list >::iterator i=local_scope.begin();i!=local_scope.end();++i) + { + if(i->find("vector")!=i->end()) + vector_addr=(*i)["vector"]; + if(i->find("elements")!=i->end()) + elements_addr=(*i)["elements"]; + } + if(vector_addr<0 || elements_addr<0) + return -1; + if(nasal_gc.get_scalar(vector_addr).get_type()!=scalar_vector) + { + std::cout<<">> [Runtime] append gets a value that is not a vector."< >::iterator i=local_scope.begin();i!=local_scope.end();++i)