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

dmd.dsymbol

Dシンボルの基本クラス。モジュール、変数、関数、列挙型など。
Authors:

ソースdsymbol.d

カバレッジ https://codecov.io/gh/dlang/dmd/src/master/src/dmd/dsymbol.d

int foreachDsymbol(Dsymbols* symbols, scope int delegate(Dsymbol) dg);
各 Dsymbol に対して dg(Dsymbol *sym) を呼び出す。 dg が 0 以外を返した場合、処理を中止し、その値を返す。それ以外の場合、0 を返す。
Parameters:
Dsymbols* symbols Dsymbols
int delegate(Dsymbol) dg 各Dsymbolの呼び出しを委任する
Returns: dg()が最後に返した値
最後にdg()が返した値
void foreachDsymbol(Dsymbols* symbols, scope void delegate(Dsymbol) dg);
各 Dsymbol に対して dg(Dsymbol *sym) を呼び出す。
Parameters:
Dsymbols* symbols Dsymbols
void delegate(Dsymbol) dg 各Dsymbolに対して呼び出す
struct FieldState;
構造体/クラス/共用体のフィールドの状態。 ビットフィールドなどのフィールドオフセットを設定する際の一時的な情報として使用される。
uint offset;
次のフィールドのバイトオフセット
uint fieldOffset;
ビットフィールドの開始位置のバイトオフセット
uint fieldSize;
フィールドのバイトサイズ
uint fieldAlign;
フィールドのバイト整列
uint bitOffset;
ビットオフセット
bool inFlight;
ビットフィールドが処理中である
class Dsymbol: dmd.ast_node.ASTNode;
ushort localNum;
FuncDeclaration.localsymtab内の名前との衝突を避けるために、名前を変更する
final Module getModule();
どのモジュールにDSymbolがあるかを決定する。
final bool isCsymbol();
このDシンボルはCファイルから来ているか?
Returns:
そうであれば true
final Module getAccessModule();
アクセス権限の範囲内で、DSymbol がどのモジュールに属するかを決定する。
final inout @safe inout(Dsymbol) pastMixin();
pastMixinこれがテンプレートミックスインの場合、包含シンボルを返します。
pastMixinAndNspace 同様に、さらにmangleOnlyであるNスペースをスキップする。 、 、 も参照のこと。
parent toParent toParent2
final inout @safe inout(Dsymbol) toParent();

final inout @safe inout(Dsymbol) toParent2();

final inout inout(Dsymbol) toParentDecl();

final inout inout(Dsymbol) toParentLocal();
parent フィールドは、メンバーが属する()()的に最も外側のスコープシンボルを返す。
toParent()論理的に包み込むスコープシンボルを返す。これはそのメンバーである。 TemplateMixinのものはスキップする。
toParent2()実行時に存在するスコープシンボルを返す。 TemplateInstance および TemplateMixin の両方をスキップする。 囲む関数/クラスの 'this' ポインタを探す際に使用する。
toParentDecl()似ているが、 toParent2()が、常にテンプレート宣言のスコープに従う。 インスタンス化のスコープではなく。
toParentLocal()似ているが、 toParentDecl()ただし、テンプレートの宣言が非ローカル、すなわちグローバルまたはスタティックである場合は、インスタンス化スコープに従う。
Examples:
 module mod;
 template Foo(alias a) { mixin Bar!(); }
 mixin template Bar() {
   public {  // 可視性宣言
     void baz() { a = 2; }
   }
 }
 void test() {
   int v = 1;
   alias foo = Foo!(v);
   foo.baz();
   assert(v == 2);
 }

 // s == FuncDeclaration('mod.test.Foo!().Bar!().baz()')
 // s.parent == TemplateMixin('mod.test.Foo!().Bar!()')
 // s.toParent() == TemplateInstance('mod.test.Foo!()')
 // s.toParent2() == FuncDeclaration('mod.test')
 // s.toParentDecl() == Module('mod')
 // s.toParentLocal() == FuncDeclaration('mod.test')
