Compartilhar via


Interface IModelObject (dbgmodel.h)

A interface IModelObject encapsula a noção de um objeto – se esse objeto é um inteiro, uma cadeia de caracteres, algum tipo complexo no espaço de endereço de destino do depurador.

Herança

IModelObject herda de IUnknown.

Métodos

A interface IModelObject tem esses métodos.

 
IModelObject::AddParentModel

O método AddParentModel adiciona um novo modelo pai ao objeto fornecido.
IModelObject::AddRef

O método AddRef incrementa a contagem de referência para uma interface em um objeto. Esse método pertence à interface IModelObject.
IModelObject::ClearConcepts

O método ClearConcepts removerá todos os conceitos da instância do objeto especificada por isso.
IModelObject::ClearKeys

O método ClearKeys remove todas as chaves e seus valores e metadados associados da instância do objeto especificada por isso.
IModelObject::Compare

O método Compare compara dois objetos de modelo e retorna uma indicação de como esses objetos se relacionam.
IModelObject::D ereference

O método Dereference desreferencia um objeto.
IModelObject::EnumerateKeyReferences

O método EnumerateKeyReferences comporta-se semelhante ao método EnumerateKeyValues, exceto pelo fato de retornar referências às chaves que ele enumera em vez do valor da chave.
IModelObject::EnumerateKeys

Enumera as chaves dentro do provedor de chave dinâmica.
IModelObject::EnumerateKeyValues

O método EnumerateKeyValues é o primeiro método ao qual um cliente recorrerá para enumerar todas as chaves em um objeto.
IModelObject::EnumerateRawReferences

O método EnumerateRawReferences enumera referências a todas as crianças nativas (campos, classes base etc...) do objeto fornecido.
IModelObject::EnumerateRawValues

O método EnumerateRawValues enumera todas as crianças nativas (campos, classes base etc...) do objeto fornecido.
IModelObject::GetConcept

O método GetConcept procurará um conceito no objeto (ou em sua cadeia de modelo pai) e retornará um ponteiro de interface para a interface de conceito.
IModelObject::GetContext

O método GetContext retorna o contexto de host associado ao objeto.
IModelObject::GetContextForDataModel

O método GetContextForDataModel é usado para recuperar informações de contexto que foram configuradas com uma chamada anterior para SetContextForDataModel.
IModelObject::GetIntrinsicValue

O método GetIntrinsicValue retorna a coisa que está em caixa dentro de um IModelObject.
IModelObject::GetIntrinsicValueAs

O método GetIntrinsicValueAs se comporta tanto quanto o método GetIntrinsicValue, exceto pelo fato de converter o valor no tipo de variante especificado.
IModelObject::GetKey

O método GetKey obterá o valor (e os metadados associados) de uma determinada chave por nome.
IModelObject::GetKeyReference

Se o objeto ou um de seus modelos pai tiver uma chave nomeada de acordo com o argumento 'key', isso retornará uma referência a essa chave.
IModelObject::GetKeyValue

O método GetKeyValue é o primeiro método ao qual um cliente recorrerá para obter o valor (e os metadados associados a) uma determinada chave por nome.
IModelObject::GetKind

O método GetKind retorna que tipo de objeto está em caixa dentro do IModelObject.
IModelObject::GetLocation

O método GetLocation retornará o local do objeto nativo. Embora esse local normalmente seja um endereço virtual dentro do espaço de endereço do destino de depuração, ele não é necessariamente assim.
IModelObject::GetNumberOfParentModels

O método GetNumberOfParentModels retorna o número de modelos pai anexados à instância de objeto fornecida.
IModelObject::GetParentModel

O método GetParentModel retorna o modelo pai i-th na cadeia de modelo pai do objeto fornecido.
IModelObject::GetRawReference

O método GetRawReference localiza uma construção nativa dentro do objeto fornecido e retorna uma referência a ele.
IModelObject::GetRawValue

O método GetRawValue localiza uma construção nativa dentro do objeto fornecido. Esse constructo pode ser um campo, uma classe base, um campo em uma classe base, uma função de membro etc.
IModelObject::GetTargetInfo

O método GetTargetInfo é efetivamente uma combinação dos métodos GetLocation e GetTypeInfo retornando tanto o local abstrato quanto o tipo nativo do objeto fornecido.
IModelObject::GetTypeInfo

O método GetTypeInfo retornará o tipo nativo do objeto fornecido. Se o objeto não tiver informações de tipo nativo associadas a ele, a chamada ainda terá êxito, mas retornará nulo.
IModelObject::IsEqualTo

