Changeset 5008


Ignore:
Timestamp:
12/07/03 18:40:22 (17 years ago)
Author:
piso
Message:

KEYWORDP, MAKE-SYMBOL, MAKUNBOUND => Symbol.java

Location:
trunk/j/src/org/armedbear/lisp
Files:
2 edited

Legend:

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

    r5007 r5008  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.514 2003-12-07 18:31:00 piso Exp $
     5 * $Id: Primitives.java,v 1.515 2003-12-07 18:40:22 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    5252    private static final int EVAL                       = 18;
    5353    private static final int IDENTITY                   = 19;
    54     private static final int KEYWORDP                   = 20;
    55     private static final int LISTP                      = 21;
    56     private static final int LOWER_CASE_P               = 22;
    57     private static final int MAKE_SYMBOL                = 23;
    58     private static final int MAKUNBOUND                 = 24;
    59     private static final int SIMPLE_BIT_VECTOR_P        = 25;
    60     private static final int SIMPLE_VECTOR_P            = 26;
    61     private static final int UPPER_CASE_P               = 27;
    62     private static final int VECTORP                    = 28;
     54    private static final int LISTP                      = 20;
     55    private static final int LOWER_CASE_P               = 21;
     56    private static final int SIMPLE_BIT_VECTOR_P        = 22;
     57    private static final int SIMPLE_VECTOR_P            = 23;
     58    private static final int UPPER_CASE_P               = 24;
     59    private static final int VECTORP                    = 25;
    6360
    6461    private Primitives()
     
    8481        definePrimitive1("eval", EVAL);
    8582        definePrimitive1("identity", IDENTITY);
    86         definePrimitive1("keywordp", KEYWORDP);
    8783        definePrimitive1("listp", LISTP);
    8884        definePrimitive1("lower-case-p", LOWER_CASE_P);
    89         definePrimitive1("make-symbol", MAKE_SYMBOL);
    90         definePrimitive1("makunbound", MAKUNBOUND);
    9185        definePrimitive1("simple-bit-vector-p", SIMPLE_BIT_VECTOR_P);
    9286        definePrimitive1("simple-vector-p", SIMPLE_VECTOR_P);
     
    155149            case COMPILED_FUNCTION_P:           // ### compiled-function-p
    156150                return arg.typep(Symbol.COMPILED_FUNCTION);
    157             case KEYWORDP:                      // ### keywordp
    158                 if (arg instanceof Symbol) {
    159                     if (((Symbol)arg).getPackage() == PACKAGE_KEYWORD)
    160                         return T;
    161                 }
    162                 return NIL;
    163151            case CONSP:                         // ### consp
    164152                return arg instanceof Cons ? T : NIL;
    165153            case LISTP:                         // ### listp
    166154                return arg.LISTP();
    167             case MAKE_SYMBOL:                   // ### make-symbol
    168                 return new Symbol(LispString.getValue(arg));
    169             case MAKUNBOUND:                    // ### makunbound
    170                 checkSymbol(arg).setSymbolValue(null);
    171                 return arg;
    172155            case ABS:                           // ### abs
    173156                return arg.ABS();
  • trunk/j/src/org/armedbear/lisp/Symbol.java

    r5006 r5008  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Symbol.java,v 1.94 2003-12-07 18:12:10 piso Exp $
     5 * $Id: Symbol.java,v 1.95 2003-12-07 18:39:57 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    509509        }
    510510    };
     511
     512    public static final Primitive1 KEYWORDP = new Primitive1("keywordp")
     513    {
     514        public LispObject execute(LispObject arg) throws ConditionThrowable
     515        {
     516            if (arg instanceof Symbol) {
     517                if (((Symbol)arg).pkg == PACKAGE_KEYWORD)
     518                    return T;
     519            }
     520            return NIL;
     521        }
     522    };
     523
     524    public static final Primitive1 MAKE_SYMBOL = new Primitive1("make-symbol")
     525    {
     526        public LispObject execute(LispObject arg) throws ConditionThrowable
     527        {
     528            return new Symbol(LispString.getValue(arg));
     529        }
     530    };
     531
     532    public static final Primitive1 MAKUNBOUND = new Primitive1("makunbound")
     533    {
     534        public LispObject execute(LispObject arg) throws ConditionThrowable
     535        {
     536            try {
     537                ((Symbol)arg).value = null;
     538                return arg;
     539            }
     540            catch (ClassCastException e) {
     541                throw new ConditionThrowable(new TypeError(arg, "symbol"));
     542            }
     543        }
     544    };
     545
    511546}
     547
Note: See TracChangeset for help on using the changeset viewer.