MacroEnv (クラス)
public abstract shared MacroEnv
パッケージ: CURL.LANGUAGE.SOURCE
直接継承しているサブクラス: SyntaxEnv

各 define-macro は、MacroEnv 型の暗黙の引数である macro-env を受け取ります。このオブジェクトを使って、マクロが呼び出されるコンテキストに関してコンパイラをクエリすることができます。


プロパティ
directives:現在有効なコンパイラ ディレクティブ
アクセサ public abstract MacroEnv.directives:CompilerDirectives
manifest:マクロを呼び出すパッケージのマニフェスト。
アクセサ public MacroEnv.manifest:ComponentManifest
meta-data:マクロを呼び出すパッケージ内のメタデータ。
アクセサ public final MacroEnv.meta-data:ComponentMetaData

メソッド
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
directives (アクセサ)
アクセサ public abstract MacroEnv.directives:CompilerDirectives

現在有効なコンパイラ ディレクティブ



manifest (アクセサ)
アクセサ public MacroEnv.manifest:ComponentManifest

マクロを呼び出すパッケージのマニフェスト。

説明

これはマクロが呼び出されるパッケージの既定のマニフェスト (get-default-manifest を参照) です。


meta-data (アクセサ)
アクセサ public final MacroEnv.meta-data:ComponentMetaData

マクロを呼び出すパッケージ内のメタデータ。

説明

マクロを呼び出すパッケージに関連する ComponentMetaData オブジェクト。通常メタデータは凍結され、変更できません。
これを使って、curl-api-version のような多様なメタデータ属性に基づいて条件付きでコートをコンパイルすることができます。条件付きコンパイルでは紛らわしい結果が生成される恐れがあるので、注意して使うようにしてください。

次の簡単なマクロは、デバッグ可能なコード内で評価される場合にはその内容を展開し、それ以外の場合は展開を行いません。このマクロを使って、デバッグ不可能なコードのパフォーマンスに影響を及ぼさずにデバックを実行するときに必要な、追加の診断情報を生成することができます。
{define-macro public {when-debuggable ?rest:tokens}
    {return
        {if macro-env.meta-data.debuggable? then
            {expand-template ?rest}
         else
            {expand-template}
        }
    }
}
このマクロの使用例を次に示します。
{when-debuggable
    {output "DEBUG: The value of x is ", x}
}





メソッド詳細