Interfaz IModelObject (dbgmodel.h)
La interfaz IModelObject encapsula la noción de un objeto: si ese objeto es un entero, una cadena, algún tipo complejo en el espacio de direcciones de destino del depurador.
Herencia
IModelObject hereda de IUnknown.
Métodos
La interfaz
IModelObject::AddParentModel El método AddParentModel agrega un nuevo modelo primario al objeto especificado. |
IModelObject::AddRef El método AddRef incrementa el recuento de referencias de una interfaz en un objeto . Este método pertenece a la interfaz IModelObject. |
IModelObject::ClearConcepts El método ClearConcepts quitará todos los conceptos de la instancia del objeto especificado por este. |
IModelObject::ClearKeys El método ClearKeys quita todas las claves y sus valores y metadatos asociados de la instancia del objeto especificado por este. |
IModelObject::Compare El método Compare compara dos objetos de modelo y devuelve una indicación de cómo se relacionan esos objetos. |
IModelObject::D ereference El método Dereference desreferencia un objeto . |
IModelObject::EnumerateKeyReferences El método EnumerateKeyReferences se comporta de forma similar al método EnumerateKeyValues, excepto que devuelve referencias a las claves que enumera en lugar del valor de la clave. |
IModelObject::EnumerateKeys Enumera las claves dentro del proveedor de claves dinámicas. |
IModelObject::EnumerateKeyValues El método EnumerateKeyValues es el primer método al que un cliente cambiará para enumerar todas las claves de un objeto. |
IModelObject::EnumerateRawReferences El método EnumerateRawReferences enumera las referencias a todos los elementos secundarios nativos (campos, clases base, etc.) del objeto especificado. |
IModelObject::EnumerateRawValues El método EnumerateRawValues enumera todos los elementos secundarios nativos (campos, clases base, etc.) del objeto especificado. |
IModelObject::GetConcept El método GetConcept buscará un concepto en el objeto (o su cadena de modelos primario) y devolverá un puntero de interfaz a la interfaz de concepto. |
IModelObject::GetContext El método GetContext devuelve el contexto de host asociado al objeto . |
IModelObject::GetContextForDataModel El método GetContextForDataModel se usa para recuperar información de contexto que se configuró con una llamada anterior a SetContextForDataModel. |
IModelObject::GetIntrinsicValue El método GetIntrinsicValue devuelve lo que se conversión boxing dentro de un IModelObject. |
IModelObject::GetIntrinsicValueAs El método GetIntrinsicValueAs se comporta tanto como el método GetIntrinsicValue, excepto que convierte el valor en el tipo de variante especificado. |
IModelObject::GetKey El método GetKey obtendrá el valor de (y los metadatos asociados a) una clave determinada por nombre. |
IModelObject::GetKeyReference Si el objeto o uno de sus modelos primarios tienen una clave denominada según el argumento "key", devolverá una referencia a esa clave. |
IModelObject::GetKeyValue El método GetKeyValue es el primer método al que un cliente cambiará para obtener el valor de (y los metadatos asociados a) una clave determinada por nombre. |
IModelObject::GetKind El método GetKind devuelve el tipo de objeto que se conversión boxing dentro del IModelObject. |
IModelObject::GetLocation El método GetLocation devolverá la ubicación del objeto nativo. Aunque esta ubicación suele ser una dirección virtual dentro del espacio de direcciones del destino de depuración, no es necesariamente así. |
IModelObject::GetNumberOfParentModels El método GetNumberOfParentModels devuelve el número de modelos primarios que se adjuntan a la instancia de objeto especificada. |
IModelObject::GetParentModel El método GetParentModel devuelve el modelo primario i-th en la cadena del modelo primario del objeto especificado. |
IModelObject::GetRawReference El método GetRawReference busca una construcción nativa dentro del objeto especificado y devuelve una referencia a él. |
IModelObject::GetRawValue El método GetRawValue busca una construcción nativa dentro del objeto especificado. Esta construcción puede ser un campo, una clase base, un campo de una clase base, una función miembro, etc. |
IModelObject::GetTargetInfo El método GetTargetInfo es eficazmente una combinación de los métodos GetLocation y GetTypeInfo que devuelven tanto la ubicación abstracta como el tipo nativo del objeto especificado. |
IModelObject::GetTypeInfo El método GetTypeInfo devolverá el tipo nativo del objeto especificado. Si el objeto no tiene información de tipo nativo asociada a ella, la llamada se realizará correctamente, pero devolverá null. |
IModelObject::IsEqualTo El método IsEqualTo compara un contexto de host con otro contexto de host. Si los dos contextos son equivalentes, se devuelve una indicación de esto. Tenga en cuenta que esta comparación no es equivalencia de interfaz. |
IModelObject::QueryInterface El método IModelObject::QueryInterface recupera punteros a las interfaces admitidas en un objeto . |
IModelObject::Release El método IModelObject::Release disminuye el recuento de referencias de una interfaz en un objeto . |
IModelObject::RemoveParentModel RemoveParentModel quitará un modelo primario especificado de la cadena de búsqueda primaria del objeto especificado. |
IModelObject::SetConcept El método SetConcept colocará un concepto especificado en la instancia de objeto especificada por este puntero. |
IModelObject::SetContextForDataModel La implementación de un modelo de datos usa el método SetContextForDataModel para colocar datos de implementación en objetos de instancia. |
IModelObject::SetKey El método SetKey es el método al que un cliente cambiará para crear una clave en un objeto (y posiblemente asociar metadatos a la clave creada). |
IModelObject::SetKeyValue El método SetKeyValue es el primer método al que un cliente cambiará para establecer el valor de una clave. Este método no se puede usar para crear una nueva clave en un objeto . |
IModelObject::TryCastToRuntimeType El método TryCastToRuntimeType pedirá al host de depuración que realice un análisis y determine el tipo en tiempo de ejecución real (la mayoría de las clases derivadas) del objeto especificado. |
Observaciones
Una de las cosas más básicas y eficaces sobre el modelo de datos es que normaliza la definición de lo que es un objeto y cómo interactúa con un objeto. La interfaz IModelObject encapsula la noción de un objeto, ya sea que ese objeto sea un entero, un valor de punto flotante, una cadena, algún tipo complejo en el espacio de direcciones de destino del depurador o algún concepto del depurador como la noción de un proceso o un módulo.
Hay varias cosas diferentes que se pueden mantener en un objeto IModelObject (o boxeado):
• Valores intrínsecos: un IModelObject puede ser un contenedor para varios tipos básicos: 8, 16, 32 o 64 bits con signo o enteros sin signo, booleanos, cadenas, errores o la noción de vacío.
• Objetos nativos: un IModelObject puede representar un tipo complejo (definido por el sistema de tipos del depurador) dentro del espacio de direcciones de cualquier elemento que el depurador tenga como destino.
• Objetos sintéticos : un objeto IModelObject puede ser un objeto dinámico, un diccionario si lo hace: una colección de tuplas clave/valor/metadatos y un conjunto de conceptos que definen comportamientos que no se representan simplemente mediante pares clave-valor.
• Propiedades: un IModelObject puede representar una propiedad: algo cuyo valor se puede recuperar o modificar con una llamada de método. Una propiedad dentro de un IModelObject es eficazmente un IModelPropertyAccessor interfaz boxed en un IModelObject
• Métodos: un IModelObject puede representar un método: algo que se puede llamar con un conjunto de argumentos y obtener un valor devuelto. Un método dentro de un IModelObject es eficazmente una interfaz IModelMethod boxing en un IModelObject
Un IModelObject no es un objeto de forma aislada. Además de representar uno de los tipos de objetos mostrados anteriormente, cada objeto tiene la noción de una cadena de modelos de datos primarios. Esta cadena se comporta de forma muy similar a | Cadena de prototipos de JavaScript. En lugar de una cadena lineal de prototipos como JavaScript, cada objeto de modelo de datos define una cadena lineal de modelos primarios. Cada uno de esos modelos primarios a su vez tiene otra cadena lineal de su propio conjunto de elementos primarios. En esencia, cada objeto es una agregación de las funcionalidades (propiedades, etc.) de sí mismo y de cada objeto de este árbol. Cuando se consulta una propiedad específica, si el objeto en el que se consulta no admite esa propiedad, la consulta se pasa linealmente a cada elemento primario a su vez. Esto crea un comportamiento en el que la búsqueda de una propiedad se resuelve mediante una búsqueda en primer lugar de profundidad del árbol agregado.
La extensibilidad dentro de este modelo de objetos es muy sencilla, dado que cada objeto es un agregado de sí mismo y el árbol de modelos primarios. Una extensión puede entrar y agregarse a la lista de modelos primarios para otro objeto. Al hacerlo, se extiende el objeto . De esta manera, es posible agregar funcionalidades a cualquier cosa: una instancia determinada de un objeto o valor, un tipo nativo, el concepto del depurador de lo que es un proceso o subproceso, o incluso la noción de "todos los objetos iterables".
Requisitos
Requisito | Valor |
---|---|
encabezado de |
dbgmodel.h |