2016-06-28 10 views
3

自分のコードを変更せずに、自分のタイプのビルディングマクロをプロジェクトのすべてのクラスに適用できますか?Haxe:@を追加する:プロジェクト内のすべてのクラスにメタデータを作成

私はHaxeマクロに基づいてデバッガを実装しようとしています。基本的には、クラスのすべての関数のすべての式の間に関数への呼び出しを挿入します。現在私はインターフェイスIDebuggableを持っており、そのインターフェイスを実装するクラスのコードだけがブレークポイントで停止することができます。

答えて

6

これにはhaxe.macro.Compiler.addGlobalMetadata()を使用できます。これは、initialization macroまたはコマンドラインから行うことができます。

--macro addGlobalMetadata('', '@:build(Build.build())') 
+0

standartクラスまたはライブラリクラスとプロジェクトクラスを区別することはできますか?現在、このコードを追加しましたが、これは醜いです: \t \t \t \t var module = Context.getLocalModule(); \t \t場合(モジュール== 'DebugRuntime' \t \t \t || module.indexOf( 'haXeの')== 0 \t \t \t || module.indexOf( 'フラッシュ')== 0) \t \t \t nullを返す。 – romamik

+0

'pathFilter'引数を利用できます。 – Gama11

+0

どうすればそれを使うことができないのでしょうか。 1つのプレフィックスだけをフィルタリングすることができます。しかし、ほとんどのプロジェクトにはさまざまなパッケージがあります。私はファイルパスに基づいてフィルタを適用し、Context.CurrentPosからファイルパスを取得することは可能だと思いますが、このためにはプロジェクトのソースパスが必要です。 – romamik

関連する問題