Changeset 4780


Ignore:
Timestamp:
11/16/03 15:03:45 (18 years ago)
Author:
piso
Message:

VALUES

File:
1 edited

Legend:

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

    r4760 r4780  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.497 2003-11-15 00:50:13 piso Exp $
     5 * $Id: Primitives.java,v 1.498 2003-11-16 15:03:45 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    3535    private static final int MIN                        = 3;
    3636    private static final int MULTIPLY                   = 4;
    37     private static final int VALUES                     = 5;
    3837
    3938    // Primitive1
    40     private static final int ABS                        = 6;
    41     private static final int ARRAYP                     = 7;
    42     private static final int ARRAY_HAS_FILL_POINTER_P   = 8;
    43     private static final int BIT_VECTOR_P               = 9;
    44     private static final int BOTH_CASE_P                = 10;
    45     private static final int CHARACTERP                 = 11;
    46     private static final int CHAR_CODE                  = 12;
    47     private static final int CHAR_DOWNCASE              = 13;
    48     private static final int CHAR_INT                   = 14;
    49     private static final int CHAR_UPCASE                = 15;
    50     private static final int CODE_CHAR                  = 16;
    51     private static final int COMPILED_FUNCTION_P        = 17;
    52     private static final int CONSP                      = 18;
    53     private static final int EVAL                       = 19;
    54     private static final int EVENP                      = 20;
    55     private static final int FOURTH                     = 21;
    56     private static final int IDENTITY                   = 22;
    57     private static final int KEYWORDP                   = 23;
    58     private static final int LENGTH                     = 24;
    59     private static final int LISTP                      = 25;
    60     private static final int LOWER_CASE_P               = 26;
    61     private static final int MAKE_SYMBOL                = 27;
    62     private static final int MAKUNBOUND                 = 28;
    63     private static final int NUMBERP                    = 29;
    64     private static final int ODDP                       = 30;
    65     private static final int PREDECESSOR                = 31;
    66     private static final int SECOND                     = 32;
    67     private static final int SIMPLE_BIT_VECTOR_P        = 33;
    68     private static final int SIMPLE_STRING_P            = 34;
    69     private static final int SIMPLE_VECTOR_P            = 35;
    70     private static final int SPECIAL_OPERATOR_P         = 36;
    71     private static final int STRINGP                    = 37;
    72     private static final int SUCCESSOR                  = 38;
    73     private static final int SYMBOL_FUNCTION            = 39;
    74     private static final int SYMBOL_NAME                = 40;
    75     private static final int SYMBOL_PACKAGE             = 41;
    76     private static final int SYMBOL_PLIST               = 42;
    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;
     39    private static final int ABS                        = 5;
     40    private static final int ARRAYP                     = 6;
     41    private static final int ARRAY_HAS_FILL_POINTER_P   = 7;
     42    private static final int BIT_VECTOR_P               = 8;
     43    private static final int BOTH_CASE_P                = 9;
     44    private static final int CHARACTERP                 = 10;
     45    private static final int CHAR_CODE                  = 11;
     46    private static final int CHAR_DOWNCASE              = 12;
     47    private static final int CHAR_INT                   = 13;
     48    private static final int CHAR_UPCASE                = 14;
     49    private static final int CODE_CHAR                  = 15;
     50    private static final int COMPILED_FUNCTION_P        = 16;
     51    private static final int CONSP                      = 17;
     52    private static final int EVAL                       = 18;
     53    private static final int EVENP                      = 19;
     54    private static final int FOURTH                     = 20;
     55    private static final int IDENTITY                   = 21;
     56    private static final int KEYWORDP                   = 22;
     57    private static final int LENGTH                     = 23;
     58    private static final int LISTP                      = 24;
     59    private static final int LOWER_CASE_P               = 25;
     60    private static final int MAKE_SYMBOL                = 26;
     61    private static final int MAKUNBOUND                 = 27;
     62    private static final int NUMBERP                    = 28;
     63    private static final int ODDP                       = 29;
     64    private static final int PREDECESSOR                = 30;
     65    private static final int SECOND                     = 31;
     66    private static final int SIMPLE_BIT_VECTOR_P        = 32;
     67    private static final int SIMPLE_STRING_P            = 33;
     68    private static final int SIMPLE_VECTOR_P            = 34;
     69    private static final int SPECIAL_OPERATOR_P         = 35;
     70    private static final int STRINGP                    = 36;
     71    private static final int SUCCESSOR                  = 37;
     72    private static final int SYMBOL_FUNCTION            = 38;
     73    private static final int SYMBOL_NAME                = 39;
     74    private static final int SYMBOL_PACKAGE             = 40;
     75    private static final int SYMBOL_PLIST               = 41;
     76    private static final int THIRD                      = 42;
     77    private static final int UPPER_CASE_P               = 43;
     78    private static final int VALUES_LIST                = 44;
     79    private static final int VECTORP                    = 45;
    8180
    8281    // Primitive2
    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;
     82    private static final int MEMBER                     = 46;
     83    private static final int RPLACA                     = 47;
     84    private static final int RPLACD                     = 48;
     85    private static final int SET                        = 49;
    8786
    8887    private Primitives()
     
    9291        definePrimitive("max", MAX);
    9392        definePrimitive("min", MIN);
    94         definePrimitive("values", VALUES);
    9593
    9694        definePrimitive1("1+", SUCCESSOR);
     
    187185                return result;
    188186            }
    189             case VALUES:                        // ### values
    190                 return values(args);
    191187            default:
    192188                Debug.trace("bad index " + index);
     
    380376        {
    381377            return first.equalp(second) ? T : NIL;
     378        }
     379    };
     380
     381    // ### values
     382    private static final Primitive VALUES = new Primitive("values")
     383    {
     384        public LispObject execute()
     385        {
     386            return LispThread.currentThread().setValues();
     387        }
     388        public LispObject execute(LispObject arg)
     389        {
     390            return LispThread.currentThread().setValues(arg);
     391        }
     392        public LispObject execute(LispObject first, LispObject second)
     393        {
     394            return LispThread.currentThread().setValues(first, second);
     395        }
     396        public LispObject execute(LispObject first, LispObject second,
     397                                  LispObject third)
     398        {
     399            return LispThread.currentThread().setValues(first, second, third);
     400        }
     401        public LispObject execute(LispObject[] args)
     402        {
     403            return LispThread.currentThread().setValues(args);
    382404        }
    383405    };
     
    31583180                }
    31593181            }
    3160             thread.setValues(values);
     3182            if (values != null)
     3183                thread.setValues(values);
     3184            else
     3185                thread.clearValues();
    31613186            return result;
    31623187        }
     
    32323257            while ((args = args.cdr()) != NIL)
    32333258                eval(args.car(), env, thread);
    3234             thread.setValues(values);
     3259            if (values != null)
     3260                thread.setValues(values);
     3261            else
     3262                thread.clearValues();
    32353263            return result;
    32363264        }
Note: See TracChangeset for help on using the changeset viewer.