IDataModelManager3 ::GetModelForType, méthode (dbgmodel.h)
La méthode GetModelForType retourne le modèle de données qui est le visualiseur canonique pour une instance de type donnée. En effet, cette méthode recherche la meilleure signature de type correspondante qui a été inscrite avec un appel antérieur à la méthode RegisterModelForTypeSignature et retourne le modèle de données associé.
Syntaxe
HRESULT GetModelForType(
IDebugHostType *type,
IModelObject **dataModel,
IDebugHostTypeSignature **typeSignature,
IDebugHostSymbolEnumerator **wildcardMatches
);
Paramètres
type
Instance de type concrète pour laquelle trouver le visualiseur canonique correspondant le mieux inscrit via un appel antérieur à la méthode RegisterModelForTypeSignature.
dataModel
Le modèle de données qui est le visualiseur canonique de l’instance de type donnée, tel que déterminé par la meilleure signature de type correspondante inscrite via un appel antérieur à RegisterModelForTypeSignature, est retourné ici. Ce modèle de données est automatiquement attaché à n’importe quel objet natif/langage créé avec le type spécifié par l’argument de type.
typeSignature
La signature de type dont la correspondance avec le type nous a provoqué le retour du modèle de données inscrit à partir d’un appel précédent à RegisterModelForTypeSignature avec la signature de type retournée.
wildcardMatches
S’il existe des caractères génériques dans la signature retournée dans l’argument typeSignature, un énumérateur de toutes les correspondances entre les caractères génériques et l’instance de type concret donnée dans l’argument de type est retourné ici.
Valeur de retour
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
exemple de code
ComPtr<IDataModelManager3> spManager; /* get the data model manager */
ComPtr<IDebugHostModule> spModule; /* get a module */
// Find the type of "MyType<int>" within the module
ComPtr<IDebugHostType> spType;
if (SUCCEEDED(spModule->FindTypeByName(L"MyType<int>", &spType)))
{
// Find the canonical visualizer which would be applied to MyType<int>
ComPtr<IModelObject> spDataModel;
ComPtr<IDebugHostTypeSignature> spSignature;
ComPtr<IDebugHostSymbolEnumerator> spWildcardMatches;
if (SUCCEEDED(spManager->GetModelForType(spType.Get(),
&spDataModel,
&spSignature,
&spWildcardMatches)))
{
// There is a visualizer which matched.
// spDataModel is the data model object which was registered as
// the canonical visualizer (RegisterModelForTypeSignature)
// spSignature is the signature which that data model was registered
// against (e.g.: created for MyType<*> via
// CreateTypeSignature/RegisterModelForTypeSignature)
// spWildcardMatches is an enumerator of the wildcard matches between
// the specific type spType and the signature spSignature (here
// int matched *, so there will be one item -- the type 'int' in
// the enumerator)
}
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dbgmodel.h |