Changeset 4846


Ignore:
Timestamp:
11/19/03 23:04:52 (18 years ago)
Author:
asimon
Message:

MAKE-IMMEDIATE-OBJECT

File:
1 edited

Legend:

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

    r4816 r4846  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Java.java,v 1.24 2003-11-17 20:43:58 asimon Exp $
     5 * $Id: Java.java,v 1.25 2003-11-19 23:04:52 asimon Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    112112                            } else {
    113113                                // Case 3.
    114                               f.set(null,args[2].javaInstance());
    115                               return args[2];
     114                                f.set(null,args[2].javaInstance());
     115                                return args[2];
    116116                            }
    117117                        } else {
     
    184184            }
    185185            catch (ClassNotFoundException e) {
    186               throw new ConditionThrowable(new LispError("class not found: " + e.getMessage()));
     186                throw new ConditionThrowable(new LispError("class not found: " + e.getMessage()));
    187187            }
    188188            catch (NoSuchMethodException e) {
     
    190190            }
    191191            catch (ConditionThrowable e) {
    192               throw e;
     192                throw e;
    193193            }
    194194            catch (Throwable t) {
     
    218218                    }
    219219                    return new JavaObject(c.getMethod(methodName,
    220                         parameterTypes));
     220                                                      parameterTypes));
    221221                }
    222222                // Parameter types not explicitly specified.
     
    231231            }
    232232            catch (ClassNotFoundException e) {
    233               throw new ConditionThrowable(new LispError("class not found: " + e.getMessage()));
     233                throw new ConditionThrowable(new LispError("class not found: " + e.getMessage()));
    234234            }
    235235            catch (NoSuchMethodException e) {
     
    237237            }
    238238            catch (ConditionThrowable e) {
    239               throw e;
     239                throw e;
    240240            }
    241241            catch (Throwable t) {
     
    281281                Object[] methodArgs = new Object[args.length-2];
    282282                for (int i = 2; i < args.length; i++) {
    283                   methodArgs[i-2] = args[i].javaInstance();
     283                    methodArgs[i-2] = args[i].javaInstance();
    284284                }
    285285                Object result = m.invoke(null, methodArgs);
     
    339339            catch (Throwable t) {
    340340                throw new ConditionThrowable(new LispError(getMessage(t)));
     341            }
     342        }
     343    };
     344
     345    // ### make-immediate-object
     346    // make-immediate-object object &optional type
     347    private static final Primitive MAKE_IMMEDIATE_OBJECT = new Primitive("make-immediate-object", PACKAGE_JAVA, true)
     348    {
     349        public LispObject execute(LispObject[] args) throws ConditionThrowable
     350        {
     351            if (args.length < 1)
     352                throw new ConditionThrowable(new WrongNumberOfArgumentsException(this));
     353            LispObject object = args[0];
     354            try {
     355                if (args.length > 1) {
     356                    LispObject type = args[1];
     357                    if (type == Keyword.BOOLEAN) {
     358                        if (object == NIL)
     359                            return new JavaObject(Boolean.FALSE);
     360                        else
     361                            return new JavaObject(Boolean.TRUE);
     362                    }
     363                    // other special cases come here
     364                }
     365                return new JavaObject(object.javaInstance());
     366            }
     367            catch (Throwable t) {
     368                throw new ConditionThrowable(new LispError("MAKE-IMMEDIATE-OBJECT: not implemented"));
    341369            }
    342370        }
     
    412440                if (method != null) {
    413441                    Throwable cause = (Throwable) method.invoke(t,
    414                         new Object[0]);
     442                                                                new Object[0]);
    415443                    if (cause != null)
    416444                        t = cause;
Note: See TracChangeset for help on using the changeset viewer.