Interface IModelObject2 (dbgmodel.h)
L’interface IModelObject2 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.
Cette version 2 de l’interface prend en charge toutes les méthodes précédentes avec des signatures identiques et inclut d’autres nouvelles méthodes qui fournissent des fonctionnalités ajoutées. Les nouvelles méthodes sont répertoriées dans l’en-tête à la fin de la section pour cette interface.
Héritage
IModelObject2 hérite d’IModelObject.
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