Partager via


Méthode IDataModelManager2 ::GetModelForTypeSignature (dbgmodel.h)

La méthode GetModelForTypeSignature retourne le modèle de données qui a été inscrit sur une signature de type particulière via un appel antérieur à la méthode RegisterModelForTypeSignature. Le modèle de données retourné par cette méthode est considéré comme le visualiseur canonique pour tout type qui correspond à la signature de type passée. En tant que visualiseur canonique, ce modèle de données prend en charge l’affichage du type. Par défaut, les moteurs d’affichage masquent les constructions natives/linguistiques de l’objet au profit de la vue de l’objet présenté par le modèle de données.

Syntaxe

HRESULT GetModelForTypeSignature(
  IDebugHostTypeSignature *typeSignature,
  IModelObject            **dataModel
);

Paramètres

typeSignature

Signature de type pour laquelle dataModel sera inscrit en tant que visualiseur canonique. Tout objet créé avec un type natif/de langue qui correspond à la signature (et pour lequel il n’existe pas de meilleure signature de type correspondante) aura automatiquement le modèle de données retourné attaché en tant que parent.

dataModel

Modèle de données inscrit en tant que visualiseur canonique pour toutes les instances de type qui correspondent à la signature de type donnée (et pour lesquelles il n’existe pas de meilleure signature de type correspondante.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost;           /* get the debug host */

ComPtr<IModelObject> spDataModel;    /* create a data model (see 
                                        CreateDataModelObject) */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    // Create a signature to match MyType<*>
    ComPtr<IDebugHostTypeSignature> spTypeSignature;
    if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
    {
        // Register the model for std::vector<*>
        if (SUCCEEDED(spManager->RegisterModelForTypeSignature(spTypeSignature.Get(),
                                                               spDataModel.Get()))
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  Further, such parent is considered 
            // the canonical visualizer for all types matching MyType<*> since it 
            // was registered via RegisterModelForTypeSignature instead of
            // RegisterExtensionForTypeSignature.
            //
            // Demonstrate that we can find the canonical visualizer under 
            // this registration.
            ComPtr<IModelObject> spCanonicalVisualizerModel;
            if (SUCCEEDED(spManager->GetModelForTypeSignature(
                spTypeSignature.Get(), 
                &spCanonicalVisualizerModel)))
            {
                // spCanonicalVisualizerModel is the same as spDataModel since 
                // it was registered as such.
            }
        }
    }
}

Interface IDataModelManager2

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h