MatchEventInMemberFunction

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 MatchEventInMemberFunction é usada para corresponder a um evento com o tipo descrito pelo primeiro parâmetro de uma função de membro. O evento correspondente é encaminhado para a função de membro para processamento adicional.

Sintaxe

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
O tipo que contém a função de membro.

TReturn
O tipo de retorno da função de membro.

Ventilação
O tipo do evento para correspondência.

TExtraParams
Os tipos dos parâmetros adicionais aceitos pela função de membro, bem como o tipo de evento a ser correspondido.

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

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

objectPtr
Um ponteiro para um objeto no qual memberFunc é chamado.

memberFunc
A função de membro que descreve o tipo de evento a ser correspondido.

extraArgs
Os argumentos que são encaminhados para memberFunc juntamente com o parâmetro de tipo de evento.

Valor de Devolução

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

Comentários

O tipo de evento a ser usado para o parâmetro TEvent pode ser selecionado 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::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.
}