Interface IModelObject (dbgmodel.h)

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 se 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 inteiros assinados ou sem sinal de 64 bits, 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 tipos 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 uma 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 do JavaScript. Em vez de uma cadeia linear de protótipos como o JavaScript, 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 todos os objetos nessa á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 de profundidade primeiro 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 de modelos pai. Uma extensão pode entrar e adicionar-se à lista de modelos pai para 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".

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 especificado por isso.
IModelObject::ClearKeys

O método ClearKeys remove todas as chaves e seus valores e metadados associados da instância do objeto especificado 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 se comporta de forma semelhante ao método EnumerateKeyValues, exceto pelo fato de retornar referências às chaves que enumera em vez do valor da chave.
IModelObject::EnumerateKeys

Enumera as chaves dentro do provedor de chaves dinâmicas.
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 todos os filhos nativos (campos, classes base etc...) do objeto fornecido.
IModelObject::EnumerateRawValues

O método EnumerateRawValues enumera todos os filhos nativos (campos, classes base etc.) do objeto fornecido.
IModelObject::GetConcept

O método GetConcept pesquisará um conceito sobre o objeto (ou 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 para o tipo de variante especificado.
IModelObject::GetKey

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

Se o objeto ou um de seus modelos pai tiver uma chave chamada 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 de (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 um constructo nativo dentro do objeto fornecido e retorna uma referência a ele.
IModelObject::GetRawValue

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

O método GetTargetInfo é efetivamente uma combinação dos métodos GetLocation e GetTypeInfo que retornam o local abstrato, bem como 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 de 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.

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h