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

dmd.aggregate

struct,union またはclass である集合体を表すDsymbol を定義する。

仕様 構造体、共用体"、 クラスである。

Authors:

ソース aggregate.d

enum ClassKind: ubyte;
ClassKind 列挙型は、AggregateDeclaration AST ノードで使用される。 構造体/クラス/インターフェースの連結型を指定する。 が匿名クラスであるかどうかを指定する。クラスが匿名である場合も Dクラスとみなされる。
d
集合体はD(efault)クラスである。
cpp
集合体がC++の構造体/クラス/インターフェイスである。
objc
集合体はObjective-Cのクラス/インターフェイスである。
c
集合体はC構造体である。
@safe const(char)* ClassKindToChars(ClassKind c);
エラーメッセージのクラスの種類に適切な文字列を与える
Parameters:
ClassKind c クラスの種類
Returns:
のための0終端文字列 c
struct MangleOverride;
集約がpargma(mangle, ...)を持つ場合、これは情報を保持する。 を保持する。
abstract class AggregateDeclaration: dmd.dsymbol.ScopeDsymbol;
Class-とStructDeclarationの共通の祖先としての抽象集約。
Type type;
StorageClass storage_class;
uint structsize;
構造体のサイズ
uint alignsize;
整列のための構造体のサイズ。
VarDeclarations fields;
VarDeclarationフィールド
Dsymbol deferred;
任意の遅延semantic2()またはsemantic3()シンボル
ClassKind classKind;
D、C++、Objective-C、または匿名構造体/クラス/インターフェイスのいずれかを指定する。
CPPMANGLE cppmangle;
集合体をclass 、または としてマングルするかどうかを指定する。struct この情報はMSVCマングラーによって使用される。 クラスと構造体に対してのみ有効である。TODO: ClassKindと統合する。
MangleOverride* pMangleOverride;
もしnullでなければ、pragma(mangle, "...")でオーバーライドされたシンボルを指定する。
Dsymbol enclosing;
ネストされている場合は !=null それを直接囲むdsymbolを指す。
  1. それを囲む関数(入れ子になった構造体やクラス)。
  2. それを囲むクラス(入れ子になったクラスのみ)
  3. 囲んでいる集合体がテンプレートの場合は、それを囲んでいる dsymbol。
詳細は AggregateDeclaraton::makeNested を参照。
VarDeclaration vthis;
この集約が入れ子になっている場合は 'this' パラメータを返す。
VarDeclaration vthis2;
この集約がテンプレートで入れ子になっている場合は 'this' パラメータを返す。
FuncDeclarations invs;
不変量の配列
FuncDeclaration inv;
invs の全メンバーを呼び出すマージされた不変量
Dsymbol ctor;
CtorDeclarationまたはTemplateDeclarationである。
CtorDeclaration defaultCtor;
デフォルトのコンストラクタ - 引数を持つべきではない。 TypeInfo_Class.defaultConstructorに格納されるからである。
AliasThis aliasthis;
未解決のルックアップをaliasthisに転送する。
DtorDeclarations userDtors;
ユーザ定義のデストラクタ (~this()) - "ミックスイン"は複数のデストラクタを生成することができる。
DtorDeclaration aggrDtor;
userDtorとfieldDtorを呼び出す集約デストラクタ(C++クラスの場合はベースクラスの集約dtorも)。
DtorDeclaration dtor;
__xdtor エイリアスとして公開される集約デストラクタ。
DtorDeclaration tidtor;
(aggrDtorと同じ。ただし、Windows上の仮想Dtorを持つC++クラスは除く)
TypeInfoで使用される集約デストラクタ(extern(D) ABIでなければならない)
DtorDeclaration fieldDtor;
(継承されていない)フィールドをデストラクトする関数。
Expression getRTInfo;
object.RTInfo(this)によって生成されるGC情報へのポインタ。
Visibility visibility;
bool noDefaultCtor;
デフォルトの構築は行わない
bool disableNew;
を使用したアロケーションを許可しないnew
Sizeok sizeok;
structsizeに有効なデータが含まれる場合に設定する
Scope* newScope(Scope* sc);
scから新しいスコープを作成する。 semantic、semantic2、semantic3はこれを集約メンバーに使用する。
final size_t nonHiddenFields();
Returns:
フィールドの総数から隠しフィールドの数を引く。
final bool determineSize(const ref Loc loc);
すべてのインスタンスフィールドを収集し、インスタンスサイズを決定する。
Returns:
サイズの決定に失敗した場合はfalseを返す。
final bool checkOverlappedFields();
field[i].overlappedとoverlapUnsafeを計算し、すべての明示的な フィールドのイニシャライザがインスタンス上で一意のメモリ空間を持っていることをチェックする。
Returns:
エラーが発生したらtrueを返す。
final bool fill(const ref Loc loc, ref Expressions elements, bool ctorinit);
elements[]の残りをfields[]のデフォルトのイニシャライザで埋める。
Parameters:
Loc loc 場所
Expressions elements オブジェクトを構築するために与えられる明示的な引数。
bool ctorinit 要素がデフォルト初期化に使われる場合はtrueを指定する。
Returns:
エラーが発生した場合はfalseを返す。 それ以外の場合はtrueを返し、足りない引数はelements[]にプッシュされる。
final void setDeprecated();
この集約に非推奨フラグを付ける
final const bool isNested();
この集約を非推奨とするフラグを立てる。 包含コンテキスト(包含集合体または関数)へのポインタ。
final Dsymbol searchCtor();
コンストラクタの宣言を探す
void* sinit;
イニシャライザシンボル
int apply(Dsymbol symbol, int function(Dsymbol, void*) fp, void* ctx);
このdsymbolまたはこのスコープ付きdsymbolのメンバを反復処理し、次に を呼び出す。 fp見つかったシンボルとparams
Parameters:
Dsymbol symbol fpを呼び出すdsymbolまたはメンバーの親。
int function(Dsymbol, void*) fp 関数ポインタで、反復されたシンボルを処理する。 fpがゼロ以外を返した場合、反復は中止される。
void* ctx fpに渡されるコンテキスト・パラメータ。
Returns:
fpの戻り値によって反復が中止された場合は非ゼロ、 完了した場合は0となる。
pure nothrow @safe uint alignmember(structalign_t alignment, uint memalignsize, uint offset);
必要に応じてバイトまたはワードのアライメントを行う。 配列のサイズがまだわからないかもしれないので、サイズを0に揃える。
Parameters:
structalign_t alignment 構造体アライメントが有効である。
uint memalignsize フィールドのナチュラルアライメント
uint offset アラインメントされるオフセット
Returns:
アラインされたオフセット
pure nothrow @safe uint placeField(ref uint nextoffset, uint memsize, uint memalignsize, structalign_t alignment, ref uint aggsize, ref uint aggalignsize, bool isunion);
フィールド(mem)を集合体(agg)に入れる。
Parameters:
uint nextoffset 集合体の前のフィールドの終わりを過ぎたところに配置する。 配置されるフィールドの最後、つまり将来のnextoffsetのすぐ後になるように更新される。
uint memsize フィールドのサイズ
uint memalignsize フィールドのナチュラルアライメント
structalign_t alignment このフィールドで有効なアライメント
uint aggsize 集合体のサイズ(更新)
uint aggalignsize 集合体のアライメント(更新)
bool isunion 集合体は共用体である。
Returns:
フィールドを置くオフセットのアラインメント