Partager via


MatchEventInMemberFunction

Le SDK Build Insights C++ est compatible avec Visual Studio 2017 et ultérieur. Pour consulter la documentation de ces versions, définissez le contrôle de sélecteur Version de Visual Studio pour cet article sur Visual Studio 2017 ou ultérieur. Il se trouve en haut de la table des matières de cette page.

La MatchEventInMemberFunction fonction est utilisée pour faire correspondre un événement au type décrit par le premier paramètre d’une fonction membre. L’événement mis en correspondance est transféré à la fonction membre pour un traitement ultérieur.

Syntaxe

template <
    typename     TInterface,
    typename     TReturn,
    typename     TEvent,
    typename...  TExtraParams,
    typename...  TExtraArgs>
bool MatchEventInMemberFunction(
    const RawEvent&          event,
    TInterface*              objectPtr,
    TReturn (TInterface::*   memberFunc)(TEvent, TExtraParams...),
    TExtraArgs&&...          extraArgs);

Paramètres

TInterface
Type qui contient la fonction membre.

TReturn
Type de retour de la fonction membre.

TEvent
Type de l’événement à mettre en correspondance.

TExtraParams
Types des paramètres supplémentaires acceptés par la fonction membre, ainsi que le type d’événement à mettre en correspondance.

TExtraArgs
Types des arguments supplémentaires passés à MatchEventInMemberFunction.

event
Événement correspondant au type d’événement décrit par TEvent.

objectPtr
Pointeur vers un objet sur lequel memberFunc est appelé.

memberFunc
Fonction membre qui décrit le type d’événement à mettre en correspondance.

extraArgs
Arguments qui sont parfaitement transférés à memberFunc avec le paramètre de type d’événement.

Valeur de retour

Valeur bool qui est true en cas de réussite de la correspondance, ou false autrement.

Notes

Le type d’événement à utiliser pour le paramètre TEvent peut être sélectionné dans une liste de classes de capture. Pour obtenir la liste des événements et les classes de capture que vous pouvez utiliser pour les mettre en correspondance, consultez la table des événements.

Exemple

void MyClass::Foo1(Function f) {}

void MyClass::Foo2(Compiler cl) {}

void MyClass::OnStartActivity(const EventStack& eventStack)
{
    // Let's assume eventStack contains:
    // [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]

    auto& functionEvent = eventStack.Back(); // The Function event

    bool b1 = MatchEventInMemberFunction(
        functionEvent, this, &MyClass::Foo1);

    bool b2 = MatchEventInMemberFunction(
        functionEvent, this, &MyClass::Foo2);

    // b1: true because the first parameter of Foo1 is Function.
    // b2: false because the first parameter of Foo2 isn't Function.
}