Partager via


MatchEvent

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 MatchEvent fonction est utilisée pour faire correspondre un événement à une liste de types d’événements. Si l’événement correspond à un type dans la liste, il est transféré à un gestionnaire pour un traitement ultérieur.

Syntaxe

template <
    typename        TEvent,
    typename...     TEvents,
    typename        TCallable,
    typename...     TExtraArgs>
bool MatchEvent(
    const RawEvent& event,
    TCallable&&     callable,
    TExtraArgs&&... extraArgs);

Paramètres

TEvent
Premier type d’événement que vous souhaitez mettre en correspondance.

TEvents
Types d’événements restants que vous souhaitez mettre en correspondance.

TCallable
Type qui prend en charge operator(). Pour plus d’informations sur les arguments transmis à cet opérateur, consultez la description du paramètre pouvant être appelé .

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

event
Événement correspondant aux types d’événements décrits par TEvent et TEvents.

joignable
MatchEventappelle l’appelant après avoir correctement associé l’événement à l’un des types d’événements décrits par TEvent et TEvents. Le premier argument passé à callable est une valeur r du type d’événement correspondant. Le pack de paramètres extraArgs est parfaitement transféré dans les paramètres restants de l’appelant.

extraArgs
Arguments qui sont parfaitement transférés pour être appelants , ainsi que le type d’événement correspondant.

Valeur de retour

Valeur qui s’agit true d’une bool correspondance réussie ou false autre.

Notes

Les types d’événements à utiliser pour les paramètres TEvent et TEvents sont sélectionnés 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::OnStartActivity(const EventStack& eventStack)
{
    // Let's assume eventStack contains:
    // [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]

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

    bool b1 = MatchEvent<Function, Thread>(
        functionEvent, [](auto matchedEvent){ /* Do something... */});

    bool b2 = MatchEvent<CodeGeneration, Thread>(
        functionEvent, [](auto matchedEvent){ /* Do something... */});


    // b1: true because the list of types contains Function, which is
    //     the type of the event we are trying to match.
    // b2: false because the list of types doesn't contain Function.
}