Método IDebugHostTypeSignature::CompareAgainst (dbgmodel.h)
O método CompareAgainst compara a assinatura de tipo com outra assinatura de tipo e retorna como as duas assinaturas se comparam. O resultado da comparação retornado é um membro da enumeração SignatureComparison que é definida da seguinte maneira:
Não relacionado – não há nenhuma relação entre as duas assinaturas ou tipos que estão sendo comparados.
Ambíguo – uma assinatura ou tipo é comparado de forma ambígua com a outra. Para duas assinaturas de tipo, isso significa que há possíveis instâncias de tipo que podem corresponder a uma assinatura igualmente bem. Por exemplo, as duas assinaturas de tipo mostradas abaixo são ambíguas:
Assinatura 1:
std::pair<*, int>
Assinatura 2:
std::pair<int, *>
Como a instância de tipo std::p air<int, int> corresponde a um igualmente bem (ambos têm uma correspondência de concreto e um curinga).
LessSpecific – uma assinatura ou tipo é menos específico do que o outro. Geralmente, isso significa que a assinatura menos específica tem um curinga em que o mais específico tem um tipo concreto. Por exemplo, a primeira assinatura abaixo é menos específica do que a segunda:
Assinatura 1:
std::pair<*, int>
Assinatura 2:
std::pair<int, int>
Porque ele tem um curinga (o *) em que o segundo tem um tipo concreto (int).
MoreSpecific – uma assinatura ou tipo é mais específico do que o outro. Geralmente, isso significa que a assinatura mais específica tem um tipo concreto em que o menos específico tem um curinga. Por exemplo, a primeira assinatura abaixo é mais específica do que a segunda:
Assinatura 1:
std::pair<int, int>
Assinatura 2:
std::pair<*, int>
Porque ele tem um tipo concreto (int) em que o segundo tem um curinga (o *).
Idêntico – as duas assinaturas ou tipos são idênticos.
Sintaxe
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
Parâmetros
typeSignature
A assinatura de tipo com a qual comparar.
result
Uma indicação da relação entre as duas assinaturas é retornada aqui – sejam elas não relacionadas ou idênticas, uma é mais ou menos específica que a outra ou elas são ambíguas. Essa relação é fornecida por um membro da enumeração SignatureComparison.
Retornar valor
Esse método retorna HRESULT que indica êxito ou falha.
Comentários
Código de exemplo
ComPtr<IDebugHostTypeSignature> spSig1; /* get a type signature */
ComPtr<IDebugHostTypeSignature> spSig2; /* get a second type signature */
SignatureComparison compResult;
if (SUCCEEDED(spSig1->ComapreAgainst(spSig2.Get(), &compResult)))
{
// compResult indicates how the two signatures are related (if at all)
// std::pair<int, *> and std::pair<*, int> would be related ambiguously
// std::pair<int, *> would be more specific than std::pair<*, *>
// std::pair<int, int> and std::pair<float, float> would be unrelated
}
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dbgmodel.h |