Changeset 5156


Ignore:
Timestamp:
12/16/03 00:35:00 (17 years ago)
Author:
piso
Message:

typeOf(), classOf(), typep(), toString()
GET-MACRO-DISPATCH-CHARACTER
SET-MACRO-DISPATCH-CHARACTER

File:
1 edited

Legend:

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

    r1163 r5156  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: Readtable.java,v 1.1 2003-03-09 17:31:15 piso Exp $
     5 * $Id: Readtable.java,v 1.2 2003-12-16 00:35:00 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    3030    public Readtable()
    3131    {
     32    }
     33
     34    public LispObject typeOf()
     35    {
     36        return Symbol.READTABLE;
     37    }
     38
     39    public LispClass classOf()
     40    {
     41        return BuiltInClass.READTABLE;
     42    }
     43
     44    public LispObject typep(LispObject type) throws ConditionThrowable
     45    {
     46        if (type == Symbol.READTABLE)
     47            return T;
     48        if (type == BuiltInClass.READTABLE)
     49            return T;
     50        return super.typep(type);
     51    }
     52
     53    public String toString()
     54    {
     55        return unreadableString("READTABLE");
    3256    }
    3357
     
    7599        }
    76100    }
     101
     102    // ### get-dispatch-macro-character
     103    // get-dispatch-macro-character disp-char sub-char &optional readtable
     104    // => function
     105    private static final Primitive GET_DISPATCH_MACRO_CHARACTER =
     106        new Primitive("get-dispatch-macro-character", "disp-char sub-char &optional readtable")
     107    {
     108        public LispObject execute(LispObject[] args) throws ConditionThrowable
     109        {
     110            if (args.length < 2 || args.length > 3)
     111                signal(new WrongNumberOfArgumentsException(this));
     112            char dispChar = LispCharacter.getValue(args[0]);
     113            char subChar = LispCharacter.getValue(args[1]);
     114            Readtable readtable;
     115            if (args.length == 3)
     116                readtable = checkReadtable(args[2]);
     117            else
     118                readtable = getCurrentReadtable();
     119            return readtable.getDispatchMacroCharacter(dispChar, subChar);
     120        }
     121    };
     122
     123    // ### set-dispatch-macro-character
     124    // set-dispatch-macro-character disp-char sub-char new-function &optional readtable
     125    // => t
     126    private static final Primitive SET_DISPATCH_MACRO_CHARACTER =
     127        new Primitive("set-dispatch-macro-character", "disp-char sub-char new-function &optional readtable")
     128    {
     129        public LispObject execute(LispObject[] args) throws ConditionThrowable
     130        {
     131            if (args.length < 3 || args.length > 4)
     132                signal(new WrongNumberOfArgumentsException(this));
     133            char dispChar = LispCharacter.getValue(args[0]);
     134            char subChar = LispCharacter.getValue(args[1]);
     135            LispObject function = args[2];
     136            Readtable readtable;
     137            if (args.length == 4)
     138                readtable = checkReadtable(args[3]);
     139            else
     140                readtable = getCurrentReadtable();
     141            return readtable.setDispatchMacroCharacter(dispChar, subChar, function);
     142        }
     143    };
    77144}
Note: See TracChangeset for help on using the changeset viewer.