Sdílet prostřednictvím


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ý
MatchEventvyvolá 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.
}