[Reflectivity] HowTo

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[Reflectivity] HowTo

roberto.minelli@usi.ch
Dear Marcus,

I am following your progresses on Reflectivity and I’d like to start with a big: THANK YOU!

Having said that, I am wondering whether this is a good point in which I can try (as an alpha tester :) to use it.

What I need to achieve is something similar to a method wrapper, i.e., some code that gets executed before or after a particular method call.

Is something doable at this point? Could you _please_ provide me pointers where to look to understand the Reflectivity framework?

Cheers and thanks in advance,
Roberto
Reply | Threaded
Open this post in threaded view
|

Re: [Reflectivity] HowTo

Marcus Denker-4
Hello,

sorry for answering late… last week was less productive than I hoped. There is not yet any documentation as I am busy actually implementing
things.

What I am working on now (that is, last week) was how to pass parameters to the meta. I now have a design that should work.
(things are more difficult as I want to make sure that the mapping between the AST and the text stays correct…)

What you can do already is a #before on a whole method *if* that method is not a primitive method (which will work eventually, too).

e.g.

| sendNode link |

sendNode := (ReflectivityExamples>>#exampleMethod) ast.
link := MetaLink new metaObject: Transcript; selector: #show:; arguments: #(object).
sendNode link: link.

now execute:

        ReflectivityExamples new exampleMethod.

What is missing (working on it)

1) #after. This needs to wrap the AST of the method in an #ensure:
    (Here we need to take care to keep the mapping AST <-> text intact…)
2) promitives. Wrap the compiled Method.
3) pass information to the meta. Right now just #object and #node works.
     #arguments is the most complex and important.

I am working on all this… the next I want to get working is the argument passing.


        Marcus



> On 03 Jun 2015, at 16:23, [hidden email] wrote:
>
> Dear Marcus,
>
> I am following your progresses on Reflectivity and I’d like to start with a big: THANK YOU!
>
> Having said that, I am wondering whether this is a good point in which I can try (as an alpha tester :) to use it.
>
> What I need to achieve is something similar to a method wrapper, i.e., some code that gets executed before or after a particular method call.
>
> Is something doable at this point? Could you _please_ provide me pointers where to look to understand the Reflectivity framework?
>
> Cheers and thanks in advance,
> Roberto


Reply | Threaded
Open this post in threaded view
|

Re: [Reflectivity] HowTo

Clara Allende


2015-06-08 10:17 GMT-03:00 Marcus Denker <[hidden email]>:
Hello,

sorry for answering late… last week was less productive than I hoped. There is not yet any documentation as I am busy actually implementing
things.

There is my blog, with a little bit of documentation, but not up-to-date :( . Anyway, if your intention is to get some insight on what reflectivity is, and get a short and *very simplified* explanation of how it works, you can start there.

HTH

What I am working on now (that is, last week) was how to pass parameters to the meta. I now have a design that should work.
(things are more difficult as I want to make sure that the mapping between the AST and the text stays correct…)

What you can do already is a #before on a whole method *if* that method is not a primitive method (which will work eventually, too).

e.g.

| sendNode link |

sendNode := (ReflectivityExamples>>#exampleMethod) ast.
link := MetaLink new metaObject: Transcript; selector: #show:; arguments: #(object).
sendNode link: link.

now execute:

        ReflectivityExamples new exampleMethod.

What is missing (working on it)

1) #after. This needs to wrap the AST of the method in an #ensure:
    (Here we need to take care to keep the mapping AST <-> text intact…)
2) promitives. Wrap the compiled Method.
3) pass information to the meta. Right now just #object and #node works.
     #arguments is the most complex and important.

I am working on all this… the next I want to get working is the argument passing.


        Marcus



> On 03 Jun 2015, at 16:23, [hidden email] wrote:
>
> Dear Marcus,
>
> I am following your progresses on Reflectivity and I’d like to start with a big: THANK YOU!
>
> Having said that, I am wondering whether this is a good point in which I can try (as an alpha tester :) to use it.
>
> What I need to achieve is something similar to a method wrapper, i.e., some code that gets executed before or after a particular method call.
>
> Is something doable at this point? Could you _please_ provide me pointers where to look to understand the Reflectivity framework?
>
> Cheers and thanks in advance,
> Roberto



Reply | Threaded
Open this post in threaded view
|

Re: [Reflectivity] HowTo

Marcus Denker-4

On 08 Jun 2015, at 15:44, Clara Allende <[hidden email]> wrote:



2015-06-08 10:17 GMT-03:00 Marcus Denker <[hidden email]>:
Hello,

sorry for answering late… last week was less productive than I hoped. There is not yet any documentation as I am busy actually implementing
things.

There is my blog, with a little bit of documentation, but not up-to-date :( . Anyway, if your intention is to get some insight on what reflectivity is, and get a short and *very simplified* explanation of how it works, you can start there.


It’s clear that we need good documentation.. but I want to first have a final version of the implementation… with all the details fixed… like always, progress is slower than anticipated.

I try to block as much time as possible for the rest of the month to get it done.

Marcus