Changeset 12021


Ignore:
Timestamp:
06/24/09 19:10:06 (14 years ago)
Author:
astalla
Message:

Used javaObject.getInstance(x, true) instead of ad-hoc toLisp method which did
basically the same thing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/scripting/AbclScriptEngine.java

    r11894 r12021  
    228228    int i = 0;
    229229    for (Map.Entry<String, Object> entry : bindings.entrySet()) {
    230       argList[i++] = Symbol.CONS.execute(new SimpleString(entry.getKey()), toLisp(entry.getValue()));
     230      argList[i++] = Symbol.CONS.execute(new SimpleString(entry.getKey()),
     231                 JavaObject.getInstance(entry.getValue(), true));
    231232    }
    232233    return Symbol.LIST.getSymbolFunction().execute(argList);
     
    284285  }
    285286 
    286   public static LispObject toLisp(Object javaObject) {
    287     if(javaObject == null) {
    288             return Lisp.NIL;
    289     } else if(javaObject instanceof Boolean) {
    290             return ((Boolean)javaObject).booleanValue() ? Lisp.T : Lisp.NIL;
    291     } else if(javaObject instanceof Byte) {
    292             return Fixnum.getInstance(((Byte)javaObject).intValue());
    293     } else if(javaObject instanceof Integer) {
    294             return Fixnum.getInstance(((Integer)javaObject).intValue());
    295     } else if(javaObject instanceof Short) {
    296             return Fixnum.getInstance(((Short)javaObject).shortValue());
    297     } else if(javaObject instanceof Long) {
    298             return Bignum.getInstance((Long)javaObject);
    299     } else if(javaObject instanceof BigInteger) {
    300       return Bignum.getInstance((BigInteger) javaObject);
    301     } else if(javaObject instanceof Float) {
    302             return new SingleFloat(((Float)javaObject).floatValue());
    303     } else if(javaObject instanceof Double) {
    304             return new DoubleFloat(((Double)javaObject).doubleValue());
    305     } else if(javaObject instanceof String) {
    306             return new SimpleString((String)javaObject);
    307     } else if(javaObject instanceof Character) {
    308             return LispCharacter.getInstance((Character)javaObject);
    309     } else if(javaObject instanceof Object[]) {
    310             Object[] array = (Object[]) javaObject;
    311             SimpleVector v = new SimpleVector(array.length);
    312             for(int i = array.length; i > 0; --i) {
    313               try {
    314           v.aset(i, new JavaObject(array[i]));
    315         } catch (ConditionThrowable e) {
    316           throw new Error("Can't set SimpleVector index " + i, e);
    317         }
    318             }
    319             return v;
    320         } else if(javaObject instanceof LispObject) {
    321             return (LispObject) javaObject;
    322         } else {
    323           return new JavaObject(javaObject);
    324         }
    325   }
    326  
    327287  @Override
    328288  public <T> T getInterface(Class<T> clasz) {
     
    360320        LispObject functionAndArgs = Lisp.NIL.push(f);
    361321        for(int i = 0; i < args.length; ++i) {
    362       functionAndArgs = functionAndArgs.push(toLisp(args[i]));
     322      functionAndArgs = functionAndArgs.push(JavaObject.getInstance(args[i], true));
    363323        }
    364324        functionAndArgs = functionAndArgs.reverse();
Note: See TracChangeset for help on using the changeset viewer.