MatchEvent

O SDK do C++ Build Insights é compatível com o Visual Studio 2017 e posterior. Para ver a documentação dessas versões, defina o controle seletor de Versão do Visual Studio deste artigo para o Visual Studio 2017 ou posterior. Ele é encontrado na parte superior da tabela de conteúdo nesta página.

A função MatchEvent é usada para fazer a correspondência de um evento com uma lista de tipos de evento. Se o evento corresponder a um tipo na lista, ele será encaminhado para um manipulador para processamento adicional.

Sintaxe

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

Parâmetros

Ventilação
O primeiro tipo de evento que você deseja corresponder.

TEvents
Os demais tipos de evento que você deseja corresponder.

TCallable
Um tipo que dá suporte a operator(). Para obter mais informações sobre quais argumentos são passados para esse operador, consulte a descrição do parâmetro callable.

TExtraArgs
Os tipos dos argumentos adicionais que foram passados para MatchEvent.

event
O evento a ser correspondido com o tipo de evento descrito por TEvent e TEvents.

callable
MatchEvent invoca callable após a correspondência do evento com qualquer um dos tipos de evento descritos em TEvent e TEvents. O primeiro argumento passado para callable é um r-value do tipo de evento correspondente. O pacote de parâmetros extraArgs é encaminhado perfeitamente nos parâmetros restantes do callable.

extraArgs
Os argumentos que são encaminhados perfeitamente para callable juntamente com o tipo de evento correspondente.

Valor de Devolução

Um valor bool que é true quando há correspondência ou false quando não há.

Comentários

Os tipos de evento a serem usados para os parâmetros TEvent e TEvents são selecionados em uma lista de classes de captura. Para obter uma lista de eventos e as classes de captura que você pode usar para combiná-los, consulte a tabela de eventos.

Exemplo

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