[aspectc-user] Aspectc++ and Symbian?

Daniel Lohmann daniel.lohmann at informatik.uni-erlangen.de
Tue Apr 27 15:45:49 CEST 2004


gyula.kun-szabo at nokia.com wrote:

>Hello,
>
>Has anybody tried to use aspectc with symbian os 6.1 or 7.0s?
>I would like know your experiences.
>
>  
>
Hi Gyula,

I personally have no experience in developing for Symbian or using the 
available SDKs. However, I did a short test with the "HelloWorld" 
example from the Symbian 7.0s SDK, VisualStudio.NET 2003 and the 
AspectC++ AddIn for VisualStudio. I used the abld command to generate a 
VC6 workspace and opened this with VC7.1. It worked quite well, I had to 
do only some slight modifications:

- The path for "Intermediate files" in the project settings was an 
absolute path, while the ac++ AddIn expects a relative path from the 
project directory here. So I simply changed it..

- I wrote a simple aspect that gives advice to the "LOCAL_C void 
doExampleL()" function:


#ifndef __ACTEST_AH__
#define __ACTEST_AH__
#include <e32base.h>
#include <e32cons.h>

extern CConsoleBase* console; // write all your messages to this

aspect ACTest {
    advice execution( "% doExampleL(...)" ) : before() {
        _LIT(KHelloWorldText,"Hello from Aspect\n");
        console->Printf(KHelloWorldText);
    };
};
#endif

- The weaver had some problems to match the pointcut because of the 
"LOCAL_C" macro in front of the "doExampleL()" definition.
As "LOCAL_C" is defined as "static", I just replaced the macro by its 
meaning and everything worked fine. I executed the resulting 
"HelloWorld.exe" in the simulator and the aspect output appeared.

- To have access to the "console" object from within the aspect I moved 
it's definition from the "commonframework.h" header to the 
"helloworld.cpp" file and defined it as non-static. (The idea of 
defining these things in a header looks  somewhat strange to me anyway.)


So finally, there seem to be no parser problems with the Symbian header 
files, which are good news. I am pretty sure the LOCAL_C macro problem 
of the weaver wiill be fixed in the next release. For production builds 
some work is  necessary to integrate ac++ into the tool chain, as they 
are built with g++ and generated makefiles. However, this shouldn't be 
that difficult.

Hope that helps

Daniel






More information about the aspectc-user mailing list