Freigeben über


MatchEventInMemberFunction

Das C++ Build Insights SDK ist mit Visual Studio 2017 und höher kompatibel. Um die Dokumentation für diese Versionen anzuzeigen, legen Sie das Auswahlsteuerelement Version in Visual Studio für diesen Artikel auf Visual Studio 2017 oder höher fest. Es befindet sich am Anfang des Inhaltsverzeichnisses auf dieser Seite.

Die Funktion MatchEventInMemberFunction wird verwendet, um ein Ereignis mit dem Typ abzugleichen, der vom ersten Parameter einer Memberfunktion beschrieben wird. Das zugeordnete Ereignis wird zur weiteren Verarbeitung an die Memberfunktion weitergeleitet.

Syntax

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

Parameter

TInterface
Der Typ, der die Memberfunktion enthält.

TReturn
Der Rückgabetyp der Memberfunktion.

TEvent
Der Typ des abzugleichenden Ereignisses.

TExtraParams
Die Typen der zusätzlichen Parameter, die von der Memberfunktion akzeptiert werden, und der Ereignistyp, der abgeglichen werden soll.

TExtraArgs
Die Typen der zusätzlichen Argumente, die an MatchEventInMemberFunction übergeben wurden.

event
Das Ereignis, das mit den Ereignistypen abgeglichen werden soll, die von TEvent beschrieben werden.

objectPtr
Ein Zeiger auf ein Objekt, für das memberFunc aufgerufen wird.

memberFunc
Die Memberfunktion, die den abzugleichenden Ereignistyp beschreibt.

extraArgs
Die Argumente, die zusammen mit dem Ereignistypparameter perfekt an memberFunc weitergeleitet werden.

Rückgabewert

Ein bool-Wert, der true ist, wenn der Abgleich erfolgreich war. Andernfalls wird false zurückgegeben.

Hinweise

Der Ereignistyp, der für den TEvent- Parameter verwendet werden soll, kann aus einer Liste mit Erfassungsklassen ausgewählt werden. Eine Liste der Ereignisse und der Erfassungsklassen, die Sie zum Abgleichen verwenden können, finden Sie in der Ereignistabelle.

Beispiel

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