IModelObject インターフェイス (dbgmodel.h)
IModelObject インターフェイスは、オブジェクトの概念をカプセル化します。つまり、そのオブジェクトが整数、文字列、デバッガーのターゲット アドレス空間内の複合型であるかどうか。
継承
IModelObject は IUnknown から継承します。
メソッド
IModelObject インターフェイスには、これらのメソッドがあります。
IModelObject::AddParentModel AddParentModel メソッドは、指定されたオブジェクトに新しい親モデルを追加します。 |
IModelObject::AddRef AddRef メソッドは、オブジェクトのインターフェイスの参照カウントをインクリメントします。 このメソッドは IModelObject インターフェイスに属します。 |
IModelObject::ClearConcepts ClearConcepts メソッドは、このメソッドによって指定されたオブジェクトのインスタンスからすべての概念を削除します。 |
IModelObject::ClearKeys ClearKeys メソッドは、このメソッドによって指定されたオブジェクトのインスタンスから、すべてのキーとその関連する値とメタデータを削除します。 |
IModelObject::Compare Compare メソッドは、2 つのモデル オブジェクトを比較し、それらのオブジェクトの関係を示す値を返します。 |
IModelObject::D ereference Dereference メソッドは、オブジェクトを逆参照します。 |
IModelObject::EnumerateKeyReferences EnumerateKeyReferences メソッドは、EnumerateKeyValues メソッドと同様に動作しますが、キーの値ではなく列挙するキーへの参照を返す点が異なります。 |
IModelObject::EnumerateKeys 動的キー プロバイダー内のキーを列挙します。 |
IModelObject::EnumerateKeyValues EnumerateKeyValues メソッドは、オブジェクトのすべてのキーを列挙するためにクライアントが最初に使用するメソッドです。 |
IModelObject::EnumerateRawReferences EnumerateRawReferences メソッドは、指定されたオブジェクトのすべてのネイティブ子 (フィールド、基底クラスなど) への参照を列挙します。 |
IModelObject::EnumerateRawValues EnumerateRawValues メソッドは、指定されたオブジェクトのすべてのネイティブ子 (フィールド、基底クラスなど) を列挙します。 |
IModelObject::GetConcept GetConcept メソッドは、オブジェクト (またはその親モデル チェーン) の概念を検索し、概念インターフェイスへのインターフェイス ポインターを返します。 |
IModelObject::GetContext GetContext メソッドは、オブジェクトに関連付けられているホスト コンテキストを返します。 |
IModelObject::GetContextForDataModel GetContextForDataModel メソッドは、SetContextForDataModel の以前の呼び出しで設定されたコンテキスト情報を取得するために使用されます。 |
IModelObject::GetIntrinsicValue GetIntrinsicValue メソッドは、IModelObject 内でボックス化されたオブジェクトを返します。 |
IModelObject::GetIntrinsicValueAs GetIntrinsicValueAs メソッドは、値を指定されたバリアント型に変換することを除き、GetIntrinsicValue メソッドと同じように動作します。 |
IModelObject::GetKey GetKey メソッドは、指定されたキーの値 (および関連付けられているメタデータ) を名前で取得します。 |
IModelObject::GetKeyReference オブジェクトまたはその親モデルの 1 つに引数 'key' に従って名前が付けられたキーがある場合、そのキーへの参照が返されます。 |
IModelObject::GetKeyValue GetKeyValue メソッドは、指定されたキーの値 (および関連付けられているメタデータ) を名前で取得するためにクライアントが最初に使用するメソッドです。 |
IModelObject::GetKind GetKind メソッドは、IModelObject 内でボックス化されたオブジェクトの種類を返します。 |
IModelObject::GetLocation GetLocation メソッドは、ネイティブ オブジェクトの場所を返します。 このような場所は通常、デバッグ ターゲットのアドレス空間内の仮想アドレスですが、必ずしもそうであるとは限りません。 |
IModelObject::GetNumberOfParentModels GetNumberOfParentModels メソッドは、指定されたオブジェクト インスタンスにアタッチされている親モデルの数を返します。 |
IModelObject::GetParentModel GetParentModel メソッドは、指定されたオブジェクトの親モデル チェーン内の i 番目の親モデルを返します。 |
IModelObject::GetRawReference GetRawReference メソッドは、指定されたオブジェクト内のネイティブ コンストラクトを検索し、そのオブジェクトへの参照を返します。 |
IModelObject::GetRawValue GetRawValue メソッドは、指定されたオブジェクト内のネイティブ コンストラクトを検索します。 このようなコンストラクトは、フィールド、基底クラス、基底クラスのフィールド、メンバー関数などです。 |
IModelObject::GetTargetInfo GetTargetInfo メソッドは、実質的には、指定されたオブジェクトのネイティブ型と抽象場所の両方を返す GetLocation メソッドと GetTypeInfo メソッドの組み合わせです。 |
IModelObject::GetTypeInfo GetTypeInfo メソッドは、指定されたオブジェクトのネイティブ型を返します。 オブジェクトにネイティブ型情報が関連付けられていない場合、呼び出しは引き続き成功しますが、null を返します。 |
IModelObject::IsEqualTo IsEqualTo メソッドは、ホスト コンテキストを別のホスト コンテキストと比較します。 2 つのコンテキストが等しい場合は、これが示されます。 この比較はインターフェイスの等価性ではないことに注意してください。 |
IModelObject::QueryInterface IModelObject::QueryInterface メソッドは、オブジェクトでサポートされているインターフェイスへのポインターを取得します。 |
IModelObject::Release IModelObject::Release メソッドは、オブジェクトのインターフェイスの参照カウントをデクリメントします。 |
IModelObject::RemoveParentModel RemoveParentModel は、指定されたオブジェクトの親検索チェーンから指定された親モデルを削除します。 |
IModelObject::SetConcept SetConcept メソッドは、このポインターによって指定されたオブジェクト インスタンスに指定された概念を配置します。 |
IModelObject::SetContextForDataModel SetContextForDataModel メソッドは、インスタンス オブジェクトに実装データを配置するためにデータ モデルの実装によって使用されます。 |
IModelObject::SetKey SetKey メソッドは、オブジェクトにキーを作成するためにクライアントが設定するメソッドです (また、メタデータを作成されたキーに関連付ける可能性があります)。 |
IModelObject::SetKeyValue SetKeyValue メソッドは、キーの値を設定するためにクライアントが最初に設定するメソッドです。 このメソッドを使用して、オブジェクトに新しいキーを作成することはできません。 |
IModelObject::TryCastToRuntimeType TryCastToRuntimeType メソッドは、デバッグ ホストに分析の実行を求め、指定されたオブジェクトの実際のランタイム型 (ほとんどの派生クラス) を決定します。 |
備考
データ モデルに関する最も基本的で強力なものの 1 つは、オブジェクトとは何か、およびオブジェクトとの対話方法の定義を標準化することです。 IModelObject インターフェイスは、オブジェクトの概念をカプセル化します。つまり、そのオブジェクトが整数、浮動小数点値、文字列、デバッガーのターゲット アドレス空間内の複合型、またはプロセスやモジュールの概念のようなデバッガーの概念であるかどうか。
IModelObject に保持 (またはボックス化) できるさまざまなものがあります。
• 組み込み値 - IModelObject には、8、16、32、または 64 ビットの符号付き整数または符号なし整数、ブール値、文字列、エラー、または空の概念という多くの基本型のコンテナーを指定できます。
• ネイティブ オブジェクト - IModelObject は、デバッガーが対象としているもののアドレス空間内で複合型 (デバッガーの型システムによって定義) を表すことができます
• 合成オブジェクト - IModelObject は動的オブジェクトにすることができます。動的オブジェクトは、キー/値/メタデータタプルのコレクションと、キー/値ペアで表されるだけの動作を定義する概念のセットです。
• Properties - IModelObject はプロパティを表すことができます。値を取得したり、メソッド呼び出しで変更したりできます。 IModelObject 内のプロパティは、実質的に IModelObject にボックス化された IModelPropertyAccessor インターフェイス
• メソッド - IModelObject はメソッドを表すことができます。一連の引数を使用して呼び出し、戻り値を取得できます。 IModelObject 内のメソッドは、実質的に IModelObject にボックス化された IModelMethod インターフェイスです
IModelObject は、分離されたオブジェクトではありません。 上に示したオブジェクトの種類の 1 つを表すだけでなく、各オブジェクトには親データ モデルのチェーンの概念があります。 このチェーンは |JavaScript プロトタイプ チェーン。 JavaScript のようなプロトタイプの線形チェーンの代わりに、各データ モデル オブジェクトは親モデルの線形チェーンを定義します。 これらの各親モデルには、独自の親セットの別の線形チェーンがあります。 基本的に、各オブジェクトは、それ自体とこのツリー内のすべてのオブジェクトの両方の機能 (プロパティなど) の集計です。 特定のプロパティを照会するときに、クエリ対象のオブジェクトがそのプロパティをサポートしていない場合、クエリは順番に各親に線形順に渡されます。 これにより、集計ツリーの深さ優先検索によってプロパティの検索が解決される動作が作成されます。
このオブジェクト モデル内の拡張性は、すべてのオブジェクトがそれ自体と親モデルのツリーの集約であるという考え方を考えると、非常に単純です。 拡張機能が追加され、別のオブジェクトの親モデルの一覧に追加されます。 これを行うと、オブジェクトが拡張されます。 この方法では、オブジェクトまたは値の特定のインスタンス、ネイティブ型、プロセスまたはスレッドのデバッガーの概念、さらには "すべての iterable オブジェクト" の概念など、あらゆる機能を追加できます。
必要条件
要件 | 価値 |
---|---|
ヘッダー | dbgmodel.h |