|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectedu.vub.at.objects.natives.NATNil
edu.vub.at.objects.natives.NATByRef
edu.vub.at.objects.natives.NATCallframe
edu.vub.at.objects.natives.NATObject
edu.vub.at.objects.mirrors.NATMirage
A NATMirage is an object that forwards all meta-operations invoked upon it (at the java-level) to its designated mirror object. To cut off infinite meta-regress it also has magic_ variants of them which delegate to the default implementation. Mirages can currently only be created for 'objects', not for 'isolates'. Allowing isolates to be mirrored would require the introduction of 'isolate mirrors', since an isolate can only be copied if its mirror can be copied.
| Field Summary | |
protected NATIntercessiveMirror |
mirror_
|
| Fields inherited from class edu.vub.at.objects.natives.NATObject |
_EQL_NAME_, _INI_NAME_, _IS_A_, _NEW_NAME_, _NO_STRIPES_, _SHARES_A_, _SUPER_NAME_, stripes_ |
| Fields inherited from class edu.vub.at.objects.natives.NATCallframe |
customFields_, lexicalParent_, stateVector_, variableMap_ |
| Fields inherited from class edu.vub.at.objects.natives.NATNil |
_INSTANCE_ |
| Constructor Summary | |
|
NATMirage(ATObject dynamicParent,
ATObject lexicalParent,
NATIntercessiveMirror mirror,
boolean parentType)
|
|
NATMirage(ATObject lexicalParent,
NATIntercessiveMirror mirror)
|
protected |
NATMirage(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes,
NATIntercessiveMirror mirror)
Constructs a new ambienttalk mirage as a clone of an existing one. |
|
NATMirage(NATIntercessiveMirror mirror)
|
| Method Summary | |
ATMirror |
base_asMirror()
|
boolean |
base_isMirror()
|
protected NATObject |
createClone(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes)
|
(package private) NATIntercessiveMirror |
getMirror()
|
ATNil |
magic_addField(ATField field)
|
ATNil |
magic_addMethod(ATMethod method)
|
ATNil |
magic_assignField(ATObject receiver,
ATSymbol selector,
ATObject value)
|
ATNil |
magic_assignVariable(ATSymbol name,
ATObject value)
|
NATMirage |
magic_clone()
|
ATNil |
magic_defineField(ATSymbol name,
ATObject value)
|
ATObject |
magic_doesNotUnderstand(ATSymbol selector)
|
ATObject |
magic_eval(ATContext ctx)
|
ATObject |
magic_extend(ATClosure code)
|
ATObject |
magic_getDynamicParent()
|
ATField |
magic_getField(ATSymbol selector)
|
ATObject |
magic_getLexicalParent()
|
ATMethod |
magic_getMethod(ATSymbol selector)
|
ATTable |
magic_getStripes()
|
ATObject |
magic_invoke(ATObject receiver,
ATSymbol selector,
ATTable arguments)
|
ATBoolean |
magic_isStripedWith(ATStripe stripe)
|
ATTable |
magic_listFields()
|
ATTable |
magic_listMethods()
|
ATObject |
magic_lookup(ATSymbol selector)
|
ATObject |
magic_newInstance(ATTable initargs)
|
ATObject |
magic_pass()
|
NATText |
magic_print()
|
ATObject |
magic_quote(ATContext ctx)
|
ATObject |
magic_resolve()
|
ATBoolean |
magic_respondsTo(ATSymbol selector)
|
ATObject |
magic_select(ATObject receiver,
ATSymbol selector)
|
ATObject |
magic_send(ATAsyncMessage message)
|
ATNil |
magic_setMirror(NATIntercessiveMirror mirror)
|
ATObject |
magic_share(ATClosure code)
|
ATNil |
meta_addField(ATField field)
Adds a field slot to an object at runtime. |
ATNil |
meta_addMethod(ATMethod method)
When a method is added to an object, it is first checked whether the method does not already exist. |
ATNil |
meta_assignField(ATObject receiver,
ATSymbol selector,
ATObject value)
meta_assignField is used to evaluate code of the form o.m := v. |
ATNil |
meta_assignVariable(ATSymbol name,
ATObject value)
Sets the value of the variable to the given value. |
ATObject |
meta_clone()
When cloning an object, it is first determined whether the parent has to be shared by the clone, or whether the parent must also be cloned. |
ATNil |
meta_defineField(ATSymbol name,
ATObject value)
When a new field is defined in an object, it is important to check whether or not the field map is shared between clones or not. |
ATObject |
meta_doesNotUnderstand(ATSymbol selector)
Called when a selection fails because the selector was not found along the dynamic delegation hierarchy. |
ATObject |
meta_eval(ATContext ctx)
Evaluates a particular parsetree with respect to a particular context. |
ATObject |
meta_extend(ATClosure code)
Create an is-a extension of the receiver object. |
ATObject |
meta_getDynamicParent()
Objects have a classical dynamic parent chain created using extension primitives. |
ATObject |
meta_getLexicalParent()
Objects also have a lexical parent which is the scope in which their definitions are nested. |
ATTable |
meta_getStripes()
Return the stripes that were directly attached to this object. |
ATField |
meta_grabField(ATSymbol selector)
Queries an object for one of its field slots. |
ATMethod |
meta_grabMethod(ATSymbol selector)
Queries an object for one of its method slots. |
ATObject |
meta_invoke(ATObject receiver,
ATSymbol selector,
ATTable arguments)
Invocations on an object ( o.m( args ) ) are handled by looking up the requested selector in the dynamic parent chain of the receiver. |
ATBoolean |
meta_isStripedWith(ATStripe stripe)
Check whether one of the stripes of this object is a substripe of the given stripe. |
ATTable |
meta_listFields()
Queries an object for a list of all of its field slots. |
ATTable |
meta_listMethods()
Queries an object for a list of all of its method slots. |
ATObject |
meta_lookup(ATSymbol selector)
This method is used to evaluate code of the form selector within the scope of this object. |
ATObject |
meta_newInstance(ATTable initargs)
When new is invoked on an object's mirror, the object is first cloned by the mirror, after which the method named 'init' is invoked on it. |
ATObject |
meta_pass()
An isolate object does not return a proxy representation of itself during serialization, hence it is serialized itself. |
NATText |
meta_print()
Prints out the object in a human-readable way. |
ATObject |
meta_quote(ATContext ctx)
Quotes a parsetree, in other words allows the parsetree to return itself instead of evaluating. |
ATObject |
meta_resolve()
An isolate object represents itself upon deserialization. |
ATBoolean |
meta_respondsTo(ATSymbol selector)
An ambienttalk object can respond to a message if a corresponding field or method exists either in the receiver object locally, or in one of its dynamic parents. |
ATObject |
meta_select(ATObject receiver,
ATSymbol selector)
meta_select is used to evaluate code of the form o.m. |
ATObject |
meta_send(ATAsyncMessage message)
Sends a newly created message asynchronously by this object. |
ATObject |
meta_share(ATClosure code)
Create a shares-a extension of the receiver object. |
| Methods inherited from class edu.vub.at.objects.natives.NATCallframe |
getLocalCustomField, getLocalField, hasLocalCustomField, hasLocalField, hasLocalNativeField, setLocalField |
| 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_receive |
| Methods inherited from interface edu.vub.at.objects.coercion.ATConversions |
asJavaClassUnderSymbiosis, asJavaObjectUnderSymbiosis, asNativeBoolean, asNativeException, asNativeFarReference, asNativeFraction, asNativeNumber, asNativeNumeric, asNativeTable, asNativeText, base_asFarReference, base_asVariableAssignment, base_isFarReference, base_isMessageCreation, base_isVariableAssignment, isJavaObjectUnderSymbiosis, isNativeBoolean, isNativeField, isNativeText |
| Field Detail |
protected NATIntercessiveMirror mirror_
| Constructor Detail |
public NATMirage(NATIntercessiveMirror mirror)
public NATMirage(ATObject lexicalParent,
NATIntercessiveMirror mirror)
public NATMirage(ATObject dynamicParent,
ATObject lexicalParent,
NATIntercessiveMirror mirror,
boolean parentType)
protected NATMirage(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes,
NATIntercessiveMirror mirror)
throws InterpreterException
| Method Detail |
public ATNil magic_setMirror(NATIntercessiveMirror mirror)
public ATNil magic_addMethod(ATMethod method)
throws InterpreterException
InterpreterException
public ATNil magic_assignField(ATObject receiver,
ATSymbol selector,
ATObject value)
throws InterpreterException
InterpreterException
public NATMirage magic_clone()
throws InterpreterException
InterpreterException
protected NATObject createClone(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes)
throws InterpreterException
createClone in class NATObjectInterpreterExceptionNATIntercessiveMirror getMirror()
public ATNil magic_defineField(ATSymbol name,
ATObject value)
throws InterpreterException
InterpreterException
public ATObject magic_extend(ATClosure code)
throws InterpreterException
InterpreterException
public ATMethod magic_getMethod(ATSymbol selector)
throws InterpreterException
InterpreterException
public ATObject magic_invoke(ATObject receiver,
ATSymbol selector,
ATTable arguments)
throws InterpreterException
InterpreterException
public ATTable magic_listMethods()
throws InterpreterException
InterpreterException
public ATObject magic_lookup(ATSymbol selector)
throws InterpreterException
InterpreterException
public ATObject magic_newInstance(ATTable initargs)
throws InterpreterException
InterpreterException
public NATText magic_print()
throws InterpreterException
InterpreterException
public ATBoolean magic_respondsTo(ATSymbol selector)
throws InterpreterException
InterpreterException
public ATObject magic_select(ATObject receiver,
ATSymbol selector)
throws InterpreterException
InterpreterException
public ATObject magic_share(ATClosure code)
throws InterpreterException
InterpreterException
public ATNil magic_addField(ATField field)
throws InterpreterException
InterpreterException
public ATNil magic_assignVariable(ATSymbol name,
ATObject value)
throws InterpreterException
InterpreterException
public ATObject magic_doesNotUnderstand(ATSymbol selector)
throws InterpreterException
InterpreterException
public ATField magic_getField(ATSymbol selector)
throws InterpreterException
InterpreterException
public ATTable magic_listFields()
throws InterpreterException
InterpreterException
public ATObject magic_send(ATAsyncMessage message)
throws InterpreterException
InterpreterException
public ATObject magic_eval(ATContext ctx)
throws InterpreterException
InterpreterException
public ATObject magic_quote(ATContext ctx)
throws InterpreterException
InterpreterException
public ATObject magic_getDynamicParent()
throws InterpreterException
InterpreterException
public ATObject magic_getLexicalParent()
throws InterpreterException
InterpreterException
public ATObject magic_pass()
throws InterpreterException
InterpreterException
public ATObject magic_resolve()
throws InterpreterException
InterpreterException
public ATBoolean magic_isStripedWith(ATStripe stripe)
throws InterpreterException
InterpreterException
public ATTable magic_getStripes()
throws InterpreterException
InterpreterException
public ATNil meta_addMethod(ATMethod method)
throws InterpreterException
NATObject
meta_addMethod in interface ATObjectmeta_addMethod in class NATObjectInterpreterException
public ATNil meta_assignField(ATObject receiver,
ATSymbol selector,
ATObject value)
throws InterpreterException
NATObject
meta_assignField in interface ATObjectmeta_assignField in class NATObjectvalue - the value to assign to the fieldselector - the field to assign
InterpreterException
public ATObject meta_clone()
throws InterpreterException
NATObject
meta_clone in interface ATObjectmeta_clone in class NATObjectInterpreterException
public ATNil meta_defineField(ATSymbol name,
ATObject value)
throws InterpreterException
NATObject
meta_defineField in interface ATObjectmeta_defineField in class NATObjectInterpreterException
public ATObject meta_extend(ATClosure code)
throws InterpreterException
ATObject
meta_extend in interface ATObjectmeta_extend in class NATObjectInterpreterException
public ATMethod meta_grabMethod(ATSymbol selector)
throws InterpreterException
ATObject
meta_grabMethod in interface ATObjectmeta_grabMethod in class NATObjectInterpreterException
public ATObject meta_invoke(ATObject receiver,
ATSymbol selector,
ATTable arguments)
throws InterpreterException
NATObjectreturn this.meta_select(receiver, selector).asClosure().meta_apply(arguments);
but has a specialized implementation for performance reasons (no unnecessary closure is created)
meta_invoke in interface ATObjectmeta_invoke in class NATObjectInterpreterException
public ATTable meta_listMethods()
throws InterpreterException
ATObject
meta_listMethods in interface ATObjectmeta_listMethods in class NATObjectInterpreterException
public ATObject meta_lookup(ATSymbol selector)
throws InterpreterException
NATObject
meta_lookup in interface ATObjectmeta_lookup in class NATObjectInterpreterException
public ATObject meta_newInstance(ATTable initargs)
throws InterpreterException
NATObject
meta_newInstance in interface ATObjectmeta_newInstance in class NATObjectInterpreterException
public NATText meta_print()
throws InterpreterException
ATObject
meta_print in interface ATObjectmeta_print in class NATObjectInterpreterException
public ATBoolean meta_respondsTo(ATSymbol selector)
throws InterpreterException
NATObject
meta_respondsTo in interface ATObjectmeta_respondsTo in class NATObjectInterpreterException
public ATObject meta_select(ATObject receiver,
ATSymbol selector)
throws InterpreterException
NATObject
meta_select in interface ATObjectmeta_select in class NATObjectreceiver - the original receiver of the selectionselector - the selector to look up
InterpreterException
public ATObject meta_share(ATClosure code)
throws InterpreterException
ATObjectobj.share { code } is represented at the meta-level by
mirror(obj).meta_share(code)
Triggers the objectShared event on this object's beholders (mirror observers).
meta_share in interface ATObjectmeta_share in class NATObjectInterpreterException
public ATNil meta_addField(ATField field)
throws InterpreterException
ATObject
meta_addField in interface ATObjectmeta_addField in class NATCallframeInterpreterException
public ATNil meta_assignVariable(ATSymbol name,
ATObject value)
throws InterpreterException
ATObject
meta_assignVariable in interface ATObjectmeta_assignVariable in class NATCallframeInterpreterException
public ATObject meta_doesNotUnderstand(ATSymbol selector)
throws InterpreterException
ATObject
meta_doesNotUnderstand in interface ATObjectmeta_doesNotUnderstand in class NATCallframeInterpreterException
public ATField meta_grabField(ATSymbol selector)
throws InterpreterException
ATObject
meta_grabField in interface ATObjectmeta_grabField in class NATCallframeInterpreterException
public ATTable meta_listFields()
throws InterpreterException
ATObject
meta_listFields in interface ATObjectmeta_listFields in class NATCallframeInterpreterException
public ATObject meta_send(ATAsyncMessage message)
throws InterpreterException
ATObject
meta_send in interface ATObjectmeta_send in class NATNilInterpreterException
public ATObject meta_eval(ATContext ctx)
throws InterpreterException
ATObject
meta_eval in interface ATObjectmeta_eval in class NATNilInterpreterException
public ATObject meta_quote(ATContext ctx)
throws InterpreterException
ATObject
meta_quote in interface ATObjectmeta_quote in class NATNilInterpreterException
public ATObject meta_getDynamicParent()
throws InterpreterException
ATObject
meta_getDynamicParent in interface ATObjectmeta_getDynamicParent in class NATCallframeInterpreterException
public ATObject meta_getLexicalParent()
throws InterpreterException
ATObject
meta_getLexicalParent in interface ATObjectmeta_getLexicalParent in class NATCallframeInterpreterException
public ATObject meta_pass()
throws InterpreterException
NATObject
meta_pass in interface ATObjectmeta_pass in class NATObjectInterpreterException
public ATObject meta_resolve()
throws InterpreterException
NATObject
meta_resolve in interface ATObjectmeta_resolve in class NATObjectInterpreterException
public ATBoolean meta_isStripedWith(ATStripe stripe)
throws InterpreterException
NATObject
meta_isStripedWith in interface ATObjectmeta_isStripedWith in class NATObjectInterpreterException
public ATTable meta_getStripes()
throws InterpreterException
NATObject
meta_getStripes in interface ATObjectmeta_getStripes in class NATObjectInterpreterExceptionpublic boolean base_isMirror()
base_isMirror in interface ATConversionsbase_isMirror in class NATObject
public ATMirror base_asMirror()
throws InterpreterException
base_asMirror in interface ATConversionsbase_asMirror in class NATObjectInterpreterException
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||