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

rt.aaA

連想配列の実装
Authors:
Martin Nowak

ソース rt/aaA.d

immutable int _aaVersion;
デバッガ用のAAバージョン。レイアウトを変更するたびにバンプする。
struct AA;
不透明なAAラッパー
Impl* _aaNew(const TypeInfo_AssociativeArray ti);
連想配列のデータを確保する。 new SomeAA 式で呼び出される。
Parameters:
TypeInfo_AssociativeArray ti 連想配列の型情報
Returns:
新しい連想配列。
pure nothrow @nogc size_t _aaLen(scope const AA aa);
連想配列のエントリ数を決定する。
void* _aaGetY(scope AA* paa, const TypeInfo_AssociativeArray ti, const size_t valsz, scope const void* pkey);
aaの*pkeyを検索する。 値は変更可能" の場合、(aa[key])式の実装からのみ呼び出される。
Parameters:
AA* paa 連想配列の不透明ポインタ
TypeInfo_AssociativeArray ti 連想配列の型情報
size_t valsz 無視される
void* pkey キー値へのポインタ
Returns:
keyがaaにあった場合は、既存の値への変更可能なポインタ。 keyがaaになかった場合は、新しく挿入された値への変更可能なポインタである。 はすべて0に設定される。
void* _aaGetX(scope AA* paa, const TypeInfo_AssociativeArray ti, const size_t valsz, scope const void* pkey, out bool found);
aa内の*pkeyを検索する。 requireの実装からのみ呼び出される。
Parameters:
AA* paa 連想配列の不透明ポインタ
TypeInfo_AssociativeArray ti 連想配列の型情報
size_t valsz 無視される
void* pkey キー値へのポインタ。
bool found 値が見つかった場合はtrueを返す
Returns:
keyがaa内にあった場合は、既存の値への変更可能なポインタ。 keyがaaになかった場合は、新しく挿入された値への変更可能なポインタである。 はすべて0に設定される。
inout(void)* _aaGetRvalueX(inout AA aa, scope const TypeInfo keyti, const size_t valsz, scope const void* pkey);
aa内の*pkeyを検索する。 値が変更可能でない場合、(aa[key])式の実装からのみ呼び出される。
Parameters:
AA aa 連想配列の不透明ポインタ
TypeInfo keyti キーの型情報
size_t valsz 無視される
void* pkey キー値へのポインタ
Returns:
存在すれば値へのポインタ、存在しなければNULL
inout(void)* _aaInX(inout AA aa, scope const TypeInfo keyti, scope const void* pkey);
aa内の*pkeyを検索する。 (key in aa)式の実装からのみ呼び出される。
Parameters:
AA aa 連想配列の不透明ポインタ
TypeInfo keyti キーの型情報
void* pkey キー値へのポインタ。
Returns:
存在すれば値へのポインタ、存在しなければnull
bool _aaDelX(AA aa, scope const TypeInfo keyti, scope const void* pkey);
エントリのスコープ const AA を削除する。
pure nothrow @safe void _aaClear(AA aa);
AA からすべての要素を削除する。
pure nothrow void* _aaRehash(AA* paa, scope const TypeInfo keyti);
AAをリハッシュする
pure nothrow inout(void[]) _aaValues(inout AA aa, const size_t keysz, const size_t valsz, const TypeInfo tiValueArray);
GCで割り当てられたすべての値の配列を返す。
pure nothrow inout(void[]) _aaKeys(inout AA aa, const size_t keysz, const TypeInfo tiKeyArray);
GCに割り当てられたすべてのキーの配列を返す
int _aaApply(AA aa, const size_t keysz, dg_t dg);
すべての値に対してforeach opApplyを行う
int _aaApply2(AA aa, const size_t keysz, dg2_t dg);
すべてのキーと値のペアに対してforeach opApplyを行う
Impl* _d_assocarrayliteralTX(const TypeInfo_AssociativeArray ti, void[] keys, void[] vals);
対応するキーと値から ti 型の連想配列を構築する。 AAリテラル[k1:v1, k2:v2] に対して呼び出される。
Parameters:
TypeInfo_AssociativeArray ti 連想配列の型情報
void[] keys キーの配列
void[] vals 値の配列
Returns:
新しい連想配列の不透明ポインタ。 keysは空である。
int _aaEqual(scope const TypeInfo tiRaw, scope const AA aa1, scope const AA aa2);
2つのAAが等しいかどうかを比較する。
nothrow hash_t _aaGetHash(scope const AA* paa, scope const TypeInfo tiRaw);
ハッシュを計算する
struct Range;
aaRangeはForwardRangeを実装している。