O método IsEqualTo compara um contexto de host com outro contexto de host. Se os dois contextos forem equivalentes, uma indicação disso será retornada. Observe que essa comparação não é equivalência de interface.
IModelObject::QueryInterface

O método IModelObject::QueryInterface recupera ponteiros para as interfaces com suporte em um objeto.
IModelObject::Release

O método IModelObject::Release diminui a contagem de referência para uma interface em um objeto.
IModelObject::RemoveParentModel

O RemoveParentModel removerá um modelo pai especificado da cadeia de pesquisa pai do objeto fornecido.
IModelObject::SetConcept

O método SetConcept colocará um conceito especificado na instância de objeto especificada pelo ponteiro.
IModelObject::SetContextForDataModel

O método SetContextForDataModel é usado pela implementação de um modelo de dados para colocar dados de implementação em objetos de instância.
IModelObject::SetKey

O método SetKey é o método ao qual um cliente recorrerá para criar uma chave em um objeto (e potencialmente associar metadados à chave criada).
IModelObject::SetKeyValue

O método SetKeyValue é o primeiro método ao qual um cliente recorrerá para definir o valor de uma chave. Esse método não pode ser usado para criar uma nova chave em um objeto.
IModelObject::TryCastToRuntimeType

O método TryCastToRuntimeType solicitará que o host de depuração execute uma análise e determine o tipo de runtime real (classe mais derivada) do objeto fornecido.

Observações

Uma das coisas mais básicas e poderosas sobre o modelo de dados é que ele padroniza a definição do que é um objeto e como ele interage com um objeto. A interface IModelObject encapsula a noção de um objeto – se esse objeto é um inteiro, um valor de ponto flutuante, uma cadeia de caracteres, algum tipo complexo no espaço de endereço de destino do depurador ou algum conceito de depurador, como a noção de um processo ou um módulo.

Há várias coisas diferentes que podem ser mantidas em (ou em caixa) em um IModelObject:

• Valores intrínsecos – Um IModelObject pode ser um contêiner para vários tipos básicos: 8, 16, 32 ou 64 bits com sinal ou inteiros sem sinal, boolianos, cadeias de caracteres, erros ou a noção de vazio.

• Objetos Nativos – Um IModelObject pode representar um tipo complexo (conforme definido pelo sistema de tipo do depurador) dentro do espaço de endereço de qualquer que seja o destino do depurador

• Objetos Sintéticos – Um IModelObject pode ser um objeto dinâmico – um dicionário, se desejar: uma coleção de tuplas chave/valor/metadados e um conjunto de conceitos que definem comportamentos que não são simplesmente representados por pares chave/valor.

• Propriedades – Um IModelObject pode representar uma propriedade: algo cujo valor pode ser recuperado ou alterado com uma chamada de método. Uma propriedade dentro de um IModelObject é efetivamente uma interface IModelPropertyAccessor boxed em um IModelObject

• Métodos – Um IModelObject pode representar um método: algo que você pode chamar com um conjunto de argumentos e obter um valor retornado. Um método dentro de um IModelObject é efetivamente um interface IModelMethod boxed em um IModelObject

Um IModelObject não é um objeto isolado. Além de representar um dos tipos de objetos mostrados acima, cada objeto tem a noção de uma cadeia de modelos de dados pai. Essa cadeia se comporta muito como um | Cadeia de protótipos JavaScript. Em vez de uma cadeia linear de protótipos como o JavaScript tem, cada objeto de modelo de dados define uma cadeia linear de modelos pai. Cada um desses modelos pai, por sua vez, tem outra cadeia linear de seu próprio conjunto de pais. Em essência, cada objeto é uma agregação dos recursos (propriedades etc...) de si mesmo e de cada objeto nesta árvore. Quando uma propriedade específica é consultada, se o objeto em que ele é consultado não dá suporte a essa propriedade, a consulta é passada em ordem linear para cada pai, por sua vez. Isso cria um comportamento em que a pesquisa por uma propriedade é resolvida por uma pesquisa detalhada da árvore de agregação.

A extensibilidade dentro desse modelo de objeto é muito simples, considerando essa noção de que cada objeto é uma agregação de si mesmo e da árvore dos modelos pai. Uma extensão pode entrar e se adicionar à lista de modelos pai de outro objeto. Fazer isso estende o objeto. Dessa maneira, é possível adicionar funcionalidades a qualquer coisa: uma instância específica de um objeto ou valor, um tipo nativo, o conceito do depurador do que é um processo ou thread ou até mesmo a noção de "todos os objetos iteráveis".

Requisitos

Requisito Valor
cabeçalho dbgmodel.h

Consulte também

Visão geral das interfaces C++ do modelo de dados do depurador