Udostępnij za pośrednictwem


MatchEvent

Zestaw SDK usługi Build Insights języka C++ jest zgodny z programem Visual Studio 2017 lub nowszym. Aby zapoznać się z dokumentacją dla tych wersji, ustaw kontrolkę selektora wersji programu Visual Studio dla tego artykułu na program Visual Studio 2017 lub nowszy. Znajduje się on w górnej części spisu treści na tej stronie.

Funkcja MatchEvent służy do dopasowywania zdarzenia do listy typów zdarzeń. Jeśli zdarzenie pasuje do typu na liście, jest przekazywane do programu obsługi w celu dalszego przetwarzania.

Składnia

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

Parametry

TEvent
Pierwszy typ zdarzenia, który chcesz dopasować.

TEvents
Pozostałe typy zdarzeń, które chcesz dopasować.

Funkcja TCallable
Typ, który obsługuje operator()element . Aby uzyskać więcej informacji o tym, które argumenty są przekazywane do tego operatora, zobacz opis parametru z możliwością wywołania .

TExtraArgs
Typy dodatkowych argumentów, które zostały przekazane do MatchEvent.

event
Zdarzenie, które ma być zgodne z typami zdarzeń opisanymi przez TEvent i TEvents.

Nieopłacona
MatchEventwywołuje metodę wywoływaną po pomyślnym dopasowaniu zdarzenia do dowolnego typu zdarzenia opisanego przez TEvent i TEvents. Pierwszym argumentem przekazanym do wywołania jest wartość r dopasowanego typu zdarzenia. Pakiet parametrów extraArgs jest idealnie przekazywany w pozostałych parametrach wywoływania.

extraArgs
Argumenty, które są idealnie przekazywane do wywołania wraz z dopasowanym typem zdarzenia.

Wartość zwracana

bool Wartość, która jest true zgodna z powodzeniem lub false w inny sposób.

Uwagi

Typy zdarzeń do użycia dla parametrów TEvent i TEvents są wybierane z listy klas przechwytywania. Aby uzyskać listę zdarzeń i klas przechwytywania, których można użyć do ich dopasowania, zobacz tabelę zdarzeń.

Przykład

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