AspectC++ (original) (raw)

AspectC++(アスペクトシープラスプラス)はC言語及びC++でアスペクト指向プログラミングを実現するための機能拡張。AspectC++のソースコードをC++のソースコードに変換する。GNU GPLライセンスであるが、一部のMicrosoft Windows固有の機能についてはpure-systems社のみが提供している。 アスペクト指向プログラミングはをアスペクト(側面)として1つにモジュール化できる。アスペクトは既存のクラスを修正できるが、一般的には既存の機能の実行前か実行後などで動作する「アドバイス」を提供する。 たとえばあるAPIコールが呼び出されるタイミングを全てトレースしたい場合、コードのあちこちにcerrやprint文を挿入するのではなく、以下のように実装して1つのアスペクトを生成する。 aspect Tracer{ advice call("% %Iter::Reset(...)") : before { cerr << "次でIter::Resetが呼ばれます " << JoinPoint::signature << endl; }}; 上記のTracerアスペクトは%Iter::Resetが呼ばれる前にメッセージを出力する。%Iterという構文はIterの終わりで全てのクラスにマッチするという意味である。