MatchEventStackInMemberFunctionMatchEventStackInMemberFunction

El SDK de C++ Build Insights es compatible con Visual Studio 2017 y versiones superiores.The C++ Build Insights SDK is compatible with Visual Studio 2017 and above. Para ver la documentación de estas versiones, establezca el control selector de Versión de Visual Studio para este artículo en Visual Studio 2017 o Visual Studio 2019.To see the documentation for these versions, set the Visual Studio Version selector control for this article to Visual Studio 2017 or Visual Studio 2019. Se encuentra en la parte superior de la tabla de contenido de esta página.It's found at the top of the table of contents on this page.

La función MatchEventStackInMemberFunction se usa para comparar una pila de eventos con una jerarquía de eventos concreta, que se describe en la lista de parámetros de una función miembro.The MatchEventStackInMemberFunction function is used to match an event stack against a specific event hierarchy, described by the parameter list of a member function. Las jerarquías coincidentes se reenvían a la función miembro para su posterior procesamiento.Matched hierarchies are forwarded to the member function for further processing. Para obtener más información sobre eventos, pilas de eventos y jerarquías, vea la tabla de eventos.To learn more about events, event stacks, and hierarchies, see event table.

SintaxisSyntax

template <
    typename     TInterface,
    typename     TReturn,
    typename     T1,
    typename...  TExtraParams,
    typename...  TExtraArgs>
bool MatchEventStackInMemberFunction(
    const EventStack&         eventStack,
    TInterface*               objectPtr,
    TReturn (TInterface::*    memberFunc)(T1, TExtraParams...),
    TExtraArgs&&...           extraArgs);

template <
    typename     TInterface,
    typename     TReturn,
    typename     T1,
    typename     T2,
    typename...  TExtraParams,
    typename...  TExtraArgs>
bool MatchEventStackInMemberFunction(
    const EventStack&         eventStack,
    TInterface*               objectPtr,
    TReturn (TInterface::*    memberFunc)(T1, T2, TExtraParams...),
    TExtraArgs&&...           extraArgs);

// Etc...

template <
    typename     TInterface,
    typename     TReturn,
    typename     T1,
    typename     T2,
    typename     T3,
    typename     T4,
    typename     T5,
    typename     T6,
    typename     T7,
    typename     T8,
    typename     T9,
    typename     T10,
    typename...  TExtraParams,
    typename...  TExtraArgs>
bool MatchEventStackInMemberFunction(
    const EventStack&         eventStack,
    TInterface*               objectPtr,
    TReturn (TInterface::*    memberFunc)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TExtraParams...),
    TExtraArgs&&...           extraArgs);

ParámetrosParameters

TInterfaceTInterface
Tipo que contiene la función miembro.The type that contains the member function.

TReturnTReturn
Tipo de valor devuelto de la función miembro.The return type of the member function.

T1 , ..., T10T1 , ..., T10
Tipos que describen la jerarquía de eventos que se va a comparar.The types describing the event hierarchy to match.

TExtraParamsTExtraParams
Tipos de los parámetros adicionales aceptados por la función miembro y tipos de jerarquía de eventos.The types of the extra parameters accepted by the member function, and the event hierarchy types.

TExtraArgsTExtraArgs
Tipos de los argumentos adicionales que se pasaron a MatchEventStackInMemberFunction.The types of the extra arguments that were passed to MatchEventStackInMemberFunction.

eventStackeventStack
Pila de eventos para comparar con la jerarquía de tipos de evento descrita desde T1 hasta T10.The event stack to match against the event type hierarchy described by T1 through T10.

objectPtrobjectPtr
Puntero a un objeto en el que se llama a memberFunc.A pointer to an object on which memberFunc is called.

memberFuncmemberFunc
Función miembro que describe la jerarquía de tipos de eventos que se va a comparar.The member function that describes the event type hierarchy to match.

extraArgsextraArgs
Argumentos que se reenvían directamente a memberFunc junto con los parámetros de la jerarquía de tipo de eventos.The arguments that get perfect-forwarded to memberFunc along with the event type hierarchy parameters.

Valor devueltoReturn Value

Valor bool que es true si la coincidencia se produjo correctamente, o false de lo contrario.A bool value that is true if matching was successful, or false otherwise.

ComentariosRemarks

El último evento de eventStack siempre se compara con la última entrada de la jerarquía de tipos de evento con la que se hace coincidir.The last event in eventStack is always matched against the last entry in the event type hierarchy to match. Todos los demás tipos de la jerarquía de tipos de evento pueden coincidir con cualquier posición de eventStack excepto la última, siempre que estén en el mismo orden.All other types in the event type hierarchy can match any position in eventStack except the last, provided they're in the same order.

Los tipos de evento que se van a usar para los parámetros de T1 a T10 se seleccionan de una lista de clases de captura.Event types to use for the T1 through T10 parameters are selected from a list of capture classes. Para obtener una lista de eventos y las clases de captura que puede usar para la comparación, consulte la tabla de eventos.For a list of events and the capture classes you can use to match them, see event table.

EjemploExample

void MyClass::Foo1(Compiler cl, BackEndPass bep, C2DLL c2,
    CodeGeneration cg, Thread t, Function f) { }

void MyClass::Foo2(Compiler cl, Function f) { }

void MyClass::Foo3(Thread t, Compiler cl, Function f) { }

void MyClass::Foo4(Compiler cl) { }

void MyClass::OnStartActivity(const EventStack& eventStack)
{
    // Let's assume eventStack contains:
    // [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]

    bool b1 = MatchEventStackInMemberFunction(
        eventStack, this, &MyClass::Foo1);

    bool b2 = MatchEventStackInMemberFunction(
        eventStack, this, &MyClass::Foo2);

    bool b3 = MatchEventStackInMemberFunction(
        eventStack, this, &MyClass::Foo3);

    bool b4 = MatchEventStackInMemberFunction(
        eventStack, this, &MyClass::Foo4);

    // b1: true because the parameter types of Foo1 match the eventStack
    //     exactly.
    // b2: true because Function is the last entry in both the member
    //     function parameter list and 'eventStack', and also because
    //     Compiler comes before Function in 'eventStack' and in the
    //     parameter type list.
    // b3: false because, even though both Thread and Compiler come
    //     before Function in 'eventStack', the member function parameter
    //     list doesn't list them in the right order.
    // b4: false because the last entry in the member function parameter
    //     list is Compiler, which doesn't match the last entry in 'eventStack'
    //     (Function).
}