edu.vub.at.objects.natives.grammar
Class AGDefExternalMethod
java.lang.Object
edu.vub.at.objects.natives.NATNil
edu.vub.at.objects.natives.NATByCopy
edu.vub.at.objects.natives.grammar.NATAbstractGrammar
edu.vub.at.objects.natives.grammar.AGDefExternalMethod
- All Implemented Interfaces:
- ATAbstractGrammar, ATConversions, ATDefExternalMethod, ATDefinition, ATExpression, ATNil, ATObject, ATStatement, java.io.Serializable
- public final class AGDefExternalMethod
- extends NATAbstractGrammar
- implements ATDefExternalMethod
The native implementation of an external method definition abstract grammar element.
- Author:
- tvcutsem
- See Also:
- Serialized Form
Methods inherited from class edu.vub.at.objects.natives.NATNil |
asAmbientTalkObject, asJavaClassUnderSymbiosis, asJavaObjectUnderSymbiosis, asNativeBoolean, asNativeException, asNativeFarReference, asNativeFraction, asNativeNumber, asNativeNumeric, asNativeTable, asNativeText, base__opeql__opeql_, base_asActorMirror, base_asAsyncMessage, base_asBegin, base_asBoolean, base_asClosure, base_asDefinition, base_asExpression, base_asFarReference, base_asField, base_asHandler, base_asMessage, base_asMessageCreation, base_asMethod, base_asMirror, base_asNumber, base_asSplice, base_asStatement, base_asStripe, base_asSymbol, base_asTable, base_asUnquoteSplice, base_asVariableAssignment, base_init, base_isBoolean, base_isCallFrame, base_isClosure, base_isFarReference, base_isMessageCreation, base_isMethod, base_isMirror, base_isSplice, base_isStripe, base_isSymbol, base_isTable, base_isUnquoteSplice, base_isVariableAssignment, base_new, createChild, equals, isAmbientTalkObject, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText, meta_addField, meta_addMethod, meta_assignField, meta_assignVariable, meta_clone, meta_defineField, meta_doesNotUnderstand, meta_extend, meta_getDynamicParent, meta_getLexicalParent, meta_grabField, meta_grabMethod, meta_invoke, meta_isCloneOf, meta_isRelatedTo, meta_isStripedWith, meta_listFields, meta_listMethods, meta_lookup, meta_newInstance, meta_receive, meta_respondsTo, meta_select, meta_send, meta_share, readResolve, toString, writeReplace |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface edu.vub.at.objects.ATObject |
base__opeql__opeql_, base_init, base_new, meta_addField, meta_addMethod, meta_assignField, meta_assignVariable, meta_clone, meta_defineField, meta_doesNotUnderstand, meta_extend, meta_getDynamicParent, meta_getLexicalParent, meta_getStripes, meta_grabField, meta_grabMethod, meta_invoke, meta_isCloneOf, meta_isRelatedTo, meta_isStripedWith, meta_listFields, meta_listMethods, meta_lookup, meta_newInstance, meta_pass, meta_receive, meta_resolve, meta_respondsTo, meta_select, meta_send, meta_share |
Methods inherited from interface edu.vub.at.objects.coercion.ATConversions |
asAmbientTalkObject, asJavaClassUnderSymbiosis, asJavaObjectUnderSymbiosis, asNativeBoolean, asNativeException, asNativeFarReference, asNativeFraction, asNativeNumber, asNativeNumeric, asNativeTable, asNativeText, base_asActorMirror, base_asAsyncMessage, base_asBegin, base_asBoolean, base_asClosure, base_asDefinition, base_asExpression, base_asFarReference, base_asField, base_asHandler, base_asMessage, base_asMessageCreation, base_asMethod, base_asMirror, base_asNumber, base_asSplice, base_asStatement, base_asStripe, base_asSymbol, base_asTable, base_asUnquoteSplice, base_asVariableAssignment, base_isBoolean, base_isCallFrame, base_isClosure, base_isFarReference, base_isMessageCreation, base_isMethod, base_isMirror, base_isSplice, base_isStripe, base_isSymbol, base_isTable, base_isUnquoteSplice, base_isVariableAssignment, isAmbientTalkObject, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText |
rcvNam_
private final ATSymbol rcvNam_
selectorExp_
private final ATSymbol selectorExp_
argumentExps_
private final ATTable argumentExps_
bodyStmts_
private final ATBegin bodyStmts_
AGDefExternalMethod
public AGDefExternalMethod(ATSymbol rcv,
ATSymbol sel,
ATTable args,
ATBegin bdy)
base_getReceiver
public ATSymbol base_getReceiver()
- Specified by:
base_getReceiver
in interface ATDefExternalMethod
base_getSelector
public ATSymbol base_getSelector()
- Specified by:
base_getSelector
in interface ATDefExternalMethod
base_getArguments
public ATTable base_getArguments()
- Specified by:
base_getArguments
in interface ATDefExternalMethod
base_getBodyExpression
public ATBegin base_getBodyExpression()
- Specified by:
base_getBodyExpression
in interface ATDefExternalMethod
meta_eval
public ATObject meta_eval(ATContext ctx)
throws InterpreterException
- Evaluates the receiver symbol to an object to which a new 'closure method' will be added.
Such a closure captures the current lexical scope, but not the values for 'self' and 'super'.
For an explanation of this rationale, see my interface description in ATDefExternalMethod.
The return value of an external method definition is always the external method itself.
AGDEFEXTMTH(rcv,nam,par,bdy).eval(ctx) =
rcv.eval(ctx).defineField(nam, NATCLOMTH(ctx.cur,nam,par,bdy))
This method may fail with an XIllegalOperation if the receiver is an instance of a native
type (whose method dictionaries are sealed) or if the receiver is an isolate.
- Specified by:
meta_eval
in interface ATObject
- Overrides:
meta_eval
in class NATNil
- Throws:
InterpreterException
meta_quote
public ATObject meta_quote(ATContext ctx)
throws InterpreterException
- Quoting an external method definition results in a new quoted external method definition.
AGDEFEXTMTH(rcv,nam,par,bdy).quote(ctx) = AGDEFEXTMTH(rcv.quote(ctx),nam.quote(ctx), par.quote(ctx), bdy.quote(ctx))
- Specified by:
meta_quote
in interface ATObject
- Overrides:
meta_quote
in class NATNil
- Throws:
InterpreterException
meta_print
public NATText meta_print()
throws InterpreterException
- Description copied from interface:
ATObject
- Prints out the object in a human-readable way.
- Specified by:
meta_print
in interface ATObject
- Overrides:
meta_print
in class NATNil
- Throws:
InterpreterException