Определение символов в библиотеке
Средства просмотра символов отображают иерархические представления символов. Символы представляют пространства имен, объекты, классы, члены класса и другие элементы языка.
Каждый символ в иерархии можно определить с помощью сведений о навигации, передаваемых библиотекой символов в диспетчер объектов Visual Studio с помощью следующих интерфейсов:
Расположение символа в иерархии отличает символ. Он позволяет средствам просмотра символов переходить к определенному символу. Уникальный полный путь к символу определяет расположение. Каждый элемент в пути является узлом. Путь начинается с узла верхнего уровня и заканчивается определенным символом. Например, если метод M1 является членом класса C1 и C1 находится в пространстве имен N1, полный путь метода M1 — N1. C1. M1. Этот путь содержит три узла: N1, C1 и M1.
Сведения о навигации позволяют диспетчеру объектов Visual Studio находить, выбирать и сохранять выбранные символы в иерархии. Он позволяет переходить из одного средства просмотра в другой. При использовании обозревателя объектов для просмотра символов в проекте Visual C++ можно щелкнуть правой кнопкой мыши метод и запустить средство "Обозреватель вызовов", чтобы отобразить метод в графе вызовов.
Две формы описывают расположение символов. Каноническая форма основана на полном пути символа. Он представляет уникальное положение символа в иерархии. Он не зависит от инструмента просмотра символов. Чтобы получить канонические сведения о форме, диспетчер объектов Visual Studio вызывает EnumCanonicalNodes метод. Форма презентации описывает расположение символа в определенном инструменте просмотра символов. Позиция символа относительно положения других символов в иерархии. У заданного символа может быть несколько путей презентации, но только один канонический путь. Например, если класс C1 наследуется от класса C2 и оба класса находятся в пространстве имен N1, браузер объектов отображает следующее иерархическое дерево:
N1
C1
Bases and Interfaces
C2
C2
Bases and Interfaces
. . . . . . . . . . .
Канонический путь класса C2 в этом примере — N1 + C2. Путь к презентации C2 включает узлы C1 и "Базы и интерфейсы": N1 + C1 + "Базы и интерфейсы" + C2.
Чтобы получить сведения о форме презентации, диспетчер объектов вызывает EnumPresentationNodes метод.
Получение канонических и презентаций сведений о формах
Реализуйте метод EnumCanonicalNodes.
Диспетчер объектов вызывает этот метод, чтобы получить список узлов, содержащихся в каноническом пути символа.
Реализуйте метод EnumPresentationNodes.
Диспетчер объектов вызывает этот метод, чтобы получить список узлов, содержащихся в пути представления символа.