xml-ph-0000@deepl.internalの宣言スコープを返す。ただし、シンボルが指定されている場合はそのスコープを返す。
final Dsymbol toParentP(Dsymbol p1, Dsymbol p2 = null);
this の宣言スコープを返す。ただし、シンボルが p1または p2その包囲するインスタンス化スコープ内に存在する場合は、 後者が返されます。
final bool followInstantiationContext(Dsymbol p1, Dsymbol p2 = null);
シンボルのいずれかが p1または p2this の包囲する インスタンス化スコープに存在する
static Dsymbols* arraySyntaxCopy(Dsymbols* a);
DSymbolの配列の構文コピーを行う。
Dsymbol toAlias();
このシンボルが本当に別のもののエイリアスである場合、 その別のものを返す。 必要に応じて、前方参照を解決するためにsemantic()が呼び出される。
Dsymbol toAlias2();
同名のテンプレートにおける再帰的なタプル展開を解決する。
uinteger_t size(const ref Loc loc);
Returns:
サイズが決定できない場合、SIZE_INVALIDを返す
final inout inout(AggregateDeclaration) isMember();
toParent() がそれである場合、AggregateDeclaration を返す。
final inout inout(AggregateDeclaration) isMember2();
toParent2() が真の場合 AggregateDeclaration を返す。
final inout inout(AggregateDeclaration) isMemberDecl();
toParentDecl() がその場合、AggregateDeclaration を返す。
final inout inout(AggregateDeclaration) isMemberLocal();
toParentLocal() がその場合、AggregateDeclaration を返す。
pure nothrow @nogc @safe Visibility visible();
Dsymbol syntaxCopy(Dsymbol s);
構文をコピーする。 テンプレートのインスタンス化に使用される。 sがNULLの場合は、新しいオブジェクトを割り当て、そうでなければそれを埋める。
bool oneMember(out Dsymbol ps, Identifier ident);
このシンボルが1つだけかどうかを判断する。
Returns:
false、ps = null:シンボルが2つ以上存在する true、ps = null:シンボルが0つ存在する true、ps = symbol:唯一のシンボル
static bool oneMembers(Dsymbols* members, out Dsymbol ps, Identifier ident);
Dsymbol::oneMember()と同じだが、Dsymbolsの配列を見てみよう。
bool hasPointers();
DSymbolはポインタを含む変数か?
void addComment(const(char)* comment);
DSymbolにドキュメントコメントを追加する。 NULLコメントは無視する。
final const(char)* comment();
このDsymbolのドキュメントコメントを取得する
final UnitTestDeclaration ddocUnittest();
このシンボルに関連付けられた ddoc unittest を取得する。 (ddoc でのみ使用)
Returns:
ddoc unittest、該当なし
final void ddocUnittest(UnitTestDeclaration utd);
このシンボルに関連する ddoc unittest を設定する。
final bool inNonRoot();
このシンボルが非ルートモジュールでインスタンス化されずに定義されている場合、trueを返す。
static void deinitialize();
コンパイラのグローバル状態を再初期化する。
これは、_init によって設定された状態を元の状態に復元するために使用できる。
void accept(Visitor v);
class ScopeDsymbol: dmd.dsymbol.Dsymbol;
スコープシンボルを生成するシンボル。
Dsymbols* importedScopes;
、すなわち、インポートされたモジュールやテンプレートミックスインなどのメンバーをインポートする
final pure nothrow @nogc @safe Dsymbols* getImportedScopes();
Returns:
メンバーがインポートされたシンボル、すなわちインポートされたモジュールと テンプレートミックスイン。
See Also:
importScope
final pure nothrow @nogc @safe Visibility.Kind[] getImportVisibilities();
Returns:
各インポートされたスコープに関連付けられた可視性の配列。 配列の長さは、インポートされたスコープの配列と一致する。
See Also:
getImportedScopes
nothrow Dsymbol symtabInsert(Dsymbol s);
テーブルにDsymbolを挿入する。
Parameters: シンボルを追加する
Dsymbol s シンボルを追加する
Returns:
テーブルにすでに存在する場合はnull、 s挿入された場合
nothrow Dsymbol symtabLookup(Dsymbol s, Identifier id);
シンボルテーブルで識別子を検索する。
Parameters:
Dsymbol s シンボル
Identifier id 識別子を調べる
Returns:
見つかった場合はDsymbol、見つからなかった場合はnullを返す
bool hasStaticCtorOrDtor();
メンバのいずれかが静的コンストラクタまたは静的デストラクタである場合、または メンバがメンバを持つ場合、trueを返す。
class WithScopeSymbol: dmd.dsymbol.ScopeDsymbol;
With 文のスコープ
class ArrayScopeSymbol: dmd.dsymbol.ScopeDsymbol;
配列インデックス/スライスのスコープ
class OverloadSet: dmd.dsymbol.Dsymbol;
オーバーロード セット
class ForwardingScopeDsymbol: dmd.dsymbol.ScopeDsymbol;
ForwardingScopeDsymbol。ForwardingAttribDeclarationおよびForwardingScopeDeclarationで使用され、シンボルの挿入を別のスコープに転送する。 詳細はdmd.attrib.ForwardingAttribDeclaration を参照のこと。
nothrow Dsymbol symtabLookup(Dsymbol s, Identifier id);
このオーバーライドは、以下の2つのケースを処理する。 static foreach (i, i; [0]) { ... } および static foreach (i; [0]) { enum i = 2; }
class ExpressionDsymbol: dmd.dsymbol.Dsymbol;
式をDSymbolラッパーで保持するクラス。 これはASTノードではなく、 DSymbol型の関数パラメータとして式を渡すために使用されるクラスである。
class AliasAssign: dmd.dsymbol.Dsymbol;
エイリアスへの代入をカプセル化する: identifier = type; identifier = symbol; ここで、identifier はスコープ内のエイリアス宣言である。
Identifier ident;
Dsymbolのidentはnullになる。このクラスは匿名クラスであるため
Type type;
AliasDeclarationの右辺を置き換える。 type
Dsymbol aliassym;
AliasDeclarationの前の右辺を aliassym
nothrow @safe this(const ref Loc loc, Identifier ident, Type type, Dsymbol aliassym);
aliassym の型は1つだけ、かつ、aliassym は null ではない可能性がある
class DsymbolTable: dmd.rootobject.RootObject;
Dsymbolの
nothrow Dsymbol lookup(const Identifier ident);
シンボルテーブルで識別子を検索する
Parameters:
Identifier ident 識別子を調べる
Returns: Dsymbolが見つかればそれを返し、見つからなければnullを返す。
見つかればDsymbol、見つからなければnull
nothrow void update(Dsymbol s);
シンボルテーブル内の既存のシンボルを置き換える s。 存在しない場合は追加する。
Parameters:
Dsymbol s 同じ識別子を持つ置換シンボル
nothrow Dsymbol insert(Dsymbol s);
テーブルに Dsymbol を挿入する。
Parameters:
Dsymbol s シンボルを追加する
Returns: テーブルにすでに存在する場合はnullを挿入する。
テーブルにすでに存在する場合はnull、 s挿入された場合
nothrow Dsymbol insert(const Identifier ident, Dsymbol s);
テーブルにD記号を挿入する。
Parameters:
Identifier ident インデックスとして使用する識別子
Dsymbol s 追加する
Returns: テーブルにすでに存在する場合はnullを挿入する。
テーブルにすでに存在する場合はNULL、 s挿入された場合
const pure nothrow size_t length();
Returns: シンボルテーブル内のシンボル数を
シンボルテーブル内のシンボルの数を
class CAsmDeclaration: dmd.dsymbol.Dsymbol;
グローバルasm 定義。