Condividi tramite


MatchEventInMemberFunction

Build Insights SDK per C++ è compatibile con Visual Studio 2017 e versioni successive. Per visualizzare la documentazione per queste versioni, impostare il controllo selettore della versione di Visual Studio per questo articolo su Visual Studio 2017 o versione successiva. Si trova nella parte superiore del sommario in questa pagina.

La MatchEventInMemberFunction funzione viene usata per trovare la corrispondenza di un evento rispetto al tipo descritto dal primo parametro di una funzione membro. L'evento corrispondente viene inoltrato alla funzione membro per un'ulteriore elaborazione.

Sintassi

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);

Parametri

TInterface
Tipo che contiene la funzione membro.

TReturn
Tipo restituito della funzione membro.

TEvent
Tipo dell'evento da trovare.

TExtraParams
Tipi dei parametri aggiuntivi accettati dalla funzione membro insieme al tipo di evento da trovare in corrispondenza.

TExtraArgs
Tipi degli argomenti aggiuntivi passati a MatchEventInMemberFunction.

evento
Evento da associare al tipo di evento descritto da TEvent.

objectPtr
Puntatore a un oggetto in cui viene chiamato memberFunc .

memberFunc
Funzione membro che descrive il tipo di evento da trovare.

extraArgs
Argomenti che vengono inoltrati perfettamente a memberFunc insieme al parametro del tipo di evento.

Valore restituito

Valore bool che si verifica true se la corrispondenza ha avuto esito positivo o false in caso contrario.

Osservazioni:

Il tipo di evento da usare per il parametro TEvent può essere selezionato da un elenco di classi di acquisizione. Per un elenco di eventi e le classi di acquisizione che è possibile usare per trovare le corrispondenze, vedere la tabella degli eventi.

Esempio

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