From 1ad50ce4e6ed74c8eeb89a1f2780e6ed58a72b2b Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 25 Feb 2009 01:21:50 +0000 Subject: (svn r15578) -Change: unexternalise squirrel. --- src/3rdparty/squirrel/samples/ackermann.nut | 22 +++++ src/3rdparty/squirrel/samples/array.nut | 28 ++++++ src/3rdparty/squirrel/samples/class.nut | 49 +++++++++ src/3rdparty/squirrel/samples/classattributes.nut | 35 +++++++ src/3rdparty/squirrel/samples/coroutines.nut | 25 +++++ src/3rdparty/squirrel/samples/delegation.nut | 52 ++++++++++ src/3rdparty/squirrel/samples/fibonacci.nut | 15 +++ src/3rdparty/squirrel/samples/flow.nut | 33 +++++++ src/3rdparty/squirrel/samples/generators.nut | 42 ++++++++ src/3rdparty/squirrel/samples/hello.nut | 1 + src/3rdparty/squirrel/samples/list.nut | 39 ++++++++ src/3rdparty/squirrel/samples/loops.nut | 32 ++++++ src/3rdparty/squirrel/samples/matrix.nut | 44 +++++++++ src/3rdparty/squirrel/samples/metamethods.nut | 115 ++++++++++++++++++++++ src/3rdparty/squirrel/samples/methcall.nut | 61 ++++++++++++ src/3rdparty/squirrel/samples/tailstate.nut | 24 +++++ 16 files changed, 617 insertions(+) create mode 100644 src/3rdparty/squirrel/samples/ackermann.nut create mode 100644 src/3rdparty/squirrel/samples/array.nut create mode 100644 src/3rdparty/squirrel/samples/class.nut create mode 100644 src/3rdparty/squirrel/samples/classattributes.nut create mode 100644 src/3rdparty/squirrel/samples/coroutines.nut create mode 100644 src/3rdparty/squirrel/samples/delegation.nut create mode 100644 src/3rdparty/squirrel/samples/fibonacci.nut create mode 100644 src/3rdparty/squirrel/samples/flow.nut create mode 100644 src/3rdparty/squirrel/samples/generators.nut create mode 100644 src/3rdparty/squirrel/samples/hello.nut create mode 100644 src/3rdparty/squirrel/samples/list.nut create mode 100644 src/3rdparty/squirrel/samples/loops.nut create mode 100644 src/3rdparty/squirrel/samples/matrix.nut create mode 100644 src/3rdparty/squirrel/samples/metamethods.nut create mode 100644 src/3rdparty/squirrel/samples/methcall.nut create mode 100644 src/3rdparty/squirrel/samples/tailstate.nut (limited to 'src/3rdparty/squirrel/samples') diff --git a/src/3rdparty/squirrel/samples/ackermann.nut b/src/3rdparty/squirrel/samples/ackermann.nut new file mode 100644 index 000000000..c8d056082 --- /dev/null +++ b/src/3rdparty/squirrel/samples/ackermann.nut @@ -0,0 +1,22 @@ +/* +* +* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) +* +*/ + +function Ack(M, N) { + if (M == 0) return( N + 1 ); + if (N == 0) return( Ack(M - 1, 1) ); + return( Ack(M - 1, Ack(M, (N - 1))) ); +} + +local n; + +if(ARGS.len()!=0) { + n = ARGS[0].tointeger(); + if(n < 1) n = 1; +} else { + n = 1; +} +print("n="+n+"\n"); +print("Ack(3,"+ n+ "):"+ Ack(3, n)); diff --git a/src/3rdparty/squirrel/samples/array.nut b/src/3rdparty/squirrel/samples/array.nut new file mode 100644 index 000000000..58f160b12 --- /dev/null +++ b/src/3rdparty/squirrel/samples/array.nut @@ -0,0 +1,28 @@ +/* +* +* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) +* +*/ +local n, i, k; + +if(ARGS.len()!=0) { + n = ARGS[0].tointeger(); + if(n < 1) n = 1; +} else { + n = 1; +} + +local x = []; x.resize(n); +local y = []; y.resize(n); + +for (i = 0; i < n; i+=1) { + x[i] = i + 1; + y[i] = 0; +} + +for (k = 0 ; k < n; k+=1) { + for (i = n-1; i >= 0; i-=1) { + y[i] = y[i]+ x[i]; + } +} +print(y[0].tostring()+" "+y[n-1]); diff --git a/src/3rdparty/squirrel/samples/class.nut b/src/3rdparty/squirrel/samples/class.nut new file mode 100644 index 000000000..babe54f0b --- /dev/null +++ b/src/3rdparty/squirrel/samples/class.nut @@ -0,0 +1,49 @@ +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +class BaseVector { + constructor(...) + { + if(vargc >= 3) { + x = vargv[0]; + y = vargv[1]; + z = vargv[2]; + } + } + + + x = 0; + y = 0; + z = 0; +} + +class Vector3 extends BaseVector { + function _add(other) + { + if(other instanceof this.getclass()) + return ::Vector3(x+other.x,y+other.y,z+other.z); + else + throw "wrong parameter"; + } + function Print() + { + ::print(x+","+y+","+z+"\n"); + } +} + +local v0 = Vector3(1,2,3) +local v1 = Vector3(11,12,13) +local v2 = v0 + v1; +v2.Print(); + +FakeNamespace <- { + Utils = {} +} + +class FakeNamespace.Utils.SuperClass { + constructor() + { + ::print("FakeNamespace.Utils.SuperClass") + } +} + +local testy = FakeNamespace.Utils.SuperClass(); diff --git a/src/3rdparty/squirrel/samples/classattributes.nut b/src/3rdparty/squirrel/samples/classattributes.nut new file mode 100644 index 000000000..01232002c --- /dev/null +++ b/src/3rdparty/squirrel/samples/classattributes.nut @@ -0,0 +1,35 @@ +class Foo { + //constructor + constructor(a) + { + testy = ["stuff",1,2,3]; + } + //attributes of PrintTesty + + function PrintTesty() + { + foreach(i,val in testy) + { + ::print("idx = "+i+" = "+val+" \n"); + } + } + //attributes of testy + + testy = null; + +} + +foreach(member,val in Foo) +{ + ::print(member+"\n"); + local attr; + if((attr = Foo.getattributes(member)) != null) { + foreach(i,v in attr) + { + ::print("\t"+i+" = "+(typeof v)+"\n"); + } + } + else { + ::print("\t\n") + } +} diff --git a/src/3rdparty/squirrel/samples/coroutines.nut b/src/3rdparty/squirrel/samples/coroutines.nut new file mode 100644 index 000000000..c7e4583c1 --- /dev/null +++ b/src/3rdparty/squirrel/samples/coroutines.nut @@ -0,0 +1,25 @@ +function coroutine_test(a,b) +{ + ::print(a+" "+b+"\n"); + local ret = ::suspend("suspend 1"); + ::print("the coroutine says "+ret+"\n"); + ret = ::suspend("suspend 2"); + ::print("the coroutine says "+ret+"\n"); + ret = ::suspend("suspend 3"); + ::print("the coroutine says "+ret+"\n"); + return "I'm done" +} + +local coro = ::newthread(coroutine_test); + +local susparam = coro.call("test","coroutine"); //starts the coroutine + +local i = 1; +do +{ + ::print("suspend passed ["+susparam+"]\n") + susparam = coro.wakeup("ciao "+i); + ++i; +}while(coro.getstatus()=="suspended") + +::print("return passed ["+susparam+"]\n") diff --git a/src/3rdparty/squirrel/samples/delegation.nut b/src/3rdparty/squirrel/samples/delegation.nut new file mode 100644 index 000000000..e9e86ca9a --- /dev/null +++ b/src/3rdparty/squirrel/samples/delegation.nut @@ -0,0 +1,52 @@ + +PEntity <- { + name="noname" + pos={x=0,y=0,z=0} + type="entity" + //methamethod + _typeof=function() + { + return type; + } +} + +function PEntity::PrintPos() +{ + ::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n"); +} + +function PEntity::new(name,pos) +{ + local newentity=clone ::PEntity; + if(name) + newentity.name=name; + if(pos) + newentity.pos=pos; + return newentity; +} + +PPlayer <- { + model="warrior.mdl" + weapon="fist" + health=100 + armor=0 + //overrides the parent type + type="player" +} + +function PPlayer::new(name,pos) +{ + local newplayer=delegate ::PEntity.new(name,pos) : clone ::PPlayer; + return newplayer; +} + +local player=PPlayer.new("godzilla",{x=10,y=20,z=30}); + +::print("PLAYER NAME"+player.name+"\n"); +::print("ENTITY TYPE"+typeof player+"\n"); + +player.PrintPos(); + +player.pos.x=123; + +player.PrintPos(); diff --git a/src/3rdparty/squirrel/samples/fibonacci.nut b/src/3rdparty/squirrel/samples/fibonacci.nut new file mode 100644 index 000000000..1db79423e --- /dev/null +++ b/src/3rdparty/squirrel/samples/fibonacci.nut @@ -0,0 +1,15 @@ +/* +* +* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/) +* +*/ + +function fib(n) +{ + if (n < 2) return 1 + return fib(n-2) + fib(n-1) +} + +local n = ARGS.len()!=0?ARGS[0].tointeger():1 + +print(fib(n)+"\n") diff --git a/src/3rdparty/squirrel/samples/flow.nut b/src/3rdparty/squirrel/samples/flow.nut new file mode 100644 index 000000000..1cd7cfcf4 --- /dev/null +++ b/src/3rdparty/squirrel/samples/flow.nut @@ -0,0 +1,33 @@ +function min(x,y) + return xy?x:y; + +if(min(100,200)>max(50,20)) + print("I'm useless statement just to show up the if/else\n"); +else + print("squirrel!!\n"); + +print("\n") + +function typy(obj) +{ + switch(typeof obj) + { + case "integer": + case "float": + return "is a number"; + case "table": + case "array": + return "is a container"; + default: + return "is other stuff" + } +} + +local a=1,b={},c=function(a,b){return a+b;} + +print("a "+typy(a)+"\n"); +print("b "+typy(b)+"\n"); +print("c "+typy(c)+"\n"); diff --git a/src/3rdparty/squirrel/samples/generators.nut b/src/3rdparty/squirrel/samples/generators.nut new file mode 100644 index 000000000..9853e0964 --- /dev/null +++ b/src/3rdparty/squirrel/samples/generators.nut @@ -0,0 +1,42 @@ +/* +*Random number function from The Great Computer Language shootout +*converted to a generator func +*/ + +function gen_random(max) { + local last=42 + local IM = 139968; + local IA = 3877; + local IC = 29573; + for(;;){ //loops forever + yield (max * (last = (last * IA + IC) % IM) / IM); + } +} + +local randtor=gen_random(100); + +print("RAND NUMBERS \n") + +for(local i=0;i<10;i+=1) + print(">"+resume randtor+"\n"); + +print("FIBONACCI \n") +function fiboz(n) +{ + local prev=0; + local curr=1; + yield 1; + + for(local i=0;i"+val+"\n"); +} diff --git a/src/3rdparty/squirrel/samples/hello.nut b/src/3rdparty/squirrel/samples/hello.nut new file mode 100644 index 000000000..1dc45ac13 --- /dev/null +++ b/src/3rdparty/squirrel/samples/hello.nut @@ -0,0 +1 @@ +print("Hello World!") \ No newline at end of file diff --git a/src/3rdparty/squirrel/samples/list.nut b/src/3rdparty/squirrel/samples/list.nut new file mode 100644 index 000000000..8ab1ab517 --- /dev/null +++ b/src/3rdparty/squirrel/samples/list.nut @@ -0,0 +1,39 @@ +/*translation of the list test from The Great Computer Language Shootout +*/ + +function compare_arr(a1,a2) +{ + foreach(i,val in a1) + if(val!=a2[i])return null; + return 1; +} + +function test() +{ + local size=10000 + local l1=[]; l1.resize(size); + for(local i=0;i0) + l3.append(l2.pop()); + while(l3.len()>0) + l2.append(l3.pop()); + l1.reverse(); + + if(compare_arr(l1,l2)) + return l1.len(); + return null; +} + +local n = ARGS.len()!=0?ARGS[0].tointeger():1 +for(local i=0;i\n"); +else + print("\n"); diff --git a/src/3rdparty/squirrel/samples/methcall.nut b/src/3rdparty/squirrel/samples/methcall.nut new file mode 100644 index 000000000..131d26228 --- /dev/null +++ b/src/3rdparty/squirrel/samples/methcall.nut @@ -0,0 +1,61 @@ +/*translation of the methcall test from The Great Computer Language Shootout +*/ + +Toggle <- { + bool=null +} + +function Toggle::value() { + return bool; +} + +function Toggle::activate() { + bool = !bool; + return this; +} + +function Toggle::new(startstate) { + local newo=clone this; + newo.bool = startstate; + return newo; +} + +NthToggle <- { + count_max=null + count=0 +} + +function NthToggle::new(start_state,max_counter) +{ + local newo=delegate ::Toggle.new(start_state) : clone this; + newo.count_max <- max_counter + return newo; +} + +function NthToggle::activate () +{ + count+=1 + if (count >= count_max) { + bool = !bool; + count = 0; + } + return this; +} + + +local n = ARGS.len()!=0?ARGS[0].tointeger():1 + +local val = 1; +local toggle = Toggle.new(val); +for (local i=0; i