[aspectc-user] Questions about implementation
Olaf Spinczyk
Olaf.Spinczyk at informatik.uni-erlangen.de
Thu Oct 19 14:53:22 CEST 2006
Hi,
Panu Bloigu wrote:
> Hello you all.
>
> I have some questions about the implementaton of the AspectC++ compiler.
>
> 1) In various documents there are references to Class&Aspect Database
> produced by the PUMA system. Could someone elaborate a bit the nature and
> contents of the said database. The PUMA User's Manual accessible at
> http://www-ivs.cs.uni-magdeburg.de/~puma/docu-eng.html says nothing about it
> and I can't download the PUMA source from the CVS either since it seems to
> require an account. I would go about asking this in PUMA mailing list if
> there were one. And yes, I know the source is the ultimate documentation and
> that I should probably consult ac++ source, but I still would appreciate
> reading about it in plain English.
The "class database" contains objects that are used for the semantic
analysis of the C++ code and also describe the results of the analysis.
For example, each function, attribute, class, etc. is represented by a
class database object. There is one class database for each translation
unit.
There are three parallel efforts going on to improve the documentation
of Puma:
1. examples: In the current CVS version there are five small and very
well commented Puma applications, which could be used to learn more
about some aspects of Puma including the class db.
2. user's manual: Matthias started to write a user's manual. However, it
is still in a very early stage. One day it shall replace the outdated
manual that a have found at the old Puma homepage at the university
of Mageburg.
3. doxygen docu: many class of the class database already contain
doxygen comments.
We are currently discussing free CVS read-only access to the Puma
sources or daily snapshots. Please be patient.
> 2) AspectC++ papers and documentations say that AspectC++ avoids using RTTI.
> I don't see how that() and target() could be implemented w/o resorting to
> using RTTI. Could someone explain this a little.
Of course, some kind of runtime type information is needed, but we avoid
the rtti mechanism provided by C++ compilers. There are two reasons:
1. C++ RTTI induces costs for *every class*, even though type
information might only be needed for only a single class. Many
programs are compiled with -fno-rtti and we don't want to force
them to enable this feature only for AOP support.
2. The mechanism is not sufficient for AspectC++.
Therefore, we "re-implemented" RTTI by introducing virtual helper
functions, wherever dynamic type checks are needed.
BTW, I wouldn't say that this is the best tested feature of the ac++
weaver. ;-)
> Thank you for putting you time and effort in reading and, hopefully,
> answering these questions.
No problem.
- Olaf
More information about the aspectc-user
mailing list