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

dmd.dclass

class 宣言を定義する。

仕様 クラス

Authors:

ソース dclass.d

struct BaseClass;
bool fillVtbl(ClassDeclaration cd, FuncDeclarations* vtbl, int newinstance);
cd クラスのメンバ関数に基づいて、ベースクラスの vtbl[] を埋める。

入力 vtbl !=NULLの場合、それを埋める。 newinstance !=0は、すべてのエントリがcdのメンバによって埋められなければならないことを意味する。 cdの基底クラスのメンバではなく、cdのメンバによって記入されなければならない。

Returns:
エントリが cd のメンバによって埋められる場合、true が返される。 のメンバによって埋められる。)
class ClassDeclaration: dmd.aggregate.AggregateDeclaration;
bool stack;
これがスコープ・クラスであればtrue
int cppDtorVtblIndex;
これがC++クラスの場合、これは仮想デストラクタのために予約されたスロットである。
bool inuse;
再帰的な試みを防ぐ
Baseok baseok;
基底クラスの解決の進捗を設定する
ObjcClassDeclaration objc;
Objective-Cとの統合に必要なクラス宣言のデータ。 の統合に必要なクラス宣言のデータである。
final pure nothrow @nogc bool isBaseOf2(ClassDeclaration cd);
this'がcdの基底クラスかどうかを判定する。 これは循環継承を検出するためだけに使用される。
pure nothrow @nogc bool isBaseOf(ClassDeclaration cd, int* poffset);
this' が cd の基底クラスかどうかを判定する。
final const bool isBaseInfoComplete();
this' が完全な基底クラス情報を持っているかどうかを判定する。 これは、共変オーバーロードにおける前方参照を検出するために使用される。
final ClassDeclaration searchBase(Identifier ident);
基底クラスを深さ優先で左から右の順に検索する。 ident'という名前のクラスまたはインタフェースを左から右の順に検索する。 最初に見つかったところで停止する。追加のマッチは探さない。
Parameters:
Identifier ident 検索する識別子
Returns:
見つかればClassDeclaration、見つからなければnull
final bool hasMonitor();
Returns:
monitorフィールドがあればtrueを返す。
final FuncDeclaration findFunc(Identifier ident, TypeFunction tf);
識別子と型が一致する仮想関数を検索する。 インターフェース実装のための仮想関数テーブルを構築するために使用される。
Parameters:
Identifier ident 関数の識別子
TypeFunction tf 関数の型
Returns:
見つかれば関数シンボル、見つからなければNULL

エラー 複数一致した場合、エラーメッセージを表示する

final const bool isCOMclass();
final bool isAbstract();
const int vtblOffset();
vtbl[]のスロット0が他の何かのために予約されているかどうかを判断する。 クラス・オブジェクトの場合はそうで、ここにclassinfo ptrが入る。 COMインターフェイスの場合は、そうではない。 非COMインターフェースの場合、そうである。
Returns:
0 vtbl[0]は最初の仮想関数ポインタである。 1 vtbl[0]はclassinfo/interfaceinfoポインタである。
const const(char)* kind();
final void addObjcSymbols(ClassDeclarations* classes, ClassDeclarations* categories);
class InterfaceDeclaration: dmd.dclass.ClassDeclaration;
pure nothrow @nogc bool isBaseOf(ClassDeclaration cd, int* poffset);
this'がcdの基底クラスかどうかを判断する。 (実際には、cdがサポートするインターフェースであるかどうか)

出力 *poffset クラスの開始位置へのオフセット OFFSET_RUNTIMEは実行時にオフセットを決定しなければならない。

Returns:
falseはベースではない trueはベースである
const const(char)* kind();
const int vtblOffset();
vtbl[]のスロット0が他の何かのために予約されているかどうかを判断する。 クラス・オブジェクトの場合はそうで、ここにClassInfo ptrが入る。 COMインターフェースの場合は、「いいえ」。 非COMインターフェースの場合、そうである。