|
|||||||||||
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 NATObject
InterpreterException
NATIntercessiveMirror 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 ATObject
meta_addMethod
in class NATObject
InterpreterException
public ATNil meta_assignField(ATObject receiver, ATSymbol selector, ATObject value) throws InterpreterException
NATObject
meta_assignField
in interface ATObject
meta_assignField
in class NATObject
value
- the value to assign to the fieldselector
- the field to assign
InterpreterException
public ATObject meta_clone() throws InterpreterException
NATObject
meta_clone
in interface ATObject
meta_clone
in class NATObject
InterpreterException
public ATNil meta_defineField(ATSymbol name, ATObject value) throws InterpreterException
NATObject
meta_defineField
in interface ATObject
meta_defineField
in class NATObject
InterpreterException
public ATObject meta_extend(ATClosure code) throws InterpreterException
ATObject
meta_extend
in interface ATObject
meta_extend
in class NATObject
InterpreterException
public ATMethod meta_grabMethod(ATSymbol selector) throws InterpreterException
ATObject
meta_grabMethod
in interface ATObject
meta_grabMethod
in class NATObject
InterpreterException
public ATObject meta_invoke(ATObject receiver, ATSymbol selector, ATTable arguments) throws InterpreterException
NATObject
return 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 ATObject
meta_invoke
in class NATObject
InterpreterException
public ATTable meta_listMethods() throws InterpreterException
ATObject
meta_listMethods
in interface ATObject
meta_listMethods
in class NATObject
InterpreterException
public ATObject meta_lookup(ATSymbol selector) throws InterpreterException
NATObject
meta_lookup
in interface ATObject
meta_lookup
in class NATObject
InterpreterException
public ATObject meta_newInstance(ATTable initargs) throws InterpreterException
NATObject
meta_newInstance
in interface ATObject
meta_newInstance
in class NATObject
InterpreterException
public NATText meta_print() throws InterpreterException
ATObject
meta_print
in interface ATObject
meta_print
in class NATObject
InterpreterException
public ATBoolean meta_respondsTo(ATSymbol selector) throws InterpreterException
NATObject
meta_respondsTo
in interface ATObject
meta_respondsTo
in class NATObject
InterpreterException
public ATObject meta_select(ATObject receiver, ATSymbol selector) throws InterpreterException
NATObject
meta_select
in interface ATObject
meta_select
in class NATObject
receiver
- the original receiver of the selectionselector
- the selector to look up
InterpreterException
public ATObject meta_share(ATClosure code) throws InterpreterException
ATObject
obj.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 ATObject
meta_share
in class NATObject
InterpreterException
public ATNil meta_addField(ATField field) throws InterpreterException
ATObject
meta_addField
in interface ATObject
meta_addField
in class NATCallframe
InterpreterException
public ATNil meta_assignVariable(ATSymbol name, ATObject value) throws InterpreterException
ATObject
meta_assignVariable
in interface ATObject
meta_assignVariable
in class NATCallframe
InterpreterException
public ATObject meta_doesNotUnderstand(ATSymbol selector) throws InterpreterException
ATObject
meta_doesNotUnderstand
in interface ATObject
meta_doesNotUnderstand
in class NATCallframe
InterpreterException
public ATField meta_grabField(ATSymbol selector) throws InterpreterException
ATObject
meta_grabField
in interface ATObject
meta_grabField
in class NATCallframe
InterpreterException
public ATTable meta_listFields() throws InterpreterException
ATObject
meta_listFields
in interface ATObject
meta_listFields
in class NATCallframe
InterpreterException
public ATObject meta_send(ATAsyncMessage message) throws InterpreterException
ATObject
meta_send
in interface ATObject
meta_send
in class NATNil
InterpreterException
public ATObject meta_eval(ATContext ctx) throws InterpreterException
ATObject
meta_eval
in interface ATObject
meta_eval
in class NATNil
InterpreterException
public ATObject meta_quote(ATContext ctx) throws InterpreterException
ATObject
meta_quote
in interface ATObject
meta_quote
in class NATNil
InterpreterException
public ATObject meta_getDynamicParent() throws InterpreterException
ATObject
meta_getDynamicParent
in interface ATObject
meta_getDynamicParent
in class NATCallframe
InterpreterException
public ATObject meta_getLexicalParent() throws InterpreterException
ATObject
meta_getLexicalParent
in interface ATObject
meta_getLexicalParent
in class NATCallframe
InterpreterException
public ATObject meta_pass() throws InterpreterException
NATObject
meta_pass
in interface ATObject
meta_pass
in class NATObject
InterpreterException
public ATObject meta_resolve() throws InterpreterException
NATObject
meta_resolve
in interface ATObject
meta_resolve
in class NATObject
InterpreterException
public ATBoolean meta_isStripedWith(ATStripe stripe) throws InterpreterException
NATObject
meta_isStripedWith
in interface ATObject
meta_isStripedWith
in class NATObject
InterpreterException
public ATTable meta_getStripes() throws InterpreterException
NATObject
meta_getStripes
in interface ATObject
meta_getStripes
in class NATObject
InterpreterException
public boolean base_isMirror()
base_isMirror
in interface ATConversions
base_isMirror
in class NATObject
public ATMirror base_asMirror() throws InterpreterException
base_asMirror
in interface ATConversions
base_asMirror
in class NATObject
InterpreterException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |