// module for test #include #include "../nasal.h" namespace nasal_fib_module { double fibonaci(double x) { if (x<=2) { return x; } return fibonaci(x-1)+fibonaci(x-2); } var fib(var* args, usize size, gc* ngc) { if (!size) { return nas_err("fib","lack arguments"); } var num=args[0]; return var::num(fibonaci(num.tonum())); } var quick_fib(var* args, usize size, gc* ngc) { if (!size) { return nas_err("quick_fib","lack arguments"); } double num=args[0].tonum(); if (num<2) { return var::num(num); } double a=1,b=1,res=0; for(double i=1;ialloc(vm_obj); res.obj().set(ghost_for_test, new u32, &ngc->global_ghost_type_table); return res; } var set_new_ghost(var* args, usize size, gc* ngc) { var res=args[0]; if (!res.objchk(ghost_for_test)) { std::cout<<"set_new_ghost: not ghost for test type.\n"; return nil; } f64 num=args[1].num(); *((u32*)res.obj().ptr)=static_cast(num); std::cout<<"set_new_ghost: successfully set ghost = "<exists("fib_for_test")) { nasal_fib_module::ghost_for_test=table->get_ghost_type_index("fib_for_test"); return nasal_fib_module::func_tbl; } nasal_fib_module::ghost_for_test=table->register_ghost_type( "fib_for_test", nasal_fib_module::ghost_for_test_destructor ); return nasal_fib_module::func_tbl; }