Partager via


IDataModelManager3 ::GetModelForTypeSignature, méthode (dbgmodel.h)

La méthode GetModelForTypeSignature retourne le modèle de données 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 n’importe quel type qui correspond à la signature de type passée. En tant que visualiseur canonique, ce modèle de données prend le contrôle de l’affichage du type. Les moteurs d’affichage masquent par défaut les constructions natives/linguistiques de l’objet en faveur 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/langage qui correspond à la signature (et pour lequel il n’y a pas de meilleure signature de type correspondant) 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 laquelle il n’y a pas de meilleure signature de type correspondante.

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<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.
            }
        }
    }
}

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDataModelManager3