現在の位置
backup プラグインを使用中
- バックアップ一覧
- 差分 を表示
- ソース を表示
- バックアップ を表示
- 仕様/拡張/Hook へ行く。
- 1 (2009-09-10 (木) 19:51:27)
- 2 (2009-09-10 (木) 19:59:43)
- 3 (2009-09-19 (土) 08:25:55)
- 4 (2017-12-23 (土) 22:36:53)
- 追加された行はこの色です。
- 削除された行はこの色です。
*はじめに [#qa5b4ffa] -鬼斬では,ユーザーによるモジュールを拡張するための仕組みとしてHook と呼ぶ仕組みを用意している. -Hook は,フェッチやリネームと言ったシミュレータ本来の処理を横取り(フック)するための仕組みである. -任意のオブジェクトとメソッドのペアをHook に登録することにより,本来の処理を横取りできる. -Hook を用いることにより,ユーザーはモジュールに直接手を加えることなく,シミュレータの拡張を行える. --Hook は,フェッチやリネームと言ったシミュレータ本来の処理を横取り(フック)するための仕組みである. --任意のオブジェクトとメソッドのペアをHook に登録することにより,本来の処理を横取りできる. --Hook を用いることにより,ユーザーはモジュールに直接手を加えることなく,シミュレータの拡張を行える. --主な実装は/src/Sim/Foundation/Hook/Hook.h にある *動作 [#r0b48035] -各箇所に儲けられたHook オブジェクトに対し, --Register でオブジェクトとメソッドを登録 --Trigger で登録されたメソッドが呼び出される *使用例 [#m41a1109] -''2018/02/06追記 最新版の鬼斬では型が異なっており,以下の記述そのままでは動かない.Src/Samples/SampleHookModule.h, SampleNullModule.hを参照のこと.'' -Fetcher によるフェッチをフックする場合について述べる -以下は,Fetcher で定義されているフックfetchHook に対し,MyFetcher::Fetch を登録する場合の例である. --メソッドのポインタを登録する際は,MyFetcher::Fetch の様にクラス名を付加しなければならない点に注意 HookPoint<Fetcher> Fetcher::s_fetchHook //---- MyFetcher { public: void Fetch( HookParameter<Fetcher> param ) { } } //---- MyFetcher myFetcher; Fetcher::s_fetchHook.Register( &myFetcher, &MyFetcher::Fetch, 0 );