Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
C++ Build Insights SDK är kompatibelt med Visual Studio 2017 och senare. Om du vill se dokumentationen för dessa versioner, ställ in Väljarkontrollen för Visual Studio Version i den här artikeln på Visual Studio 2017 eller senare. Den finns överst i innehållsförteckningen på den här sidan.
Funktionen MatchEvent
används för att matcha en händelse mot en lista över händelsetyper. Om händelsen matchar en typ i listan vidarebefordras den till en hanterare för vidare bearbetning.
Syntax
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEvent(
const RawEvent& event,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parameterar
TEvent
Den första händelsetyp som du vill matcha.
TEvents
De återstående händelsetyperna som du vill matcha.
TCallable
En typ som stöder operator()
. Mer information om vilka argument som skickas till den här operatorn finns i beskrivningen av den anropbara parametern.
TExtraArgs
De typer av extra argument som skickades till MatchEvent
.
händelse
Händelsen som ska matchas mot de händelsetyper som beskrivs av TEvent och TEvents.
Inlösbara
MatchEvent
anropar anropsbar efter att ha matchat händelsen med någon av de händelsetyper som beskrivs av TEvent och TEvents. Det första argumentet som skickas till anropsbar är ett r-värde för den matchade händelsetypen.
Parameterpaketet extraArgs vidarebefordras perfekt i de återstående parametrarna för callable.
extraArgs
Argumenten som vidarebefordras perfekt till anropsbara tillsammans med den matchade händelsetypen.
Returvärde
Ett bool
värde som är true
om matchningen lyckades eller false
på annat sätt.
Anmärkningar
Händelsetyper som ska användas för parametrarna TEvent och TEvents väljs från en lista över avbildningsklasser. En lista över händelser och de avbildningsklasser som du kan använda för att matcha dem finns i händelsetabellen.
Exempel
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.
}