Partager via


Méthode IDebugHostTypeSignature ::CompareAgainst (dbgmodel.h)

La méthode CompareAgainst compare la signature de type à une autre signature de type et retourne la façon dont les deux signatures se comparent. Le résultat de comparaison retourné est un membre de l’énumération SignatureComparison qui est définie comme suit :

Sans relation : il n’existe aucune relation entre les deux signatures ou types comparés.

Ambigu : une signature ou un type se compare de façon ambiguë à l’autre. Pour deux signatures de type, cela signifie qu’il existe des instances de type potentielles qui peuvent correspondre à l’une ou l’autre signature de manière égale. Par exemple, les deux signatures de type indiquées ci-dessous sont ambiguës :

Signature 1 :

std::pair<*, int> 

Signature 2 :

std::pair<int, *>

Étant donné que le type instance std ::p air<int, int> correspond également à l’une ou l’autre (les deux ont une correspondance concrète et une correspondance à caractère générique).

LessSpecific : une signature ou un type est moins spécifique que l’autre. Souvent, cela signifie que la signature la moins spécifique a un caractère générique où la plus spécifique a un type concret. Par exemple, la première signature ci-dessous est moins spécifique que la seconde :

Signature 1 :

std::pair<*, int> 

Signature 2 :

std::pair<int, int> 

Parce qu’il a un caractère générique (le *) où le second a un type concret (int).

MoreSpecific : une signature ou un type est plus spécifique que l’autre. Souvent, cela signifie que la signature la plus spécifique a un type concret où la moins spécifique a un caractère générique. Par exemple, la première signature ci-dessous est plus spécifique que la seconde :

Signature 1 :

std::pair<int, int> 

Signature 2 :

std::pair<*, int> 

Parce qu’il a un type concret (int) où le second a un caractère générique (le *).

Identique : les deux signatures ou types sont identiques.

Syntaxe

HRESULT CompareAgainst(
  IDebugHostTypeSignature *typeSignature,
  SignatureComparison     *result
);

Paramètres

typeSignature

Signature de type à comparer.

result

Une indication de la relation entre les deux signatures est retournée ici : qu’elles soient non liées ou identiques, que l’une soit plus ou moins spécifique que l’autre, ou qu’elles soient ambiguës. Cette relation est donnée par un membre de l’énumération SignatureComparison.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

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
}

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostTypeSignature