From 7ddb8593adaff0e58caa3c5f147e5c088776d990 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sun, 7 Aug 2022 00:35:55 +0800 Subject: [PATCH] :rocket: optimize stl/stack.nas, test/calc.nas & io.fin now returns empty string when cannot open file --- nasal_builtin.h | 9 +++------ stl/stack.nas | 15 +++++++-------- test/calc.nas | 6 +++--- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/nasal_builtin.h b/nasal_builtin.h index 4d6fb3e..69243ca 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -91,14 +91,11 @@ nas_ref builtin_fin(nas_ref* local,nasal_gc& gc) nas_ref val=local[1]; if(val.type!=vm_str) return nas_err("io.fin","\"filename\" must be string"); - std::ifstream fin(val.str()); + std::ifstream fin(val.str(),std::ios::binary); + std::stringstream rd; if(!fin.fail()) - { - std::stringstream rd; rd<"); + return gc.newstr(rd.str()); } nas_ref builtin_fout(nas_ref* local,nasal_gc& gc) { diff --git a/stl/stack.nas b/stl/stack.nas index c4bef1e..3e6a14b 100644 --- a/stl/stack.nas +++ b/stl/stack.nas @@ -1,24 +1,23 @@ # stack.nas # valkmjolnir 2021/3/31 var stack=func(){ - var next=nil; + var vec=[]; return{ push:func(elem){ - next={elem:elem,next:next}; + append(vec,elem); }, pop:func(){ - if(next!=nil) - next=next.next; + return pop(vec); }, top:func(){ - if(next!=nil) - return next.elem; + if(size(vec)!=0) + return vec[-1]; }, clear:func(){ - next=nil; + vec=[]; }, empty:func(){ - return next==nil; + return size(vec)==0; } }; } diff --git a/test/calc.nas b/test/calc.nas index a4d221a..dd5c232 100644 --- a/test/calc.nas +++ b/test/calc.nas @@ -89,9 +89,9 @@ var getname=func(s){ } var count=func(s,c){ - var (cnt,len,ch)=(0,size(s),c[0]); - for(var i=0;i