MatchEventInMemberFunction

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 MatchEventInMemberFunction se usa para comparar un evento con el tipo descrito por el primer parámetro de una función miembro. El evento coincidente se reenvía a la función miembro para su posterior procesamiento.

Sintaxis

template <
    typename     TInterface,
    typename     TReturn,
    typename     TEvent,
    typename...  TExtraParams,
    typename...  TExtraArgs>
bool MatchEventInMemberFunction(
    const RawEvent&          event,
    TInterface*              objectPtr,
    TReturn (TInterface::*   memberFunc)(TEvent, TExtraParams...),
    TExtraArgs&&...          extraArgs);

Parámetros

TInterface
Tipo que contiene la función miembro.

TReturn
Tipo de valor devuelto de la función miembro.

TEvent
Tipo de evento que se compara.

TExtraParams
Tipos de los parámetros adicionales aceptados por la función miembro junto con el tipo de evento que se compara.

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

event
Evento que se va a comparar con el tipo de evento descrito por TEvent.

objectPtr
Puntero a un objeto en el que se llama a memberFunc.

memberFunc
Función miembro que describe el tipo de evento que se compara.

extraArgs
Argumentos que se reenvían directamente a memberFunc junto con el parámetro del tipo de evento.

Valor devuelto

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

Comentarios

El tipo de evento que se va a usar para el parámetro TEvent se puede seleccionar 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::Foo1(Function f) {}

void MyClass::Foo2(Compiler cl) {}

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 = MatchEventInMemberFunction(
        functionEvent, this, &MyClass::Foo1);

    bool b2 = MatchEventInMemberFunction(
        functionEvent, this, &MyClass::Foo2);

    // b1: true because the first parameter of Foo1 is Function.
    // b2: false because the first parameter of Foo2 isn't Function.
}