英語版
このページの英語版を見る

dmd.opover

演算子オーバーロードを処理する。
Authors:

ソース opover.d

@safe bool isCommutative(EXP op);
バイナリ op のオペランドが演算子のオーバーロードに合うように反転できるかどうかを判定する。 演算子オーバーロードに適合させる。
Objects* opToArg(Scope* sc, EXP op);
演算子をテンプレート化された引数リストに変換するヘルパー関数
Expression op_overload(Expression e, Scope* sc, EXP* pop = null);
演算子オーバーロード。 演算子オーバーロードをチェックする。 を関数呼び出しに置き換える。
Parameters:
Expression e 演算子を持つ式
Scope* sc コンテキスト
EXP* pop がNULLでない場合、実際にオーバーロードされた演算子に設定される、 に設定される。 e.op.オペランドを逆にして オーバーロードにマッチする
Returns:
null 演算子オーバーロードでない場合、 そうでない場合は "式"である。
Expression build_overload(const ref Loc loc, Scope* sc, Expression ethis, Expression earg, Dsymbol d);
この参照と引数から関数呼び出しを構築するユーティリティ。
Dsymbol search_function(ScopeDsymbol ad, Identifier funcid);
集約広告から関数funcidを検索する。
bool inferForeachAggregate(Scope* sc, bool isForeach, ref Expression feaggr, out Dsymbol sapply);
ForeachAggregateを見て、何がforeachされているかを把握する。
Parameters:
Scope* sc コンテキスト
bool isForeach foreachの場合はtrue、foreach_reverseの場合はfalseを指定する。
Expression feaggr フォアアグリゲート
Dsymbol sapply を関数opApply/opApplyReverse、またはデリゲート、またはNULLに設定する。 オーバーロードの解決は行われない。
Returns:
feaggrが意味解析で更新される。 失敗した場合はfalseとなり、エラーとなる。
bool inferApplyArgTypes(ForeachStatement fes, Scope* sc, ref Dsymbol sapply);
foreachパラメータの配列と集約型が与えられる、 最適なopApplyオーバーロードを見つける、 パラメータ型がない場合は、集約型から推測する。 パラメータ型が欠けている場合は、集約型から推論を試みる。
Parameters:
ForeachStatement fes foreach文
Scope* sc コンテキスト
Dsymbol sapply null または opApply または delegate の場合、オーバーロード解決が行われていない。 sapplyでオーバーロード解決を行う。
Returns:
エラーの場合はfalse