Changeset 4543


Ignore:
Timestamp:
10/25/03 21:56:29 (18 years ago)
Author:
piso
Message:

SYMBOL-VALUE: symbol macro support.

File:
1 edited

Legend:

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

    r4532 r4543  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.483 2003-10-25 18:55:08 dmcnaught Exp $
     5 * $Id: Primitives.java,v 1.484 2003-10-25 21:56:29 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    7575    private static final int SYMBOL_PACKAGE             = 41;
    7676    private static final int SYMBOL_PLIST               = 42;
    77     private static final int SYMBOL_VALUE               = 43;
    78     private static final int THIRD                      = 44;
    79     private static final int UPPER_CASE_P               = 45;
    80     private static final int VALUES_LIST                = 46;
    81     private static final int VECTORP                    = 47;
     77    private static final int THIRD                      = 43;
     78    private static final int UPPER_CASE_P               = 44;
     79    private static final int VALUES_LIST                = 45;
     80    private static final int VECTORP                    = 46;
    8281
    8382    // Primitive2
    84     private static final int MEMBER                     = 48;
    85     private static final int RPLACA                     = 49;
    86     private static final int RPLACD                     = 50;
    87     private static final int SET                        = 51;
     83    private static final int MEMBER                     = 47;
     84    private static final int RPLACA                     = 48;
     85    private static final int RPLACD                     = 49;
     86    private static final int SET                        = 50;
    8887
    8988    private Primitives()
     
    132131        definePrimitive1("symbol-package", SYMBOL_PACKAGE);
    133132        definePrimitive1("symbol-plist", SYMBOL_PLIST);
    134         definePrimitive1("symbol-value", SYMBOL_VALUE);
    135133        definePrimitive1("third", THIRD);
    136134        definePrimitive1("upper-case-p", UPPER_CASE_P);
     
    243241            case SYMBOL_PACKAGE:                // ### symbol-package
    244242                return checkSymbol(arg).getPackage();
    245             case SYMBOL_VALUE:                  // ### symbol-value
    246                 if (arg == T)
    247                     return T;
    248                 if (arg == NIL)
    249                     return NIL;
    250                 return checkSymbol(arg).symbolValue();
    251243            case SYMBOL_FUNCTION: {             // ### symbol-function
    252244                LispObject function = arg.getSymbolFunction();
     
    503495    };
    504496
     497    // ### symbol-value
     498    private static final Primitive1 SYMBOL_VALUE = new Primitive1("symbol-value")
     499    {
     500        public LispObject execute(LispObject arg) throws ConditionThrowable
     501        {
     502            if (arg == T)
     503                return T;
     504            if (arg == NIL)
     505                return NIL;
     506            LispObject value = checkSymbol(arg).symbolValue();
     507            if (value instanceof SymbolMacro)
     508                throw new ConditionThrowable(new LispError(arg + " has no dynamic value"));
     509            return value;
     510        }
     511    };
     512
    505513    // ### +
    506     private static final Primitive ADD = new Primitive("+") {
     514    private static final Primitive ADD = new Primitive("+")
     515    {
    507516        public LispObject execute(LispObject first, LispObject second)
    508517            throws ConditionThrowable
     
    521530
    522531    // ### -
    523     private static final Primitive SUBTRACT = new Primitive("-") {
     532    private static final Primitive SUBTRACT = new Primitive("-")
     533    {
    524534        public LispObject execute(LispObject first, LispObject second)
    525535            throws ConditionThrowable
     
    45224532                abs = (LispFloat)((Complex)obj).ABS();
    45234533                return Complex.getInstance(new LispFloat(Math.log(abs.getValue())), phase);
    4524             }           
    4525         }
    4526            
     4534            }
     4535        }
     4536
    45274537        throw new ConditionThrowable(new TypeError(obj, "number"));
    45284538    }
Note: See TracChangeset for help on using the changeset viewer.