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
MatchEvent
appelle 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.
}