1 21 22 package org.armedbear.lisp; 23 24 import java.net.Socket ; 25 26 public final class Extensions extends Lisp 27 { 28 private static final Primitive2 NEQ = 30 new Primitive2("neq", PACKAGE_EXT, true) 31 { 32 public LispObject execute(LispObject first, LispObject second) 33 throws ConditionThrowable 34 { 35 return first != second ? T : NIL; 36 } 37 }; 38 39 private static final Primitive2 MEMQ = 41 new Primitive2("memq", PACKAGE_EXT, true) 42 { 43 public LispObject execute(LispObject item, LispObject list) 44 throws ConditionThrowable 45 { 46 LispObject tail = checkList(list); 47 while (tail != NIL) { 48 if (item == tail.car()) 49 return tail; 50 tail = tail.cdr(); 51 } 52 return NIL; 53 } 54 }; 55 56 private static final Primitive2 MEMQL = 58 new Primitive2("memql", PACKAGE_EXT, true) 59 { 60 public LispObject execute(LispObject item, LispObject list) 61 throws ConditionThrowable 62 { 63 LispObject tail = checkList(list); 64 while (tail != NIL) { 65 if (item.eql(tail.car())) 66 return tail; 67 tail = tail.cdr(); 68 } 69 return NIL; 70 } 71 }; 72 73 private static final Primitive1 SPECIAL_VARIABLE_P = 75 new Primitive1("special-variable-p", PACKAGE_EXT, true) 76 { 77 public LispObject execute(LispObject arg) throws ConditionThrowable 78 { 79 return arg.isSpecialVariable() ? T : NIL; 80 } 81 }; 82 83 private static final Primitive1 CHARPOS = 86 new Primitive1("charpos", PACKAGE_EXT, true) 87 { 88 public LispObject execute(LispObject arg) throws ConditionThrowable 89 { 90 Stream stream = checkCharacterOutputStream(arg); 91 return new Fixnum(stream.getCharPos()); 92 } 93 }; 94 95 private static final Primitive2 _SET_CHARPOS = 98 new Primitive2("%set-charpos", PACKAGE_SYS, false) 99 { 100 public LispObject execute(LispObject first, LispObject second) 101 throws ConditionThrowable 102 { 103 Stream stream = checkCharacterOutputStream(first); 104 stream.setCharPos(Fixnum.getValue(second)); 105 return second; 106 } 107 }; 108 109 private static final Primitive1 SOURCE = 111 new Primitive1("source", PACKAGE_EXT, true) 112 { 113 public LispObject execute(LispObject arg) throws ConditionThrowable 114 { 115 return get(checkSymbol(arg), Symbol._SOURCE, NIL); 116 } 117 }; 118 119 private static final Primitive1 SOURCE_FILE_POSITION = 121 new Primitive1("source-file-position", PACKAGE_EXT, true) 122 { 123 public LispObject execute(LispObject arg) throws ConditionThrowable 124 { 125 LispObject obj = get(checkSymbol(arg), Symbol._SOURCE, NIL); 126 if (obj instanceof Cons) 127 return obj.cdr(); 128 return NIL; 129 } 130 }; 131 132 private static final Primitive1 SOURCE_PATHNAME = 134 new Primitive1("source-pathname", PACKAGE_EXT, true) 135 { 136 public LispObject execute(LispObject arg) throws ConditionThrowable 137 { 138 LispObject obj = get(checkSymbol(arg), Symbol._SOURCE, NIL); 139 if (obj instanceof Cons) 140 return obj.car(); 141 if (obj instanceof Pathname) 142 return obj; 143 return NIL; 144 } 145 }; 146 147 private static final Primitive0 EXIT = 149 new Primitive0("exit", PACKAGE_EXT, true) 150 { 151 public LispObject execute() throws ConditionThrowable 152 { 153 exit(); 154 return LispThread.currentThread().nothing(); 155 } 156 }; 157 158 private static final Primitive0 QUIT = 160 new Primitive0("quit", PACKAGE_EXT, true) 161 { 162 public LispObject execute() throws ConditionThrowable 163 { 164 exit(); 165 return LispThread.currentThread().nothing(); 166 } 167 }; 168 } 169 | Popular Tags |