Identifier les symboles dans une bibliothèque

Les outils de navigation de symboles affichent des vues hiérarchiques des symboles. Les symboles représentent des espaces de noms, des objets, des classes, des membres de classe et d’autres éléments de langage.

Chaque symbole de la hiérarchie peut être identifié par les informations de navigation transmises par la bibliothèque de symboles au gestionnaire d’objets Visual Studio via les interfaces suivantes :

L’emplacement du symbole dans la hiérarchie distingue un symbole. Il permet aux outils de navigation de symboles d’accéder à un symbole spécifique. Le chemin d’accès unique et complet au symbole détermine l’emplacement. Chaque élément du chemin est un nœud. Le chemin commence par le nœud de niveau supérieur et se termine par le symbole spécifique. Par exemple, si la méthode M1 est membre de la classe C1 et que C1 se trouve dans l’espace de noms N1, le chemin complet de la méthode M1 est N1. C1. M1. Ce chemin contient trois nœuds : N1, C1 et M1.

Les informations de navigation permettent au gestionnaire d’objets Visual Studio de localiser, sélectionner et conserver les symboles sélectionnés dans la hiérarchie. Il permet de naviguer d’un outil de navigation vers un autre. Lors de l’utilisation de l’Explorateur d’objets pour parcourir les symboles dans un projet Visual C++, vous pouvez cliquer avec le bouton droit sur une méthode et démarrer l’outil Explorateur d’appels pour afficher la méthode dans un graphique d’appel.

Deux formulaires décrivent l’emplacement des symboles. La forme canonique est basée sur le chemin complet du symbole. Il représente une position unique du symbole dans la hiérarchie. Il est indépendant de l’outil de navigation par symboles. Pour obtenir les informations de formulaire canoniques, le gestionnaire d’objets Visual Studio appelle EnumCanonicalNodes la méthode. Le formulaire de présentation décrit l’emplacement du symbole dans un outil de navigation de symbole spécifique. La position du symbole est relative à la position des autres symboles de la hiérarchie. Un symbole donné peut avoir plusieurs chemins de présentation, mais un seul chemin canonique. Par exemple, si la classe C1 est héritée de la classe C2 et que les deux classes se trouvent dans l’espace de noms N1, l’Explorateur d’objets affiche l’arborescence hiérarchique suivante :

N1
    C1
        Bases and Interfaces
            C2
    C2
        Bases and Interfaces
. . . . . . . . . . .

Le chemin canonique de la classe C2, dans cet exemple, est N1 + C2. Le chemin de présentation de C2 inclut les nœuds C1 et « Bases et interfaces » : N1 + C1 + « Bases et interfaces » + C2.

Pour obtenir les informations du formulaire de présentation, le gestionnaire d’objets appelle EnumPresentationNodes la méthode.

Pour obtenir des informations sur les formulaires canoniques et de présentation

  1. Implémentez la méthode EnumCanonicalNodes.

    Le gestionnaire d’objets appelle cette méthode pour obtenir la liste des nœuds contenus dans le chemin canonique du symbole.

    public int EnumCanonicalNodes(out Microsoft.VisualStudio.Shell.Interop.IVsEnumNavInfoNodes ppEnum)
    {
        CallBrowserEnumNavInfoNodes EnumNavInfoNodes =
            new CallBrowserEnumNavInfoNodes(m_strMethod);
        ppEnum = (IVsEnumNavInfoNodes)(EnumNavInfoNodes);
        return 0;
    }
    
    
  2. Implémentez la méthode EnumPresentationNodes.

    Le gestionnaire d’objets appelle cette méthode pour obtenir la liste des nœuds contenus dans le chemin de présentation du symbole.