diff options
author | Rich Hickey <richhickey@gmail.com> | 2006-03-28 15:46:32 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2006-03-28 15:46:32 +0000 |
commit | 578fb77842cedd3a294daaa33e411d0bb349b6d7 (patch) | |
tree | 728abc9369b63f2bcbc3c2c647f4c614b2461d26 /src | |
parent | 744751ff08b5cc68e91200b4e8b741f7d7f34cdf (diff) |
added setValues
Diffstat (limited to 'src')
-rw-r--r-- | src/org/clojure/runtime/RT.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/org/clojure/runtime/RT.java b/src/org/clojure/runtime/RT.java index 9a5945b7..1d4d662c 100644 --- a/src/org/clojure/runtime/RT.java +++ b/src/org/clojure/runtime/RT.java @@ -93,4 +93,81 @@ static public int boundedLength(Cons list, int limit) } return i; } + +static public Object setValues(ThreadLocalData tld, Object arg1) + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 1; + tld.mvArray[0] = arg1; + return arg1; + } + +static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2) + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 2; + tld.mvArray[0] = arg1; + tld.mvArray[1] = arg2; + return arg1; + } + +static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 3; + tld.mvArray[0] = arg1; + tld.mvArray[1] = arg2; + tld.mvArray[2] = arg3; + return arg1; + } + +static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 4; + tld.mvArray[0] = arg1; + tld.mvArray[1] = arg2; + tld.mvArray[2] = arg3; + tld.mvArray[3] = arg4; + return arg1; + } + +static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, + Object arg5) + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 5; + tld.mvArray[0] = arg1; + tld.mvArray[1] = arg2; + tld.mvArray[2] = arg3; + tld.mvArray[3] = arg4; + tld.mvArray[4] = arg5; + return arg1; + } + +static public Object setValues(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, + Object arg5, Cons args) throws Exception + { + if(tld == null) + tld = ThreadLocalData.get(); + tld.mvCount = 5; + tld.mvArray[0] = arg1; + tld.mvArray[1] = arg2; + tld.mvArray[2] = arg3; + tld.mvArray[3] = arg4; + tld.mvArray[4] = arg5; + for(int i = 5; args != null && i < ThreadLocalData.MULTIPLE_VALUES_LIMIT; i++, args = args.rest) + { + tld.mvArray[i] = args.first; + } + if(args != null) + throw new IllegalArgumentException("Too many arguments to values (> ThreadLocalData.MULTIPLE_VALUES_LIMIT)"); + return arg1; + } + } |