Метод IDataModelManager2::GetModelForTypeSignature (dbgmodel.h)
Метод GetModelForTypeSignature возвращает модель данных, зарегистрированную для определенной сигнатуры типа, с помощью предварительного вызова метода RegisterModelForTypeSignature. Модель данных, возвращаемая этим методом, считается каноническим визуализатором для любого типа, соответствующего переданной сигнатуре типа. Как канонический визуализатор, эта модель данных берет на себя отображение типа. Обработчики отображения по умолчанию скрывают собственные и языковые конструкции объекта в пользу представления объекта, представленного моделью данных.
Синтаксис
HRESULT GetModelForTypeSignature(
IDebugHostTypeSignature *typeSignature,
IModelObject **dataModel
);
Параметры
typeSignature
Сигнатура типа, для которой dataModel будет зарегистрирована в качестве канонического визуализатора. Любой объект, созданный с типом машинного или языкового языка, который соответствует сигнатуре (и для которого нет лучшей сигнатуры типа), будет автоматически присоединять возвращаемую модель данных в качестве родительской.
dataModel
Модель данных, зарегистрированная в качестве канонического визуализатора для всех экземпляров типов, соответствующих заданной сигнатуре типа (и для которых нет лучшей совпадающей сигнатуры типа).
Возвращаемое значение
Этот метод возвращает HRESULT, указывающее на успех или сбой.
Комментарии
Образец кода
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.
}
}
}
}
Требования
Требование | Значение |
---|---|
Заголовок | dbgmodel.h |