Changeset 3591


Ignore:
Timestamp:
09/06/03 17:15:32 (19 years ago)
Author:
piso
Message:

LOGAND: 2-arg case.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Primitives.java

    r3578 r3591  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.372 2003-09-04 14:41:45 piso Exp $
     5 * $Id: Primitives.java,v 1.373 2003-09-06 17:15:32 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    43304330    // logand &rest integers => result-integer
    43314331    private static final Primitive LOGAND = new Primitive("logand") {
     4332        public LispObject execute(LispObject first, LispObject second)
     4333            throws LispError
     4334        {
     4335            if (first instanceof Fixnum && second instanceof Fixnum) {
     4336                return new Fixnum(((Fixnum)first).getValue() &
     4337                                  ((Fixnum)second).getValue());
     4338            } else {
     4339                BigInteger n1, n2;
     4340                if (first instanceof Fixnum)
     4341                    n1 = ((Fixnum)first).getBigInteger();
     4342                else if (first instanceof Bignum)
     4343                    n1 = ((Bignum)first).getValue();
     4344                else
     4345                    throw new TypeError(first, "integer");
     4346                if (second instanceof Fixnum)
     4347                    n2 = ((Fixnum)second).getBigInteger();
     4348                else if (second instanceof Bignum)
     4349                    n2 = ((Bignum)second).getValue();
     4350                else
     4351                    throw new TypeError(second, "integer");
     4352                return number(n1.and(n2));
     4353            }
     4354        }
    43324355        public LispObject execute(LispObject[] args) throws LispError
    43334356        {
Note: See TracChangeset for help on using the changeset viewer.