Hello Marcus, I wanted to modify some event creation in Epicea and I just used this mechanism. It's pretty cool!
Cheers, On Thu, Jun 18, 2015 at 2:36 PM, Marcus Denker <marcus.den...@inria.fr> wrote: > Hi, > > in Pharo5 #120 we have lots of progress with Reflectivity regarding to > “reificated values”. > > 1) more reificated value are working. > > #arguments - an array of the arguments of a message send or method > #receiver - receiver of a message (or method executed) > #context for Methods > #sender for method and message > > This means we have now all the info needed to e.g. pass all date needed to > do a message send on the meta level. > (receiver, args, selector), or a variable store (#name, #newValue). > > 2) Reifications as arguments to conditions. When the block used as a > condition has arguments, the name > is matched to the possible reifications and if valid this value is passed > as an argument. Very useful e.g. for > object specific links: > > link := MetaLink new > condition: [: object | object == <the object I am > intersted in>]; > metaObject: <someObject>; > selector: <some selector> > > This link would only be active for this one object. > > 3) Reifications as meta object > ------------- > > Every valid reified value can be the metaobject of the link. e.g. you can > now define a link where the meta is the node where the Link is installed: > > link := MetaLink new > metaObject: #node; > selector: #tagHasBeenExecuted. > > Or the #receiver: > > link := MetaLink new > metaObject: #receiver; > selector: #perform:withArguments:; > arguments: #(selector arguments). > > TODO > > -> #slot, #global. #variable reifications > -> #after needs to wrap in ensure: > -> primitives > -> more tests > -> optimize link preambles: when reifying both #arguments and #receiver, > merge the preamble into one for performance. > > -- Gustavo Santos