|
AspectC++(アスペクトシープラスプラス)はC言語及びC++でアスペクト指向プログラミングを実現するための機能拡張。AspectC++のソースコードをC++のソースコードに変換する。GNU GPLライセンスであるが、一部のMicrosoft Windows固有の機能についてはpure-systems社のみが提供している。 アスペクト指向プログラミングは横断的関心事をアスペクト(側面)として1つにモジュール化できる。アスペクトは既存のクラスを修正できるが、一般的には既存の機能の実行前か実行後などで動作する「アドバイス」を提供する。 たとえばあるAPIコールが呼び出されるタイミングを全てトレースしたい場合、コードのあちこちにcerrやprint文を挿入するのではなく、以下のように実装して1つのアスペクトを生成する。 上記のTracerアスペクトは %Iter::Reset が呼ばれる前にメッセージを出力する。%Iter という構文はIterの終わりで全てのクラスにマッチするという意味である。ソースコード内でマッチした場所をジョインポイントと呼び、アドバイスはそのコードに挿入される。AspectC++はジョインポイントについての情報にアクセスするためのジョインポイントAPIがある。たとえば という関数は( %Iter::Reset にマッチした)これから呼び出されようとしているメソッド名を返す。ジョインポイントAPIはまたアスペクト内で利用できるコンパイル時型情報を持ち、引数の方や値にアクセスしたり、メソッドや関数の戻り値の型や値にアクセスできる。 AspectC++ウェブサイト(下記外部)にドキュメントやチュートリアルがあるほか、AOSDカンファレンスの議事録にはAspect指向プログラミングとAspectC++に関する記事が掲載されている。 ==外部リンク== * AspectC++ 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「AspectC++」の詳細全文を読む スポンサード リンク
|