Interface IModelObject (dbgmodel.h)

L’une des choses les plus fondamentales et les plus puissantes du modèle de données est qu’il normalise la définition de ce qu’est un objet et la façon dont on interagit avec un objet. L’interface IModelObject encapsule la notion d’un objet, qu’il s’agisse d’un entier, d’une valeur à virgule flottante, d’une chaîne, d’un type complexe dans l’espace d’adressage cible du débogueur ou d’un concept de débogueur comme la notion d’un processus ou d’un module.

Il existe plusieurs éléments différents qui peuvent être conservés dans (ou placés dans) un IModelObject :

• Valeurs intrinsèques : un IModelObject peut être un conteneur pour un certain nombre de types de base : 8, 16, 32 ou 64 bits, entiers signés ou non signés, booléens, chaînes, erreurs ou la notion de vide.

• Objets natifs : un IModelObject peut représenter un type complexe (tel que défini par le système de type du débogueur) dans l’espace d’adressage de tout ce que le débogueur cible

• Objets synthétiques : un IModelObject peut être un objet dynamique : un dictionnaire : une collection de tuples clé/valeur/métadonnées et un ensemble de concepts qui définissent des comportements qui ne sont pas simplement représentés par des paires clé/valeur.

• Propriétés : un IModelObject peut représenter une propriété : quelque chose dont la valeur peut être récupérée ou modifiée avec un appel de méthode. Une propriété dans un IModelObject est en fait une interface IModelPropertyAccessor boxée dans un IModelObject

• Méthodes : un IModelObject peut représenter une méthode : quelque chose que vous pouvez appeler avec un ensemble d’arguments et obtenir une valeur de retour. Une méthode au sein d’un IModelObject est en fait une interface IModelMethod boxée dans un IModelObject

Un IModelObject n’est pas un objet isolé. En plus de représenter l’un des types d’objets indiqués ci-dessus, chaque objet a la notion d’une chaîne de modèles de données parents. Cette chaîne se comporte comme un | Chaîne de prototype JavaScript. Au lieu d’une chaîne linéaire de prototypes comme JavaScript, chaque objet de modèle de données définit une chaîne linéaire de modèles parents. Chacun de ces modèles parents à son tour a une autre chaîne linéaire de son propre ensemble de parents. En substance, chaque objet est une agrégation des fonctionnalités (propriétés, etc.) de lui-même et de chaque objet de cette arborescence. Lorsqu’une propriété spécifique est interrogée, si l’objet sur lequel elle est interrogée ne prend pas en charge cette propriété, la requête est passée dans l’ordre linéaire à chaque parent à son tour. Cela crée un comportement où la recherche d’une propriété est résolue par une recherche en profondeur d’abord dans l’arborescence d’agrégation.

L’extensibilité au sein de ce modèle objet est très simple étant donné cette notion que chaque objet est un agrégat de lui-même et l’arborescence des modèles parents. Une extension peut entrer et s’ajouter à la liste des modèles parent pour un autre objet. Cette opération étend l’objet. De cette manière, il est possible d’ajouter des fonctionnalités à n’importe quoi : une instance particulière d’un objet ou d’une valeur, un type natif, le concept du débogueur de ce qu’est un processus ou un thread, ou même la notion de « tous les objets itérables ».

Héritage

IModelObject hérite d’IUnknown.

Méthodes

L’interface IModelObject possède ces méthodes.

 
IModelObject ::AddParentModel

La méthode AddParentModel ajoute un nouveau modèle parent à l’objet donné.
IModelObject ::AddRef

La méthode AddRef incrémente le nombre de références pour une interface sur un objet. Cette méthode appartient à l’interface IModelObject.
IModelObject ::ClearConcepts

La méthode ClearConcepts supprime tous les concepts de la instance de l’objet spécifié par cette méthode.
IModelObject ::ClearKeys

La méthode ClearKeys supprime toutes les clés ainsi que les valeurs et métadonnées associées du instance de l’objet spécifié par cette méthode.
IModelObject ::Compare

La méthode Compare compare deux objets de modèle et retourne une indication de la relation entre ces objets.
IModelObject ::D ereference

La méthode Dereference déréférence un objet.
IModelObject ::EnumerateKeyReferences

La méthode EnumerateKeyReferences se comporte comme la méthode EnumerateKeyValues, sauf qu’elle retourne des références aux clés qu’elle énumère au lieu de la valeur de la clé.
IModelObject ::EnumerateKeys

Énumère les clés au sein du fournisseur de clés dynamiques.
IModelObject ::EnumerateKeyValues

La méthode EnumerateKeyValues est la première méthode vers laquelle un client doit se tourner pour énumérer toutes les clés d’un objet.
IModelObject ::EnumerateRawReferences

