MatchEvent
Sada C++ Build Insights SDK je kompatibilní se sadou Visual Studio 2017 a novějšími verzemi. Pokud chcete zobrazit dokumentaci k těmto verzím, nastavte ovládací prvek selektoru verzí sady Visual Studio pro tento článek na Visual Studio 2017 nebo novější. Nachází se v horní části obsahu na této stránce.
Funkce MatchEvent
se používá ke shodě události se seznamem typů událostí. Pokud událost odpovídá typu v seznamu, předá se obslužné rutině pro další zpracování.
Syntaxe
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEvent(
const RawEvent& event,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parametry
TEvent
První typ události, který chcete spárovat.
TEvents
Zbývající typy událostí, které chcete spárovat.
TCallable
Typ, který podporuje operator()
. Další informace o tom, které argumenty se předají tomuto operátoru, naleznete v popisu volatelného parametru.
TExtraArgs
Typy nadbytečných argumentů, které byly předány MatchEvent
.
event
Událost, která se má shodovat s typy událostí popsanými TEvent a TEvents.
vypověditelný
MatchEvent
vyvolá volání, které lze volat po úspěšném párování události s libovolnými typy událostí popsanými TEvent a TEvents. Prvním argumentem předaným volatelnému je r-hodnota odpovídajícího typu události. Balíček parametrů extraArgs je dokonale přesměrovaný ve zbývajících parametrech volatelných.
extraArgs
Argumenty, které jsou dokonale přesměrované tak, aby volaly spolu s odpovídajícím typem události.
Návratová hodnota
Hodnota bool
, která je true
v případě, že byla shoda úspěšná nebo false
jinak.
Poznámky
Typy událostí, které se mají použít pro parametry TEvent a TEvents, jsou vybrány ze seznamu tříd zachycení. Seznam událostí a třídy zachycení, které můžete použít k jejich spárování, najdete v tabulce událostí.
Příklad
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.
}