Interface IModelObject (dbgmodel.h)
L’interface IModelObject encapsule la notion d’un objet : qu’il s’agisse d’un entier, d’une chaîne, d’un type complexe dans l’espace d’adressage cible du débogueur.
Héritage
IModelObject hérite d’IUnknown.
Méthode
L’interface IModelObject a 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 d’une interface sur un objet. Cette méthode appartient à l’interface IModelObject. |
IModelObject ::ClearConcepts La méthode ClearConcepts supprime tous les concepts de l’instance de l’objet spécifié par ce paramètre. |
IModelObject ::ClearKeys La méthode ClearKeys supprime toutes les clés et leurs valeurs et métadonnées associées de l’instance de l’objet spécifié par ce paramètre. |
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 va 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 parent) et retourne un pointeur d’interface vers l’interface de concept. |
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 autant que la méthode GetIntrinsicValue, sauf qu’elle convertit la valeur en type variant spécifié. |
IModelObject ::GetKey La méthode GetKey obtient la valeur (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 parents a une clé nommée en fonction de l’argument « clé », cela renvoie une référence à cette clé. |
IModelObject ::GetKeyValue La méthode GetKeyValue est la première méthode à laquelle un client va se tourner pour obtenir la valeur (et les métadonnées associées) une clé donnée par nom. |
IModelObject ::GetKind La méthode GetKind retourne le type d’objet qui est boxé à l’intérieur du 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, ce n’est pas nécessairement le cas. |
IModelObject ::GetNumberOfParentModels La méthode GetNumberOfParentModels retourne le nombre de modèles parents qui sont attachés à l’instance d’objet donnée. |
IModelObject ::GetParentModel La méthode GetParentModel retourne le modèle parent i-ième 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 à cet objet. |
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 effectivement 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 qui lui sont 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 ceci est retournée. Notez que cette comparaison n’est pas une équivalence d’interface. |
IModelObject ::QueryInterface La méthode IModelObject ::QueryInterface récupère des 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 d’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’instance d’objet spécifiée par le pointeur. |
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 des objets d’instance. |
IModelObject ::SetKey La méthode SetKey est la méthode vers laquelle un client va se tourner 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 va se tourner 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é. |
Remarques
L’une des choses les plus fondamentales mais puissantes sur le modèle de données est qu’elle normalise la définition de ce qu’est un objet et comment l’on interagit avec un objet. L’interface IModelObject encapsule la notion d’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 choses différentes qui peuvent être conservées dans (ou boxées 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 signés ou non signés, booléens, chaînes, erreurs ou 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 ce que le débogueur cible
• Objets synthétiques - Un IModelObject peut être un objet dynamique - un dictionnaire si vous le souhaitez : 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é au sein d’un IModelObject est effectivement 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 effectivement 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 beaucoup 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 a à son tour une autre chaîne linéaire de son propre ensemble de parents. En essence, chaque objet est une agrégation des fonctionnalités (propriétés, etc.) de lui-même et de chaque objet dans cette arborescence. Lorsqu’une propriété spécifique est interrogée, si l’objet sur lequel il est interrogé ne prend pas en charge cette propriété, la requête est transmise de façon linéaire à chaque parent à son tour. Cela crée un comportement dans lequel la recherche d’une propriété est résolue par une recherche approfondie de l’arborescence d’agrégation.
L’extensibilité dans 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 parents pour un autre objet. Cela étend l’objet. De cette façon, il est possible d’ajouter des fonctionnalités à tout : 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 ».
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dbgmodel.h |
Voir aussi
Vue d’ensemble des interfaces C++ du débogueur