xrea-banner xreaad

DELEGATE() マクロ

namespace kilrey; / C 言語, C++ / 自作ライブラリ / DELEGATE() マクロ

委譲 で書いた DELEGATE() マクロをライブラリ化しました。 DELEGATE() に委譲元の関数名と委譲先、返り値、引数の数を渡すと 委譲する関数を生成するというものです。 ライセンスは MIT License です。 (download)

  • DELEGATE() の委譲元は通常の関数またはメンバ関数です。
  • 委譲元は inline 宣言します。
  • 委譲元を静的関数または静的メンバ関数として定義するには DELEGATE_FLAG() に委譲元の関数名と委譲先、返り値、引数に加えて フラグとして static を渡します。 その他のフラグを設定する場合も同様です。
  • 委譲先は通常の関数または特定のインスタンスのメンバ関数、 静的メンバ関数など自由に設定出来ます。
  • 呼び出し時に与えられた引数が委譲先の関数に合わなかった場合は 静的にコンパイル・エラーになります。
  • 委譲先の関数がオーバーロードされている場合は template によって静的にディスパッチされます。
  • 現在は引数 10 個までしか対応していません。 必要ならばソースコードを読んで適当に増やしてください。

という特徴を持っています。 最初はサンプルとして書いたのですが結構実用的ではないかと思います。 ちなみに中身はかなり強引なマクロで実装しています。

それではインストールの仕方です。 展開後のディレクトリで

./configure
make
sudo make install
    

としてください。 /usr/local 以下にインストールされます。 インストール先を変えるには

./configure --prefix=/home/kilrey/usr/local
    

というように指定してください。 その他のオプションは GNU autoconf/automake に準じます。 当ライブラリはヘッダしかありません。 利用するには kdelegate.hpp を include してください。 コードの書き方は付属の test/main.cpp を読んでください。