annotate 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
rev   line source
rlm@10 1 /**
rlm@10 2 * Copyright (c) Rich Hickey. All rights reserved.
rlm@10 3 * The use and distribution terms for this software are covered by the
rlm@10 4 * Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
rlm@10 5 * which can be found in the file epl-v10.html at the root of this distribution.
rlm@10 6 * By using this software in any fashion, you are agreeing to be bound by
rlm@10 7 * the terms of this license.
rlm@10 8 * You must not remove this notice, or any other, from this software.
rlm@10 9 **/
rlm@10 10
rlm@10 11 /* rich Mar 25, 2006 4:05:37 PM */
rlm@10 12
rlm@10 13 package clojure.lang;
rlm@10 14
rlm@10 15 public abstract class AFn implements IFn {
rlm@10 16
rlm@10 17 public Object call() throws Exception{
rlm@10 18 return invoke();
rlm@10 19 }
rlm@10 20
rlm@10 21 public void run(){
rlm@10 22 try
rlm@10 23 {
rlm@10 24 invoke();
rlm@10 25 }
rlm@10 26 catch(Exception e)
rlm@10 27 {
rlm@10 28 throw new RuntimeException(e);
rlm@10 29 }
rlm@10 30 }
rlm@10 31
rlm@10 32
rlm@10 33
rlm@10 34 public Object invoke() throws Exception{
rlm@10 35 return throwArity(0);
rlm@10 36 }
rlm@10 37
rlm@10 38 public Object invoke(Object arg1) throws Exception{
rlm@10 39 return throwArity(1);
rlm@10 40 }
rlm@10 41
rlm@10 42 public Object invoke(Object arg1, Object arg2) throws Exception{
rlm@10 43 return throwArity(2);
rlm@10 44 }
rlm@10 45
rlm@10 46 public Object invoke(Object arg1, Object arg2, Object arg3) throws Exception{
rlm@10 47 return throwArity(3);
rlm@10 48 }
rlm@10 49
rlm@10 50 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4) throws Exception{
rlm@10 51 return throwArity(4);
rlm@10 52 }
rlm@10 53
rlm@10 54 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) throws Exception{
rlm@10 55 return throwArity(5);
rlm@10 56 }
rlm@10 57
rlm@10 58 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6) throws Exception{
rlm@10 59 return throwArity(6);
rlm@10 60 }
rlm@10 61
rlm@10 62 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)
rlm@10 63 throws Exception{
rlm@10 64 return throwArity(7);
rlm@10 65 }
rlm@10 66
rlm@10 67 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 68 Object arg8) throws Exception{
rlm@10 69 return throwArity(8);
rlm@10 70 }
rlm@10 71
rlm@10 72 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 73 Object arg8, Object arg9) throws Exception{
rlm@10 74 return throwArity(9);
rlm@10 75 }
rlm@10 76
rlm@10 77 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 78 Object arg8, Object arg9, Object arg10) throws Exception{
rlm@10 79 return throwArity(10);
rlm@10 80 }
rlm@10 81
rlm@10 82 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 83 Object arg8, Object arg9, Object arg10, Object arg11) throws Exception{
rlm@10 84 return throwArity(11);
rlm@10 85 }
rlm@10 86
rlm@10 87 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 88 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12) throws Exception{
rlm@10 89 return throwArity(12);
rlm@10 90 }
rlm@10 91
rlm@10 92 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 93 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13)
rlm@10 94 throws Exception{
rlm@10 95 return throwArity(13);
rlm@10 96 }
rlm@10 97
rlm@10 98 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 99 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14)
rlm@10 100 throws Exception{
rlm@10 101 return throwArity(14);
rlm@10 102 }
rlm@10 103
rlm@10 104 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 105 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 106 Object arg15) throws Exception{
rlm@10 107 return throwArity(15);
rlm@10 108 }
rlm@10 109
rlm@10 110 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 111 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 112 Object arg15, Object arg16) throws Exception{
rlm@10 113 return throwArity(16);
rlm@10 114 }
rlm@10 115
rlm@10 116 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 117 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 118 Object arg15, Object arg16, Object arg17) throws Exception{
rlm@10 119 return throwArity(17);
rlm@10 120 }
rlm@10 121
rlm@10 122 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 123 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 124 Object arg15, Object arg16, Object arg17, Object arg18) throws Exception{
rlm@10 125 return throwArity(18);
rlm@10 126 }
rlm@10 127
rlm@10 128 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 129 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 130 Object arg15, Object arg16, Object arg17, Object arg18, Object arg19) throws Exception{
rlm@10 131 return throwArity(19);
rlm@10 132 }
rlm@10 133
rlm@10 134 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 135 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 136 Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20)
rlm@10 137 throws Exception{
rlm@10 138 return throwArity(20);
rlm@10 139 }
rlm@10 140
rlm@10 141
rlm@10 142 public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7,
rlm@10 143 Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14,
rlm@10 144 Object arg15, Object arg16, Object arg17, Object arg18, Object arg19, Object arg20,
rlm@10 145 Object... args)
rlm@10 146 throws Exception{
rlm@10 147 return throwArity(21);
rlm@10 148 }
rlm@10 149
rlm@10 150 public Object applyTo(ISeq arglist) throws Exception{
rlm@10 151 return applyToHelper(this, Util.ret1(arglist,arglist = null));
rlm@10 152 }
rlm@10 153
rlm@10 154 static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
rlm@10 155 switch(RT.boundedLength(arglist, 20))
rlm@10 156 {
rlm@10 157 case 0:
rlm@10 158 arglist = null;
rlm@10 159 return ifn.invoke();
rlm@10 160 case 1:
rlm@10 161 Object a1 = arglist.first();
rlm@10 162 arglist = null;
rlm@10 163 return ifn.invoke(a1);
rlm@10 164 case 2:
rlm@10 165 return ifn.invoke(arglist.first()
rlm@10 166 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 167 );
rlm@10 168 case 3:
rlm@10 169 return ifn.invoke(arglist.first()
rlm@10 170 , (arglist = arglist.next()).first()
rlm@10 171 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 172 );
rlm@10 173 case 4:
rlm@10 174 return ifn.invoke(arglist.first()
rlm@10 175 , (arglist = arglist.next()).first()
rlm@10 176 , (arglist = arglist.next()).first()
rlm@10 177 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 178 );
rlm@10 179 case 5:
rlm@10 180 return ifn.invoke(arglist.first()
rlm@10 181 , (arglist = arglist.next()).first()
rlm@10 182 , (arglist = arglist.next()).first()
rlm@10 183 , (arglist = arglist.next()).first()
rlm@10 184 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 185 );
rlm@10 186 case 6:
rlm@10 187 return ifn.invoke(arglist.first()
rlm@10 188 , (arglist = arglist.next()).first()
rlm@10 189 , (arglist = arglist.next()).first()
rlm@10 190 , (arglist = arglist.next()).first()
rlm@10 191 , (arglist = arglist.next()).first()
rlm@10 192 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 193 );
rlm@10 194 case 7:
rlm@10 195 return ifn.invoke(arglist.first()
rlm@10 196 , (arglist = arglist.next()).first()
rlm@10 197 , (arglist = arglist.next()).first()
rlm@10 198 , (arglist = arglist.next()).first()
rlm@10 199 , (arglist = arglist.next()).first()
rlm@10 200 , (arglist = arglist.next()).first()
rlm@10 201 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 202 );
rlm@10 203 case 8:
rlm@10 204 return ifn.invoke(arglist.first()
rlm@10 205 , (arglist = arglist.next()).first()
rlm@10 206 , (arglist = arglist.next()).first()
rlm@10 207 , (arglist = arglist.next()).first()
rlm@10 208 , (arglist = arglist.next()).first()
rlm@10 209 , (arglist = arglist.next()).first()
rlm@10 210 , (arglist = arglist.next()).first()
rlm@10 211 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 212 );
rlm@10 213 case 9:
rlm@10 214 return ifn.invoke(arglist.first()
rlm@10 215 , (arglist = arglist.next()).first()
rlm@10 216 , (arglist = arglist.next()).first()
rlm@10 217 , (arglist = arglist.next()).first()
rlm@10 218 , (arglist = arglist.next()).first()
rlm@10 219 , (arglist = arglist.next()).first()
rlm@10 220 , (arglist = arglist.next()).first()
rlm@10 221 , (arglist = arglist.next()).first()
rlm@10 222 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 223 );
rlm@10 224 case 10:
rlm@10 225 return ifn.invoke(arglist.first()
rlm@10 226 , (arglist = arglist.next()).first()
rlm@10 227 , (arglist = arglist.next()).first()
rlm@10 228 , (arglist = arglist.next()).first()
rlm@10 229 , (arglist = arglist.next()).first()
rlm@10 230 , (arglist = arglist.next()).first()
rlm@10 231 , (arglist = arglist.next()).first()
rlm@10 232 , (arglist = arglist.next()).first()
rlm@10 233 , (arglist = arglist.next()).first()
rlm@10 234 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 235 );
rlm@10 236 case 11:
rlm@10 237 return ifn.invoke(arglist.first()
rlm@10 238 , (arglist = arglist.next()).first()
rlm@10 239 , (arglist = arglist.next()).first()
rlm@10 240 , (arglist = arglist.next()).first()
rlm@10 241 , (arglist = arglist.next()).first()
rlm@10 242 , (arglist = arglist.next()).first()
rlm@10 243 , (arglist = arglist.next()).first()
rlm@10 244 , (arglist = arglist.next()).first()
rlm@10 245 , (arglist = arglist.next()).first()
rlm@10 246 , (arglist = arglist.next()).first()
rlm@10 247 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 248 );
rlm@10 249 case 12:
rlm@10 250 return ifn.invoke(arglist.first()
rlm@10 251 , (arglist = arglist.next()).first()
rlm@10 252 , (arglist = arglist.next()).first()
rlm@10 253 , (arglist = arglist.next()).first()
rlm@10 254 , (arglist = arglist.next()).first()
rlm@10 255 , (arglist = arglist.next()).first()
rlm@10 256 , (arglist = arglist.next()).first()
rlm@10 257 , (arglist = arglist.next()).first()
rlm@10 258 , (arglist = arglist.next()).first()
rlm@10 259 , (arglist = arglist.next()).first()
rlm@10 260 , (arglist = arglist.next()).first()
rlm@10 261 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 262 );
rlm@10 263 case 13:
rlm@10 264 return ifn.invoke(arglist.first()
rlm@10 265 , (arglist = arglist.next()).first()
rlm@10 266 , (arglist = arglist.next()).first()
rlm@10 267 , (arglist = arglist.next()).first()
rlm@10 268 , (arglist = arglist.next()).first()
rlm@10 269 , (arglist = arglist.next()).first()
rlm@10 270 , (arglist = arglist.next()).first()
rlm@10 271 , (arglist = arglist.next()).first()
rlm@10 272 , (arglist = arglist.next()).first()
rlm@10 273 , (arglist = arglist.next()).first()
rlm@10 274 , (arglist = arglist.next()).first()
rlm@10 275 , (arglist = arglist.next()).first()
rlm@10 276 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 277 );
rlm@10 278 case 14:
rlm@10 279 return ifn.invoke(arglist.first()
rlm@10 280 , (arglist = arglist.next()).first()
rlm@10 281 , (arglist = arglist.next()).first()
rlm@10 282 , (arglist = arglist.next()).first()
rlm@10 283 , (arglist = arglist.next()).first()
rlm@10 284 , (arglist = arglist.next()).first()
rlm@10 285 , (arglist = arglist.next()).first()
rlm@10 286 , (arglist = arglist.next()).first()
rlm@10 287 , (arglist = arglist.next()).first()
rlm@10 288 , (arglist = arglist.next()).first()
rlm@10 289 , (arglist = arglist.next()).first()
rlm@10 290 , (arglist = arglist.next()).first()
rlm@10 291 , (arglist = arglist.next()).first()
rlm@10 292 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 293 );
rlm@10 294 case 15:
rlm@10 295 return ifn.invoke(arglist.first()
rlm@10 296 , (arglist = arglist.next()).first()
rlm@10 297 , (arglist = arglist.next()).first()
rlm@10 298 , (arglist = arglist.next()).first()
rlm@10 299 , (arglist = arglist.next()).first()
rlm@10 300 , (arglist = arglist.next()).first()
rlm@10 301 , (arglist = arglist.next()).first()
rlm@10 302 , (arglist = arglist.next()).first()
rlm@10 303 , (arglist = arglist.next()).first()
rlm@10 304 , (arglist = arglist.next()).first()
rlm@10 305 , (arglist = arglist.next()).first()
rlm@10 306 , (arglist = arglist.next()).first()
rlm@10 307 , (arglist = arglist.next()).first()
rlm@10 308 , (arglist = arglist.next()).first()
rlm@10 309 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 310 );
rlm@10 311 case 16:
rlm@10 312 return ifn.invoke(arglist.first()
rlm@10 313 , (arglist = arglist.next()).first()
rlm@10 314 , (arglist = arglist.next()).first()
rlm@10 315 , (arglist = arglist.next()).first()
rlm@10 316 , (arglist = arglist.next()).first()
rlm@10 317 , (arglist = arglist.next()).first()
rlm@10 318 , (arglist = arglist.next()).first()
rlm@10 319 , (arglist = arglist.next()).first()
rlm@10 320 , (arglist = arglist.next()).first()
rlm@10 321 , (arglist = arglist.next()).first()
rlm@10 322 , (arglist = arglist.next()).first()
rlm@10 323 , (arglist = arglist.next()).first()
rlm@10 324 , (arglist = arglist.next()).first()
rlm@10 325 , (arglist = arglist.next()).first()
rlm@10 326 , (arglist = arglist.next()).first()
rlm@10 327 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 328 );
rlm@10 329 case 17:
rlm@10 330 return ifn.invoke(arglist.first()
rlm@10 331 , (arglist = arglist.next()).first()
rlm@10 332 , (arglist = arglist.next()).first()
rlm@10 333 , (arglist = arglist.next()).first()
rlm@10 334 , (arglist = arglist.next()).first()
rlm@10 335 , (arglist = arglist.next()).first()
rlm@10 336 , (arglist = arglist.next()).first()
rlm@10 337 , (arglist = arglist.next()).first()
rlm@10 338 , (arglist = arglist.next()).first()
rlm@10 339 , (arglist = arglist.next()).first()
rlm@10 340 , (arglist = arglist.next()).first()
rlm@10 341 , (arglist = arglist.next()).first()
rlm@10 342 , (arglist = arglist.next()).first()
rlm@10 343 , (arglist = arglist.next()).first()
rlm@10 344 , (arglist = arglist.next()).first()
rlm@10 345 , (arglist = arglist.next()).first()
rlm@10 346 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 347 );
rlm@10 348 case 18:
rlm@10 349 return ifn.invoke(arglist.first()
rlm@10 350 , (arglist = arglist.next()).first()
rlm@10 351 , (arglist = arglist.next()).first()
rlm@10 352 , (arglist = arglist.next()).first()
rlm@10 353 , (arglist = arglist.next()).first()
rlm@10 354 , (arglist = arglist.next()).first()
rlm@10 355 , (arglist = arglist.next()).first()
rlm@10 356 , (arglist = arglist.next()).first()
rlm@10 357 , (arglist = arglist.next()).first()
rlm@10 358 , (arglist = arglist.next()).first()
rlm@10 359 , (arglist = arglist.next()).first()
rlm@10 360 , (arglist = arglist.next()).first()
rlm@10 361 , (arglist = arglist.next()).first()
rlm@10 362 , (arglist = arglist.next()).first()
rlm@10 363 , (arglist = arglist.next()).first()
rlm@10 364 , (arglist = arglist.next()).first()
rlm@10 365 , (arglist = arglist.next()).first()
rlm@10 366 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 367 );
rlm@10 368 case 19:
rlm@10 369 return ifn.invoke(arglist.first()
rlm@10 370 , (arglist = arglist.next()).first()
rlm@10 371 , (arglist = arglist.next()).first()
rlm@10 372 , (arglist = arglist.next()).first()
rlm@10 373 , (arglist = arglist.next()).first()
rlm@10 374 , (arglist = arglist.next()).first()
rlm@10 375 , (arglist = arglist.next()).first()
rlm@10 376 , (arglist = arglist.next()).first()
rlm@10 377 , (arglist = arglist.next()).first()
rlm@10 378 , (arglist = arglist.next()).first()
rlm@10 379 , (arglist = arglist.next()).first()
rlm@10 380 , (arglist = arglist.next()).first()
rlm@10 381 , (arglist = arglist.next()).first()
rlm@10 382 , (arglist = arglist.next()).first()
rlm@10 383 , (arglist = arglist.next()).first()
rlm@10 384 , (arglist = arglist.next()).first()
rlm@10 385 , (arglist = arglist.next()).first()
rlm@10 386 , (arglist = arglist.next()).first()
rlm@10 387 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 388 );
rlm@10 389 case 20:
rlm@10 390 return ifn.invoke(arglist.first()
rlm@10 391 , (arglist = arglist.next()).first()
rlm@10 392 , (arglist = arglist.next()).first()
rlm@10 393 , (arglist = arglist.next()).first()
rlm@10 394 , (arglist = arglist.next()).first()
rlm@10 395 , (arglist = arglist.next()).first()
rlm@10 396 , (arglist = arglist.next()).first()
rlm@10 397 , (arglist = arglist.next()).first()
rlm@10 398 , (arglist = arglist.next()).first()
rlm@10 399 , (arglist = arglist.next()).first()
rlm@10 400 , (arglist = arglist.next()).first()
rlm@10 401 , (arglist = arglist.next()).first()
rlm@10 402 , (arglist = arglist.next()).first()
rlm@10 403 , (arglist = arglist.next()).first()
rlm@10 404 , (arglist = arglist.next()).first()
rlm@10 405 , (arglist = arglist.next()).first()
rlm@10 406 , (arglist = arglist.next()).first()
rlm@10 407 , (arglist = arglist.next()).first()
rlm@10 408 , (arglist = arglist.next()).first()
rlm@10 409 , Util.ret1((arglist = arglist.next()).first(),arglist = null)
rlm@10 410 );
rlm@10 411 default:
rlm@10 412 return ifn.invoke(arglist.first()
rlm@10 413 , (arglist = arglist.next()).first()
rlm@10 414 , (arglist = arglist.next()).first()
rlm@10 415 , (arglist = arglist.next()).first()
rlm@10 416 , (arglist = arglist.next()).first()
rlm@10 417 , (arglist = arglist.next()).first()
rlm@10 418 , (arglist = arglist.next()).first()
rlm@10 419 , (arglist = arglist.next()).first()
rlm@10 420 , (arglist = arglist.next()).first()
rlm@10 421 , (arglist = arglist.next()).first()
rlm@10 422 , (arglist = arglist.next()).first()
rlm@10 423 , (arglist = arglist.next()).first()
rlm@10 424 , (arglist = arglist.next()).first()
rlm@10 425 , (arglist = arglist.next()).first()
rlm@10 426 , (arglist = arglist.next()).first()
rlm@10 427 , (arglist = arglist.next()).first()
rlm@10 428 , (arglist = arglist.next()).first()
rlm@10 429 , (arglist = arglist.next()).first()
rlm@10 430 , (arglist = arglist.next()).first()
rlm@10 431 , (arglist = arglist.next()).first()
rlm@10 432 , RT.seqToArray(Util.ret1(arglist.next(),arglist = null)));
rlm@10 433 }
rlm@10 434 }
rlm@10 435
rlm@10 436 public Object throwArity(int n){
rlm@10 437 String name = getClass().getSimpleName();
rlm@10 438 int suffix = name.lastIndexOf("__");
rlm@10 439 throw new IllegalArgumentException("Wrong number of args (" + n + ") passed to: "
rlm@10 440 + (suffix == -1 ? name : name.substring(0, suffix)).replace('_', '-'));
rlm@10 441 }
rlm@10 442 }