diff --git a/lib.nas b/lib.nas index 55986f7..a3054ae 100644 --- a/lib.nas +++ b/lib.nas @@ -236,6 +236,8 @@ var isvec=func(v){ return typeof(v)=="vec"; } + +# get the index of val in the vec var vecindex=func(vec,val){ forindex(var i;vec) if(val==vec[i]) @@ -243,6 +245,16 @@ var vecindex=func(vec,val){ return nil; } +# check if the object is an instance of the class +var isa=func(object,class){ + if(!contains(object,"parents") or typeof(object.parents)!="vec") + return 0; + foreach(var elem;object.parents) + if(elem==class) + return 1; + return 0; +} + var io= { SEEK_SET:0, diff --git a/stl/lib.nas b/stl/lib.nas index 55986f7..a3054ae 100644 --- a/stl/lib.nas +++ b/stl/lib.nas @@ -236,6 +236,8 @@ var isvec=func(v){ return typeof(v)=="vec"; } + +# get the index of val in the vec var vecindex=func(vec,val){ forindex(var i;vec) if(val==vec[i]) @@ -243,6 +245,16 @@ var vecindex=func(vec,val){ return nil; } +# check if the object is an instance of the class +var isa=func(object,class){ + if(!contains(object,"parents") or typeof(object.parents)!="vec") + return 0; + foreach(var elem;object.parents) + if(elem==class) + return 1; + return 0; +} + var io= { SEEK_SET:0, diff --git a/test/scalar.nas b/test/scalar.nas index 266e43e..fcb19f2 100644 --- a/test/scalar.nas +++ b/test/scalar.nas @@ -174,5 +174,22 @@ println(values({ c:3 })); println(find("cd", "abcdef")); # prints 2 -println(find("x", "abcdef")); # prints -1 -println(find("cd", "abcdef")); # prints 2 \ No newline at end of file +println(find("x", "abcdef")); # prints -1 +println(find("cd", "abcdef")); # prints 2 + +var a={ + new: func(x=0){ + return { + x:x, + parents:[a] + }; + }, + new2: func(x=0){ + return { + x:x, + parents:a + }; + } +}; +println(isa(a.new(),a)); # 1 +println(isa(a.new2(),a));# 0 \ No newline at end of file