Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
AspectC++
Aspect-oriented extension to C and C++

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 around existing functionality.

We don't have any images related to AspectC++ yet.
We don't have any YouTube videos related to AspectC++ yet.
We don't have any PDF documents related to AspectC++ yet.
We don't have any Books related to AspectC++ yet.
We don't have any archived web articles related to AspectC++ yet.

Example

All calls to a specific function can be traced using an aspect, rather than inserting 'cerr' or print statements in many places:

aspect Tracer { advice call("% %Iter::Reset(...)") : before() { cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl; } };

The Tracer aspect will print out a message before any call to %Iter::Reset. The %Iter syntax means 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:

JoinPoint::signature()

returns the name of the function (that matched %Iter::Reset) that is about to be called.

The join point API also provides compile-time type information that can be used within an aspect to access the type or the value of the arguments and the return type and return value of a method or function.