IModelObject-Schnittstelle (dbgmodel.h)
Die IModelObject-Schnittstelle kapselt den Begriff eines Objekts - ob es sich bei diesem Objekt um eine ganze Zahl, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers handelt.
Erbschaft
IModelObject erbt von IUnknown.
Methodik
Die IModelObject Schnittstelle hat diese Methoden.
IModelObject::AddParentModel Die AddParentModel-Methode fügt dem angegebenen Objekt ein neues übergeordnetes Modell hinzu. |
IModelObject::AddRef Die AddRef-Methode erhöht die Verweisanzahl für eine Schnittstelle in einem Objekt. Diese Methode gehört zur IModelObject-Schnittstelle. |
IModelObject::ClearConcepts Die ClearConcepts-Methode entfernt alle Konzepte aus der Instanz des durch dieses Objekt angegebenen Objekts. |
IModelObject::ClearKeys Mit der ClearKeys-Methode werden alle Schlüssel und die zugehörigen Werte und Metadaten aus der Instanz des objekts entfernt, das durch dieses Objekt angegeben wird. |
IModelObject::Compare Die Compare-Methode vergleicht zwei Modellobjekte und gibt einen Hinweis auf die Beziehung dieser Objekte zurück. |
IModelObject::D ereference Die Dereference-Methode leitet ein Objekt ab. |
IModelObject::EnumerateKeyReferences Die EnumerateKeyReferences-Methode verhält sich ähnlich wie die EnumerateKeyValues-Methode, mit der Ausnahme, dass verweise auf die Schlüssel zurückgegeben werden, die anstelle des Werts des Schlüssels aufgezählt werden. |
IModelObject::EnumerateKeys Listet die Schlüssel innerhalb des dynamischen Schlüsselanbieters auf. |
IModelObject::EnumerateKeyValues Die EnumerateKeyValues-Methode ist die erste Methode, an die ein Client sich wendet, um alle Schlüssel für ein Objekt aufzählen zu können. |
IModelObject::EnumerateRawReferences Die EnumerateRawReferences-Methode listet Verweise auf alle systemeigenen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf. |
IModelObject::EnumerateRawValues Die EnumerateRawValues-Methode listet alle systemeigenen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf. |
IModelObject::GetConcept Die GetConcept-Methode sucht nach einem Konzept für das Objekt (oder die übergeordnete Modellkette) und gibt einen Schnittstellenzeiger auf die Konzeptschnittstelle zurück. |
IModelObject::GetContext Die GetContext-Methode gibt den Hostkontext zurück, der dem Objekt zugeordnet ist. |
IModelObject::GetContextForDataModel Die GetContextForDataModel-Methode wird verwendet, um Kontextinformationen abzurufen, die mit einem vorherigen Aufruf von SetContextForDataModel eingerichtet wurden. |
IModelObject::GetIntrinsicValue Die GetIntrinsicValue-Methode gibt das Ding zurück, das innerhalb eines IModelObjects boxt wird. |
IModelObject::GetIntrinsicValueAs Die GetIntrinsicValueAs-Methode verhält sich ähnlich wie die GetIntrinsicValue-Methode, mit der Ausnahme, dass der Wert in den angegebenen Variantentyp konvertiert wird. |
IModelObject::GetKey Die GetKey-Methode ruft den Wert (und die metadaten, die einem bestimmten Schlüssel zugeordnet sind) anhand des Namens ab. |
IModelObject::GetKeyReference Wenn das Objekt oder eines seiner übergeordneten Modelle einen Schlüssel gemäß dem Argument "key" hat, gibt dies einen Verweis auf diesen Schlüssel zurück. |
IModelObject::GetKeyValue Die GetKeyValue-Methode ist die erste Methode, an die ein Client sich wendet, um den Wert (und die metadaten, die einem bestimmten Schlüssel zugeordnet sind) anhand des Namens abzurufen. |
IModelObject::GetKind Die GetKind-Methode gibt zurück, welche Art von Objekt innerhalb des IModelObject-Objekts enthalten ist. |
IModelObject::GetLocation Die GetLocation-Methode gibt den Speicherort des systemeigenen Objekts zurück. Während ein solcher Speicherort in der Regel eine virtuelle Adresse innerhalb des Adressraums des Debugziels ist, ist es nicht notwendigerweise so. |
IModelObject::GetNumberOfParentModels Die GetNumberOfParentModels-Methode gibt die Anzahl der übergeordneten Modelle zurück, die der angegebenen Objektinstanz angefügt sind. |
IModelObject::GetParentModel Die GetParentModel-Methode gibt das i-th-übergeordnete Modell in der übergeordneten Modellkette des angegebenen Objekts zurück. |
IModelObject::GetRawReference Die GetRawReference-Methode findet ein systemeigenes Konstrukt innerhalb des angegebenen Objekts und gibt einen Verweis darauf zurück. |
IModelObject::GetRawValue Die GetRawValue-Methode findet ein systemeigenes Konstrukt innerhalb des angegebenen Objekts. Ein solches Konstrukt kann ein Feld, eine Basisklasse, ein Feld in einer Basisklasse, eine Memberfunktion usw. sein. |
IModelObject::GetTargetInfo Die GetTargetInfo-Methode ist effektiv eine Kombination der GetLocation- und GetTypeInfo-Methoden, die sowohl den abstrakten Speicherort als auch den systemeigenen Typ des angegebenen Objekts zurückgeben. |
IModelObject::GetTypeInfo Die GetTypeInfo-Methode gibt den systemeigenen Typ des angegebenen Objekts zurück. Wenn dem Objekt keine systemeigenen Typinformationen zugeordnet sind, wird der Aufruf weiterhin erfolgreich ausgeführt, gibt jedoch NULL zurück. |
IModelObject::IsEqualTo Die IsEqualTo-Methode vergleicht einen Hostkontext mit einem anderen Hostkontext. Wenn die beiden Kontexte gleichwertig sind, wird ein Hinweis darauf zurückgegeben. Beachten Sie, dass dieser Vergleich keine Äquivalenz der Schnittstelle ist. |
IModelObject::QueryInterface Die IModelObject::QueryInterface-Methode ruft Zeiger auf die unterstützten Schnittstellen für ein Objekt ab. |
IModelObject::Release Die IModelObject::Release-Methode erhöht die Referenzanzahl für eine Schnittstelle eines Objekts. |
IModelObject::RemoveParentModel Das RemoveParentModel entfernt ein angegebenes übergeordnetes Modell aus der übergeordneten Suchkette des angegebenen Objekts. |
IModelObject::SetConcept Die SetConcept-Methode platziert ein angegebenes Konzept auf der objektinstanz, die durch diesen Zeiger angegeben wird. |
IModelObject::SetContextForDataModel Die SetContextForDataModel-Methode wird von der Implementierung eines Datenmodells verwendet, um Implementierungsdaten in Instanzobjekten zu platzieren. |
IModelObject::SetKey Die SetKey-Methode ist die Methode, an die ein Client sich wendet, um einen Schlüssel für ein Objekt zu erstellen (und möglicherweise Metadaten mit dem erstellten Schlüssel zu verknüpfen). |
IModelObject::SetKeyValue Die SetKeyValue-Methode ist die erste Methode, an die ein Client sich wendet, um den Wert eines Schlüssels festzulegen. Diese Methode kann nicht zum Erstellen eines neuen Schlüssels für ein Objekt verwendet werden. |
IModelObject::TryCastToRuntimeType Die TryCastToRuntimeType-Methode fordert den Debughost auf, eine Analyse durchzuführen und den tatsächlichen Laufzeittyp (die am meisten abgeleitete Klasse) des angegebenen Objekts zu bestimmen. |
Bemerkungen
Eines der grundlegendsten, aber leistungsstärksten Elemente des Datenmodells besteht darin, dass es die Definition des Objekts standardisiert und wie ein Objekt mit einem Objekt interagiert. Die IModelObject-Schnittstelle kapselt den Begriff eines Objekts - unabhängig davon, ob es sich bei diesem Objekt um eine ganze Zahl, einen Gleitkommawert, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers oder um ein Debuggerkonzept wie die Vorstellung eines Prozesses oder eines Moduls handelt.
Es gibt mehrere verschiedene Dinge, die in einem IModelObject (oder in boxed into) gehalten werden können:
• Systeminterne Werte – Ein IModelObject kann ein Container für eine Reihe grundlegender Typen sein: 8, 16, 32 oder 64 Bit signierte oder nicht signierte ganze Zahlen, Booleane, Zeichenfolgen, Fehler oder das Konzept leerer Zahlen.
• Systemeigene Objekte – Ein IModelObject kann einen komplexen Typ (gemäß Definition durch das Typsystem des Debuggers) innerhalb des Adressraums des Debuggers darstellen, auf den der Debugger ausgerichtet ist.
• Synthetische Objekte - Ein IModelObject kann ein dynamisches Objekt sein - ein Wörterbuch, wenn Sie möchten: eine Sammlung von Schlüssel-/Wert-/Metadaten-Tupeln und eine Reihe von Konzepten, die Verhaltensweisen definieren, die nicht einfach durch Schlüssel-Wert-Paare dargestellt werden.
• Eigenschaften - Ein IModelObject kann eine Eigenschaft darstellen: etwas, dessen Wert mit einem Methodenaufruf abgerufen oder geändert werden kann. Eine Eigenschaft innerhalb eines IModelObjects ist effektiv ein IModelPropertyAccessor- Schnittstellenfeld in einem IModelObject
• Methoden - Ein IModelObject kann eine Methode darstellen: etwas, das Sie mit einer Reihe von Argumenten aufrufen und einen Rückgabewert abrufen können. Eine Methode innerhalb eines IModelObject ist effektiv ein IModelMethod- Schnittstellenfeld in einem IModelObject
Ein IModelObject ist kein Isoliertes Objekt. Zusätzlich zur Darstellung eines der oben gezeigten Objekttypen hat jedes Objekt die Vorstellung einer Kette von übergeordneten Datenmodellen. Diese Kette verhält sich ähnlich wie ein | JavaScript-Prototypkette. Anstelle einer linearen Kette von Prototypen wie JavaScript definiert jedes Datenmodellobjekt eine lineare Kette von übergeordneten Modellen. Jedes dieser übergeordneten Modelle wiederum verfügt über eine weitere lineare Kette ihrer eigenen Gruppe von Eltern. Im Wesentlichen ist jedes Objekt eine Aggregation der Funktionen (Eigenschaften usw.) von sich selbst und jedem Objekt in dieser Struktur. Wenn eine bestimmte Eigenschaft abgefragt wird, wird die Abfrage linear an jedes übergeordnete Element übergeben, wenn es abgefragt wird. Dadurch wird ein Verhalten erstellt, bei dem die Suche nach einer Eigenschaft durch eine tiefen erste Suche der Aggregatstruktur aufgelöst wird.
Die Erweiterbarkeit innerhalb dieses Objektmodells ist aufgrund dieser Vorstellung sehr einfach, dass jedes Objekt ein Aggregat von sich selbst und die Struktur der übergeordneten Modelle ist. Eine Erweiterung kann in die Liste der übergeordneten Modelle für ein anderes Objekt aufgenommen und hinzugefügt werden. Dadurch wird das Objekt erweitert. Auf diese Weise können Funktionen zu allen Elementen hinzugefügt werden: einer bestimmten Instanz eines Objekts oder Werts, einem systemeigenen Typ, dem Konzept des Debuggers, was ein Prozess oder Thread ist, oder sogar der Begriff "alle iterierbaren Objekte".
Anforderungen
Anforderung | Wert |
---|---|
Header- | dbgmodel.h |
Siehe auch
übersicht über Debuggerdatenmodell-C++-Schnittstellen