Mercurial > lasercutter
diff src/clojure/lang/AFn.java @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/clojure/lang/AFn.java Sat Aug 21 06:25:44 2010 -0400 1.3 @@ -0,0 +1,442 @@ 1.4 +/** 1.5 + * Copyright (c) Rich Hickey. All rights reserved. 1.6 + * The use and distribution terms for this software are covered by the 1.7 + * Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) 1.8 + * which can be found in the file epl-v10.html at the root of this distribution. 1.9 + * By using this software in any fashion, you are agreeing to be bound by 1.10 + * the terms of this license. 1.11 + * You must not remove this notice, or any other, from this software. 1.12 + **/ 1.13 + 1.14 +/* rich Mar 25, 2006 4:05:37 PM */ 1.15 + 1.16 +package clojure.lang; 1.17 + 1.18 +public abstract class AFn implements IFn { 1.19 + 1.20 +public Object call() throws Exception{ 1.21 + return invoke(); 1.22 +} 1.23 + 1.24 +public void run(){ 1.25 + try 1.26 + { 1.27 + invoke(); 1.28 + } 1.29 + catch(Exception e) 1.30 + { 1.31 + throw new RuntimeException(e); 1.32 + } 1.33 +} 1.34 + 1.35 + 1.36 + 1.37 +public Object invoke() throws Exception{ 1.38 + return throwArity(0); 1.39 +} 1.40 + 1.41 +public Object invoke(Object arg1) throws Exception{ 1.42 + return throwArity(1); 1.43 +} 1.44 + 1.45 +public Object invoke(Object arg1, Object arg2) throws Exception{ 1.46 + return throwArity(2); 1.47 +} 1.48 + 1.49 +public Object invoke(Object arg1, Object arg2, Object arg3) throws Exception{ 1.50 + return throwArity(3); 1.51 +} 1.52 + 1.53 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4) throws Exception{ 1.54 + return throwArity(4); 1.55 +} 1.56 + 1.57 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) throws Exception{ 1.58 + return throwArity(5); 1.59 +} 1.60 + 1.61 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6) throws Exception{ 1.62 + return throwArity(6); 1.63 +} 1.64 + 1.65 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7) 1.66 + throws Exception{ 1.67 + return throwArity(7); 1.68 +} 1.69 + 1.70 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.71 + Object arg8) throws Exception{ 1.72 + return throwArity(8); 1.73 +} 1.74 + 1.75 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.76 + Object arg8, Object arg9) throws Exception{ 1.77 + return throwArity(9); 1.78 +} 1.79 + 1.80 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.81 + Object arg8, Object arg9, Object arg10) throws Exception{ 1.82 + return throwArity(10); 1.83 +} 1.84 + 1.85 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.86 + Object arg8, Object arg9, Object arg10, Object arg11) throws Exception{ 1.87 + return throwArity(11); 1.88 +} 1.89 + 1.90 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.91 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12) throws Exception{ 1.92 + return throwArity(12); 1.93 +} 1.94 + 1.95 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.96 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13) 1.97 + throws Exception{ 1.98 + return throwArity(13); 1.99 +} 1.100 + 1.101 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.102 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14) 1.103 + throws Exception{ 1.104 + return throwArity(14); 1.105 +} 1.106 + 1.107 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.108 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.109 + Object arg15) throws Exception{ 1.110 + return throwArity(15); 1.111 +} 1.112 + 1.113 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.114 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.115 + Object arg15, Object arg16) throws Exception{ 1.116 + return throwArity(16); 1.117 +} 1.118 + 1.119 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.120 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.121 + Object arg15, Object arg16, Object arg17) throws Exception{ 1.122 + return throwArity(17); 1.123 +} 1.124 + 1.125 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.126 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.127 + Object arg15, Object arg16, Object arg17, Object arg18) throws Exception{ 1.128 + return throwArity(18); 1.129 +} 1.130 + 1.131 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.132 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.133 + Object arg15, Object arg16, Object arg17, Object arg18, Object arg19) throws Exception{ 1.134 + return throwArity(19); 1.135 +} 1.136 + 1.137 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.138 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.139 + Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20) 1.140 + throws Exception{ 1.141 + return throwArity(20); 1.142 +} 1.143 + 1.144 + 1.145 +public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, 1.146 + Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14, 1.147 + Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20, 1.148 + Object... args) 1.149 + throws Exception{ 1.150 + return throwArity(21); 1.151 +} 1.152 + 1.153 +public Object applyTo(ISeq arglist) throws Exception{ 1.154 + return applyToHelper(this, Util.ret1(arglist,arglist = null)); 1.155 +} 1.156 + 1.157 +static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{ 1.158 + switch(RT.boundedLength(arglist, 20)) 1.159 + { 1.160 + case 0: 1.161 + arglist = null; 1.162 + return ifn.invoke(); 1.163 + case 1: 1.164 + Object a1 = arglist.first(); 1.165 + arglist = null; 1.166 + return ifn.invoke(a1); 1.167 + case 2: 1.168 + return ifn.invoke(arglist.first() 1.169 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.170 + ); 1.171 + case 3: 1.172 + return ifn.invoke(arglist.first() 1.173 + , (arglist = arglist.next()).first() 1.174 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.175 + ); 1.176 + case 4: 1.177 + return ifn.invoke(arglist.first() 1.178 + , (arglist = arglist.next()).first() 1.179 + , (arglist = arglist.next()).first() 1.180 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.181 + ); 1.182 + case 5: 1.183 + return ifn.invoke(arglist.first() 1.184 + , (arglist = arglist.next()).first() 1.185 + , (arglist = arglist.next()).first() 1.186 + , (arglist = arglist.next()).first() 1.187 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.188 + ); 1.189 + case 6: 1.190 + return ifn.invoke(arglist.first() 1.191 + , (arglist = arglist.next()).first() 1.192 + , (arglist = arglist.next()).first() 1.193 + , (arglist = arglist.next()).first() 1.194 + , (arglist = arglist.next()).first() 1.195 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.196 + ); 1.197 + case 7: 1.198 + return ifn.invoke(arglist.first() 1.199 + , (arglist = arglist.next()).first() 1.200 + , (arglist = arglist.next()).first() 1.201 + , (arglist = arglist.next()).first() 1.202 + , (arglist = arglist.next()).first() 1.203 + , (arglist = arglist.next()).first() 1.204 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.205 + ); 1.206 + case 8: 1.207 + return ifn.invoke(arglist.first() 1.208 + , (arglist = arglist.next()).first() 1.209 + , (arglist = arglist.next()).first() 1.210 + , (arglist = arglist.next()).first() 1.211 + , (arglist = arglist.next()).first() 1.212 + , (arglist = arglist.next()).first() 1.213 + , (arglist = arglist.next()).first() 1.214 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.215 + ); 1.216 + case 9: 1.217 + return ifn.invoke(arglist.first() 1.218 + , (arglist = arglist.next()).first() 1.219 + , (arglist = arglist.next()).first() 1.220 + , (arglist = arglist.next()).first() 1.221 + , (arglist = arglist.next()).first() 1.222 + , (arglist = arglist.next()).first() 1.223 + , (arglist = arglist.next()).first() 1.224 + , (arglist = arglist.next()).first() 1.225 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.226 + ); 1.227 + case 10: 1.228 + return ifn.invoke(arglist.first() 1.229 + , (arglist = arglist.next()).first() 1.230 + , (arglist = arglist.next()).first() 1.231 + , (arglist = arglist.next()).first() 1.232 + , (arglist = arglist.next()).first() 1.233 + , (arglist = arglist.next()).first() 1.234 + , (arglist = arglist.next()).first() 1.235 + , (arglist = arglist.next()).first() 1.236 + , (arglist = arglist.next()).first() 1.237 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.238 + ); 1.239 + case 11: 1.240 + return ifn.invoke(arglist.first() 1.241 + , (arglist = arglist.next()).first() 1.242 + , (arglist = arglist.next()).first() 1.243 + , (arglist = arglist.next()).first() 1.244 + , (arglist = arglist.next()).first() 1.245 + , (arglist = arglist.next()).first() 1.246 + , (arglist = arglist.next()).first() 1.247 + , (arglist = arglist.next()).first() 1.248 + , (arglist = arglist.next()).first() 1.249 + , (arglist = arglist.next()).first() 1.250 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.251 + ); 1.252 + case 12: 1.253 + return ifn.invoke(arglist.first() 1.254 + , (arglist = arglist.next()).first() 1.255 + , (arglist = arglist.next()).first() 1.256 + , (arglist = arglist.next()).first() 1.257 + , (arglist = arglist.next()).first() 1.258 + , (arglist = arglist.next()).first() 1.259 + , (arglist = arglist.next()).first() 1.260 + , (arglist = arglist.next()).first() 1.261 + , (arglist = arglist.next()).first() 1.262 + , (arglist = arglist.next()).first() 1.263 + , (arglist = arglist.next()).first() 1.264 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.265 + ); 1.266 + case 13: 1.267 + return ifn.invoke(arglist.first() 1.268 + , (arglist = arglist.next()).first() 1.269 + , (arglist = arglist.next()).first() 1.270 + , (arglist = arglist.next()).first() 1.271 + , (arglist = arglist.next()).first() 1.272 + , (arglist = arglist.next()).first() 1.273 + , (arglist = arglist.next()).first() 1.274 + , (arglist = arglist.next()).first() 1.275 + , (arglist = arglist.next()).first() 1.276 + , (arglist = arglist.next()).first() 1.277 + , (arglist = arglist.next()).first() 1.278 + , (arglist = arglist.next()).first() 1.279 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.280 + ); 1.281 + case 14: 1.282 + return ifn.invoke(arglist.first() 1.283 + , (arglist = arglist.next()).first() 1.284 + , (arglist = arglist.next()).first() 1.285 + , (arglist = arglist.next()).first() 1.286 + , (arglist = arglist.next()).first() 1.287 + , (arglist = arglist.next()).first() 1.288 + , (arglist = arglist.next()).first() 1.289 + , (arglist = arglist.next()).first() 1.290 + , (arglist = arglist.next()).first() 1.291 + , (arglist = arglist.next()).first() 1.292 + , (arglist = arglist.next()).first() 1.293 + , (arglist = arglist.next()).first() 1.294 + , (arglist = arglist.next()).first() 1.295 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.296 + ); 1.297 + case 15: 1.298 + return ifn.invoke(arglist.first() 1.299 + , (arglist = arglist.next()).first() 1.300 + , (arglist = arglist.next()).first() 1.301 + , (arglist = arglist.next()).first() 1.302 + , (arglist = arglist.next()).first() 1.303 + , (arglist = arglist.next()).first() 1.304 + , (arglist = arglist.next()).first() 1.305 + , (arglist = arglist.next()).first() 1.306 + , (arglist = arglist.next()).first() 1.307 + , (arglist = arglist.next()).first() 1.308 + , (arglist = arglist.next()).first() 1.309 + , (arglist = arglist.next()).first() 1.310 + , (arglist = arglist.next()).first() 1.311 + , (arglist = arglist.next()).first() 1.312 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.313 + ); 1.314 + case 16: 1.315 + return ifn.invoke(arglist.first() 1.316 + , (arglist = arglist.next()).first() 1.317 + , (arglist = arglist.next()).first() 1.318 + , (arglist = arglist.next()).first() 1.319 + , (arglist = arglist.next()).first() 1.320 + , (arglist = arglist.next()).first() 1.321 + , (arglist = arglist.next()).first() 1.322 + , (arglist = arglist.next()).first() 1.323 + , (arglist = arglist.next()).first() 1.324 + , (arglist = arglist.next()).first() 1.325 + , (arglist = arglist.next()).first() 1.326 + , (arglist = arglist.next()).first() 1.327 + , (arglist = arglist.next()).first() 1.328 + , (arglist = arglist.next()).first() 1.329 + , (arglist = arglist.next()).first() 1.330 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.331 + ); 1.332 + case 17: 1.333 + return ifn.invoke(arglist.first() 1.334 + , (arglist = arglist.next()).first() 1.335 + , (arglist = arglist.next()).first() 1.336 + , (arglist = arglist.next()).first() 1.337 + , (arglist = arglist.next()).first() 1.338 + , (arglist = arglist.next()).first() 1.339 + , (arglist = arglist.next()).first() 1.340 + , (arglist = arglist.next()).first() 1.341 + , (arglist = arglist.next()).first() 1.342 + , (arglist = arglist.next()).first() 1.343 + , (arglist = arglist.next()).first() 1.344 + , (arglist = arglist.next()).first() 1.345 + , (arglist = arglist.next()).first() 1.346 + , (arglist = arglist.next()).first() 1.347 + , (arglist = arglist.next()).first() 1.348 + , (arglist = arglist.next()).first() 1.349 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.350 + ); 1.351 + case 18: 1.352 + return ifn.invoke(arglist.first() 1.353 + , (arglist = arglist.next()).first() 1.354 + , (arglist = arglist.next()).first() 1.355 + , (arglist = arglist.next()).first() 1.356 + , (arglist = arglist.next()).first() 1.357 + , (arglist = arglist.next()).first() 1.358 + , (arglist = arglist.next()).first() 1.359 + , (arglist = arglist.next()).first() 1.360 + , (arglist = arglist.next()).first() 1.361 + , (arglist = arglist.next()).first() 1.362 + , (arglist = arglist.next()).first() 1.363 + , (arglist = arglist.next()).first() 1.364 + , (arglist = arglist.next()).first() 1.365 + , (arglist = arglist.next()).first() 1.366 + , (arglist = arglist.next()).first() 1.367 + , (arglist = arglist.next()).first() 1.368 + , (arglist = arglist.next()).first() 1.369 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.370 + ); 1.371 + case 19: 1.372 + return ifn.invoke(arglist.first() 1.373 + , (arglist = arglist.next()).first() 1.374 + , (arglist = arglist.next()).first() 1.375 + , (arglist = arglist.next()).first() 1.376 + , (arglist = arglist.next()).first() 1.377 + , (arglist = arglist.next()).first() 1.378 + , (arglist = arglist.next()).first() 1.379 + , (arglist = arglist.next()).first() 1.380 + , (arglist = arglist.next()).first() 1.381 + , (arglist = arglist.next()).first() 1.382 + , (arglist = arglist.next()).first() 1.383 + , (arglist = arglist.next()).first() 1.384 + , (arglist = arglist.next()).first() 1.385 + , (arglist = arglist.next()).first() 1.386 + , (arglist = arglist.next()).first() 1.387 + , (arglist = arglist.next()).first() 1.388 + , (arglist = arglist.next()).first() 1.389 + , (arglist = arglist.next()).first() 1.390 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.391 + ); 1.392 + case 20: 1.393 + return ifn.invoke(arglist.first() 1.394 + , (arglist = arglist.next()).first() 1.395 + , (arglist = arglist.next()).first() 1.396 + , (arglist = arglist.next()).first() 1.397 + , (arglist = arglist.next()).first() 1.398 + , (arglist = arglist.next()).first() 1.399 + , (arglist = arglist.next()).first() 1.400 + , (arglist = arglist.next()).first() 1.401 + , (arglist = arglist.next()).first() 1.402 + , (arglist = arglist.next()).first() 1.403 + , (arglist = arglist.next()).first() 1.404 + , (arglist = arglist.next()).first() 1.405 + , (arglist = arglist.next()).first() 1.406 + , (arglist = arglist.next()).first() 1.407 + , (arglist = arglist.next()).first() 1.408 + , (arglist = arglist.next()).first() 1.409 + , (arglist = arglist.next()).first() 1.410 + , (arglist = arglist.next()).first() 1.411 + , (arglist = arglist.next()).first() 1.412 + , Util.ret1((arglist = arglist.next()).first(),arglist = null) 1.413 + ); 1.414 + default: 1.415 + return ifn.invoke(arglist.first() 1.416 + , (arglist = arglist.next()).first() 1.417 + , (arglist = arglist.next()).first() 1.418 + , (arglist = arglist.next()).first() 1.419 + , (arglist = arglist.next()).first() 1.420 + , (arglist = arglist.next()).first() 1.421 + , (arglist = arglist.next()).first() 1.422 + , (arglist = arglist.next()).first() 1.423 + , (arglist = arglist.next()).first() 1.424 + , (arglist = arglist.next()).first() 1.425 + , (arglist = arglist.next()).first() 1.426 + , (arglist = arglist.next()).first() 1.427 + , (arglist = arglist.next()).first() 1.428 + , (arglist = arglist.next()).first() 1.429 + , (arglist = arglist.next()).first() 1.430 + , (arglist = arglist.next()).first() 1.431 + , (arglist = arglist.next()).first() 1.432 + , (arglist = arglist.next()).first() 1.433 + , (arglist = arglist.next()).first() 1.434 + , (arglist = arglist.next()).first() 1.435 + , RT.seqToArray(Util.ret1(arglist.next(),arglist = null))); 1.436 + } 1.437 +} 1.438 + 1.439 +public Object throwArity(int n){ 1.440 + String name = getClass().getSimpleName(); 1.441 + int suffix = name.lastIndexOf("__"); 1.442 + throw new IllegalArgumentException("Wrong number of args (" + n + ") passed to: " 1.443 + + (suffix == -1 ? name : name.substring(0, suffix)).replace('_', '-')); 1.444 +} 1.445 +}