AspectC++ Compiler | |
Developer: | Olaf Spinczyk (project leader), Georg Blaschke, Christoph Borchert, Benjamin Kramer, Daniel Lohmann, Horst Schirmeier, Ute Spinczyk, Reinhard Tartler, Matthias Urban [1] |
Released: | [2] |
Latest Release Version: | 2.3 |
Programming Language: | C++ |
Operating System: | Cross-platform |
Genre: | Source-to-source Compiler |
License: | GPL 2+ |
AspectC++ is an aspect-oriented extension of C and C++ languages. It has a source-to-source compiler, which translates AspectC++ source code into compilable C++. The compiler is available under the GNU GPL, though some extensions specific to Microsoft Windows are only available through pure-systems GmbH.
Aspect-oriented programming allows modularizing cross-cutting concerns in a single module, an aspect.Aspects can modify existing classes, but most commonly they provide 'advice' that runs before, after, or aroundexisting functionality.
All calls to a specific function can be traced using an aspect, rather than inserting 'cerr' or print statements in many places:
The Tracer aspect will print out a message before any call to %Iter::Reset
. The %Iter
syntaxmeans that it will match all classes that end in Iter.
Each 'matched' location in the source code is called a join point—the advice is joined to (or advises) that code.AspectC++ provides a join point API to provide and access to information about the join point. For example, the function:%Iter::Reset
) that is about to be called.
The join point API also provides compile-time type information that can be used within anaspect to access the type or the value of the arguments and the return type and return value of amethod or function.