La méthode EnumerateRawReferences énumère les références à tous les enfants natifs (champs, classes de base, etc...) de l’objet donné.
IModelObject ::EnumerateRawValues

La méthode EnumerateRawValues énumère tous les enfants natifs (champs, classes de base, etc...) de l’objet donné.
IModelObject ::GetConcept

La méthode GetConcept recherche un concept sur l’objet (ou sa chaîne de modèle parente) et retourne un pointeur d’interface vers l’interface conceptuelle.
IModelObject ::GetContext

La méthode GetContext retourne le contexte hôte associé à l’objet.
IModelObject ::GetContextForDataModel

La méthode GetContextForDataModel est utilisée pour récupérer des informations de contexte qui ont été configurées avec un appel antérieur à SetContextForDataModel.
IModelObject ::GetIntrinsicValue

La méthode GetIntrinsicValue retourne la chose qui est boxée à l’intérieur d’un IModelObject.
IModelObject ::GetIntrinsicValueAs

La méthode GetIntrinsicValueAs se comporte comme la méthode GetIntrinsicValue, sauf qu’elle convertit la valeur en type variant spécifié.
IModelObject ::GetKey

La méthode GetKey obtient la valeur de (et les métadonnées associées à) une clé donnée par nom.
IModelObject ::GetKeyReference

Si l’objet ou l’un de ses modèles parent a une clé nommée en fonction de l’argument « key », cela retourne une référence à cette clé.
IModelObject ::GetKeyValue

La méthode GetKeyValue est la première méthode vers laquelle un client se tournera pour obtenir la valeur (et les métadonnées associées) d’une clé donnée par nom.
IModelObject ::GetKind

La méthode GetKind retourne le type d’objet qui est boxé à l’intérieur de l’IModelObject.
IModelObject ::GetLocation

La méthode GetLocation retourne l’emplacement de l’objet natif. Bien qu’un tel emplacement soit généralement une adresse virtuelle dans l’espace d’adressage de la cible de débogage, il ne l’est pas nécessairement.
IModelObject ::GetNumberOfParentModels

La méthode GetNumberOfParentModels retourne le nombre de modèles parents attachés à l’objet donné instance.
IModelObject ::GetParentModel

La méthode GetParentModel retourne le modèle parent i-th dans la chaîne de modèle parent de l’objet donné.
IModelObject ::GetRawReference

La méthode GetRawReference recherche une construction native dans l’objet donné et retourne une référence à celui-ci.
IModelObject ::GetRawValue

La méthode GetRawValue recherche une construction native dans l’objet donné. Une telle construction peut être un champ, une classe de base, un champ dans une classe de base, une fonction membre, etc.
IModelObject ::GetTargetInfo

La méthode GetTargetInfo est en fait une combinaison des méthodes GetLocation et GetTypeInfo qui retournent à la fois l’emplacement abstrait et le type natif de l’objet donné.
IModelObject ::GetTypeInfo

La méthode GetTypeInfo retourne le type natif de l’objet donné. Si l’objet n’a pas d’informations de type natif associées, l’appel réussit toujours, mais retourne null.
IModelObject ::IsEqualTo

La méthode IsEqualTo compare un contexte hôte à un autre contexte hôte. Si les deux contextes sont équivalents, une indication de ce est retournée. Notez que cette comparaison n’est pas une équivalence d’interface.
IModelObject ::QueryInterface

La méthode IModelObject ::QueryInterface récupère les pointeurs vers les interfaces prises en charge sur un objet.
IModelObject ::Release

La méthode IModelObject ::Release décrémente le nombre de références pour une interface sur un objet.
IModelObject ::RemoveParentModel

RemoveParentModel supprime un modèle parent spécifié de la chaîne de recherche parente de l’objet donné.
IModelObject ::SetConcept

La méthode SetConcept place un concept spécifié sur l’objet instance spécifié par le pointeur this.
IModelObject ::SetContextForDataModel

La méthode SetContextForDataModel est utilisée par l’implémentation d’un modèle de données pour placer des données d’implémentation sur instance objets.
IModelObject ::SetKey

La méthode SetKey est la méthode vers laquelle un client se tournera pour créer une clé sur un objet (et éventuellement associer des métadonnées à la clé créée).
IModelObject ::SetKeyValue

La méthode SetKeyValue est la première méthode vers laquelle un client se tourne pour définir la valeur d’une clé. Cette méthode ne peut pas être utilisée pour créer une clé sur un objet .
IModelObject ::TryCastToRuntimeType

La méthode TryCastToRuntimeType demande à l’hôte de débogage d’effectuer une analyse et de déterminer le type d’exécution réel (classe la plus dérivée) de l’objet donné.

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h