1 21 22 package org.armedbear.lisp; 23 24 import java.math.BigInteger ; 25 26 public final class logorc2 extends Primitive2 30 { 31 private logorc2() 32 { 33 super("logorc2", "integer-1 integer-2"); 34 } 35 36 public LispObject execute(LispObject first, LispObject second) 37 throws ConditionThrowable 38 { 39 if (first instanceof Fixnum) { 40 if (second instanceof Fixnum) 41 return new Fixnum(((Fixnum)first).value | 42 ~((Fixnum)second).value); 43 if (second instanceof Bignum) { 44 BigInteger n1 = ((Fixnum)first).getBigInteger(); 45 BigInteger n2 = ((Bignum)second).value; 46 return number(n1.or(n2.not())); 47 } 48 return signal(new TypeError(second, Symbol.INTEGER)); 49 } 50 if (first instanceof Bignum) { 51 BigInteger n1 = ((Bignum)first).value; 52 if (second instanceof Fixnum) { 53 BigInteger n2 = ((Fixnum)second).getBigInteger(); 54 return number(n1.or(n2.not())); 55 } 56 if (second instanceof Bignum) { 57 BigInteger n2 = ((Bignum)second).value; 58 return number(n1.or(n2.not())); 59 } 60 return signal(new TypeError(second, Symbol.INTEGER)); 61 } 62 return signal(new TypeError(first, Symbol.INTEGER)); 63 } 64 65 private static final Primitive2 LOGORC2 = new logorc2(); 66 } 67 | Popular Tags |