Changeset 13871
- Timestamp:
- 02/11/12 22:28:11 (11 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/FuncallableStandardClass.java
r13870 r13871 1 1 /* 2 * Standard GenericFunctionClass.java2 * StandardClass.java 3 3 * 4 * Copyright (C) 200 5 Peter Graves4 * Copyright (C) 2003-2005 Peter Graves 5 5 * $Id$ 6 6 * … … 36 36 import static org.armedbear.lisp.Lisp.*; 37 37 38 public final class StandardGenericFunctionClass extends StandardClass38 public class FuncallableStandardClass extends StandardClass 39 39 { 40 public static final int SLOT_INDEX_NAME = 0;41 public static final int SLOT_INDEX_LAMBDA_LIST = 1;42 public static final int SLOT_INDEX_REQUIRED_ARGS = 2;43 public static final int SLOT_INDEX_OPTIONAL_ARGS = 3;44 public static final int SLOT_INDEX_INITIAL_METHODS = 4;45 public static final int SLOT_INDEX_METHODS = 5;46 public static final int SLOT_INDEX_METHOD_CLASS = 6;47 public static final int SLOT_INDEX_METHOD_COMBINATION = 7;48 public static final int SLOT_INDEX_ARGUMENT_PRECEDENCE_ORDER = 8;49 public static final int SLOT_INDEX_CLASSES_TO_EMF_TABLE = 9;50 public static final int SLOT_INDEX_DOCUMENTATION = 10;51 40 52 public StandardGenericFunctionClass()41 public FuncallableStandardClass() 53 42 { 54 super(Symbol.STANDARD_GENERIC_FUNCTION, 55 list(StandardClass.GENERIC_FUNCTION)); 56 Package pkg = PACKAGE_SYS; 57 LispObject[] instanceSlotNames = 58 { 59 pkg.intern("NAME"), 60 pkg.intern("LAMBDA-LIST"), 61 pkg.intern("REQUIRED-ARGS"), 62 pkg.intern("OPTIONAL-ARGS"), 63 pkg.intern("INITIAL-METHODS"), 64 pkg.intern("METHODS"), 65 pkg.intern("METHOD-CLASS"), 66 pkg.intern("METHOD-COMBINATION"), 67 pkg.intern("ARGUMENT-PRECEDENCE-ORDER"), 68 pkg.intern("CLASSES-TO-EMF-TABLE"), 69 Symbol.DOCUMENTATION 70 }; 71 setClassLayout(new Layout(this, instanceSlotNames, NIL)); 72 setFinalized(true); 43 super(StandardClass.layoutFuncallableStandardClass); 44 } 45 46 public FuncallableStandardClass(Symbol symbol, LispObject directSuperclasses) 47 { 48 super(StandardClass.layoutFuncallableStandardClass, 49 symbol, directSuperclasses); 73 50 } 74 51 75 52 @Override 53 public LispObject typeOf() 54 { 55 return Symbol.FUNCALLABLE_STANDARD_CLASS; 56 } 57 58 @Override 59 public LispObject classOf() 60 { 61 return StandardClass.FUNCALLABLE_STANDARD_CLASS; 62 } 63 64 @Override 65 public LispObject typep(LispObject type) 66 { 67 if (type == Symbol.FUNCALLABLE_STANDARD_CLASS) 68 return T; 69 if (type == StandardClass.FUNCALLABLE_STANDARD_CLASS) 70 return T; 71 return super.typep(type); 72 } 73 76 74 public LispObject allocateInstance() 77 75 { 78 return new StandardGenericFunction(); 76 Layout layout = getClassLayout(); 77 if (layout == null) 78 { 79 Symbol.ERROR.execute(Symbol.SIMPLE_ERROR, 80 Keyword.FORMAT_CONTROL, 81 new SimpleString("No layout for class ~S."), 82 Keyword.FORMAT_ARGUMENTS, 83 list(this)); 84 } 85 return new FuncallableStandardObject(this, layout.getLength()); 86 } 87 88 @Override 89 public String printObject() 90 { 91 StringBuilder sb = 92 new StringBuilder(Symbol.FUNCALLABLE_STANDARD_CLASS.printObject()); 93 if (getName() != null) 94 { 95 sb.append(' '); 96 sb.append(getName().printObject()); 97 } 98 return unreadableString(sb.toString()); 79 99 } 80 100 } -
trunk/abcl/src/org/armedbear/lisp/StandardClass.java
r13839 r13871 94 94 }; 95 95 96 static Layout layoutFuncallableStandardClass = 97 new Layout(null, 98 list(symName, 99 symLayout, 100 symDirectSuperclasses, 101 symDirectSubclasses, 102 symPrecedenceList, 103 symDirectMethods, 104 symDirectSlots, 105 symSlots, 106 symDirectDefaultInitargs, 107 symDefaultInitargs, 108 symFinalizedP, 109 Symbol.DOCUMENTATION), 110 NIL) 111 { 112 @Override 113 public LispClass getLispClass() 114 { 115 return FUNCALLABLE_STANDARD_CLASS; 116 } 117 }; 118 119 120 96 121 public StandardClass() 97 122 { … … 124 149 setDefaultInitargs(NIL); 125 150 setFinalized(false); 151 } 152 153 public StandardClass(Layout layout) 154 { 155 super(layout); 156 setDirectSuperclasses(NIL); 157 setDirectSubclasses(NIL); 158 setClassLayout(layout); 159 setCPL(NIL); 160 setDirectMethods(NIL); 161 setDocumentation(NIL); 162 setDirectSlotDefinitions(NIL); 163 setSlotDefinitions(NIL); 164 setDirectDefaultInitargs(NIL); 165 setDefaultInitargs(NIL); 166 setFinalized(false); 167 } 168 169 public StandardClass(Layout layout, Symbol symbol, LispObject directSuperclasses) 170 { 171 super(layout, symbol, directSuperclasses); 172 setDirectSubclasses(NIL); 173 setClassLayout(layout); 174 setCPL(NIL); 175 setDirectMethods(NIL); 176 setDocumentation(NIL); 177 setDirectSlotDefinitions(NIL); 178 setSlotDefinitions(NIL); 179 setDirectDefaultInitargs(NIL); 180 setDefaultInitargs(NIL); 181 setFinalized(false); 182 126 183 } 127 184 … … 427 484 428 485 public static final StandardClass GENERIC_FUNCTION = 429 addStandardClass(Symbol.GENERIC_FUNCTION, 430 list(METAOBJECT, FUNCALLABLE_STANDARD_OBJECT)); 486 new FuncallableStandardClass(Symbol.GENERIC_FUNCTION, 487 list(METAOBJECT, FUNCALLABLE_STANDARD_OBJECT)); 488 static { 489 addClass(Symbol.GENERIC_FUNCTION, GENERIC_FUNCTION); 490 } 431 491 432 492 public static final StandardClass METHOD_COMBINATION = -
trunk/abcl/src/org/armedbear/lisp/StandardGenericFunctionClass.java
r13777 r13871 36 36 import static org.armedbear.lisp.Lisp.*; 37 37 38 public final class StandardGenericFunctionClass extends StandardClass38 public final class StandardGenericFunctionClass extends FuncallableStandardClass 39 39 { 40 40 public static final int SLOT_INDEX_NAME = 0;
Note: See TracChangeset
for help on using the changeset viewer.