Changeset 12021
- Timestamp:
- 06/24/09 19:10:06 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/scripting/AbclScriptEngine.java
r11894 r12021 228 228 int i = 0; 229 229 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)); 231 232 } 232 233 return Symbol.LIST.getSymbolFunction().execute(argList); … … 284 285 } 285 286 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 327 287 @Override 328 288 public <T> T getInterface(Class<T> clasz) { … … 360 320 LispObject functionAndArgs = Lisp.NIL.push(f); 361 321 for(int i = 0; i < args.length; ++i) { 362 functionAndArgs = functionAndArgs.push( toLisp(args[i]));322 functionAndArgs = functionAndArgs.push(JavaObject.getInstance(args[i], true)); 363 323 } 364 324 functionAndArgs = functionAndArgs.reverse();
Note: See TracChangeset
for help on using the changeset viewer.