MatchEvent

El SDK de C++ Build Insights es compatible con Visual Studio 2017 y versiones posteriores. Para ver la documentación de estas versiones, establezca el control de selector de Versión de Visual Studio para este artículo en Visual Studio 2017 o versiones posteriores. Se encuentra en la parte superior de la tabla de contenido de esta página.

La función MatchEvent se usa para comparar un evento con una lista de tipos de eventos. Si el evento coincide con un tipo de la lista, se reenvía a un controlador para su posterior procesamiento.

Sintaxis

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

Parámetros

TEvent
Primer tipo de evento que desea comparar.

TEvents
El resto de tipos de eventos que desea comparar.

TCallable
Tipo que admite operator(). Para obtener más información sobre qué argumentos se pasan a este operador, vea la descripción del parámetro callable.

TExtraArgs
Tipos de los argumentos adicionales que se pasaron a MatchEvent.

event
Evento que se va a comparar con los tipos de evento descritos por TEvent y TEvents.

callable
MatchEvent invoca a callable después de hacer coincidir correctamente el evento con cualquiera de los tipos de evento descritos por TEvent y TEvents. El primer argumento pasado a callable es un valor r del tipo de evento coincidente. El paquete de parámetros extraArgs se reenvía directamente a los parámetros restantes de callable.

extraArgs
Argumentos que se reenvían directamente a callable junto con el tipo de evento coincidente.

Valor devuelto

Valor bool que es true si la coincidencia se produjo correctamente, o false de lo contrario.

Comentarios

Los tipos de evento que se van a usar para los parámetros TEvent y TEvents se seleccionan de una lista de clases de captura. Para obtener una lista de eventos y las clases de captura que puede usar para la comparación, consulte la tabla de eventos.

Ejemplo

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