|
|||||||||||
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.NATIntercessiveMirror
NATIntercessiveMirror extends the default NATIntrospectiveMirror to also allow programmers to supply their own code for the meta-operations defined on an object. This offers the programmers a way to intercede the default semantics implemented in the language for the scope of a single object
To achieve this, a triplet of objects is needed : first of all, instead of using a default object (whose behaviour is hardwired for efficiency), a mirage needs to be used, to reify the meta-operations called upon an object. These meta-operations are invoked on an ordinary object, which delegates to an instance of this class to implement the correct default behaviour.
Field Summary | |
protected NATMirage |
principal_
|
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 | |
|
NATIntercessiveMirror(ATObject lexicalParent,
boolean parentType)
Constructs a new ambienttalk mirror based on a set of parent pointers. |
protected |
NATIntercessiveMirror(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes,
NATMirage base)
Constructs a new ambienttalk mirage as a clone of an existing one. |
|
NATIntercessiveMirror(NATIntercessiveMirror dynamicParent,
ATObject lexicalParent,
boolean parentType)
Constructs a new ambienttalk mirror based on a set of parent pointers. |
Method Summary | |
ATMirror |
base_asMirror()
|
ATObject |
base_getBase()
Provides access to the AmbientTalk language value this mirror reflects upon. |
boolean |
base_isMirror()
|
protected ATObject |
createChild(ATClosure code,
boolean parentPointerType)
When creating children of objects, care must be taken that an extension of an isolate itself remains an isolate. |
protected NATObject |
createClone(FieldMap map,
java.util.Vector state,
java.util.LinkedList customFields,
MethodDictionary methodDict,
ATObject dynamicParent,
ATObject lexicalParent,
byte flags,
ATStripe[] stripes)
|
NATIntercessiveMirror |
magic_clone()
|
ATObject |
meta_clone()
Clone the receiver object. |
ATTable |
meta_getStripes()
Returns the stripes of this object. |
NATText |
meta_print()
Prints out the object in a human-readable way. |
ATNil |
setBase(NATMirage base)
|
Methods inherited from class edu.vub.at.objects.natives.NATCallframe |
getLocalCustomField, getLocalField, hasLocalCustomField, hasLocalField, hasLocalNativeField, meta_addField, meta_assignVariable, meta_doesNotUnderstand, meta_getDynamicParent, meta_getLexicalParent, meta_grabField, meta_listFields, 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_addField, meta_addMethod, meta_assignField, meta_assignVariable, meta_defineField, meta_doesNotUnderstand, meta_eval, 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_pass, meta_quote, meta_receive, meta_resolve, meta_respondsTo, meta_select, meta_send, meta_share |
Field Detail |
protected NATMirage principal_
Constructor Detail |
public NATIntercessiveMirror(ATObject lexicalParent, boolean parentType)
lexicalParent
- - the lexical scope in which the mirror's definition was nestedparentType
- - how this object extends its dynamic parent (is-a or shares-a)public NATIntercessiveMirror(NATIntercessiveMirror dynamicParent, ATObject lexicalParent, boolean parentType)
dynamicParent
- - the dynamic parent of the new mirror, which should also be a mirrorlexicalParent
- - the lexical scope in which the mirror's definition was nestedparentType
- - how this object extends its dynamic parent (is-a or shares-a)protected NATIntercessiveMirror(FieldMap map, java.util.Vector state, java.util.LinkedList customFields, MethodDictionary methodDict, ATObject dynamicParent, ATObject lexicalParent, byte flags, ATStripe[] stripes, NATMirage base) throws InterpreterException
Method Detail |
public ATObject base_getBase()
ATMirror
base_getBase
in interface ATMirror
public ATNil setBase(NATMirage base)
public boolean base_isMirror()
base_isMirror
in interface ATConversions
base_isMirror
in class NATObject
public ATMirror base_asMirror()
base_asMirror
in interface ATConversions
base_asMirror
in class NATObject
public ATObject meta_clone() throws InterpreterException
ATObject
meta_clone
in interface ATObject
meta_clone
in class NATObject
InterpreterException
public NATIntercessiveMirror 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
protected ATObject createChild(ATClosure code, boolean parentPointerType) throws InterpreterException
NATObject
createChild
in class NATObject
InterpreterException
public NATText meta_print() throws InterpreterException
ATObject
meta_print
in interface ATObject
meta_print
in class NATObject
InterpreterException
public ATTable meta_getStripes() throws InterpreterException
ATObject
meta_getStripes
in interface ATObject
meta_getStripes
in class NATObject
InterpreterException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |