[aspectc-user] adding variables and using them
Fabian Scheler
fabian.scheler at gmail.com
Fri Jul 15 13:35:35 CEST 2005
Hi,
> Thanks Fabian for your reply :) I just wanted to expand my question so
> that it would address my biggest problem. first how would you assign the
> tjp->target()->x if x itself was a pointer?
well, I would dereference the pointer, just like
*(tjp->target()->x) = someNumber;
of course you have to allocate memory for x before you try to
dereference x. The target()-method returns a pointer to an object that
is the target of a call. An example:
class myClass {
public:
void myMethod();
void yourMethod();
};
int main() {
myClass myClassObject;
myClassObject.myMethod();
}
aspect SomeAspect {
advice call("% myClass::%(...)") : after() {
myClass* ptrToMyClassObj = tjp-target();
/* do something with ptrToMyClassObj */
}
}
in this example target() returns a pointer to the object
'myClassObject', you can do with this pointer what you can do with any
pointer to an object, e.g. call a method of the object:
tjp->target()->yourMethod();
> and second, would the following make any sense? I'm trying to add the
> variable that I just created for the class to the constructor. I know it
> wouldnt allow me to touch the constructor using regular advices so I'm
> wondering if this would work( although the compiler is complaining and
> gicing segmentaion faults)
>
> aspect asp :public A {
> public:
> asp(int ix):A(ix){} //assume A(int x) is constructor
>
> pointcut calls()= "A" ;
> advice calls() : void initialize () {p=0;j=0;}
> advice calls(): int abc;
> advice construction (calls()) :before(){ abc=0;}
> static asp* aspectof() {
> static asp asp_instance(5);
>
> return &asp_instance;
> }};
I think that should work, but again you have to use 'tjp->that()->abc
= 0' instead of 'abc = 0'. In fact this quite common: insert a
variable via an introduction and initialize it via
construction-advice.
> Thanks again Fabian,
>
> Promise not to bother you as often :)
No problem, I hope I was able to help you, but please always reply to
the mailing list, too, so all readers of the mailing list can partake
in a particular thread.
Ciao, Fabian.
More information about the aspectc-user
mailing list