Freigeben über


MatchEvent

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 MatchEvent wird verwendet, um ein Ereignis mit einer Liste von Ereignistypen abzugleichen. Wenn das Ereignis mit einem Typ in der Liste übereinstimmt, wird es zur weiteren Verarbeitung an einen Handler weitergeleitet.

Syntax

template <
    typename        TEvent,
    typename...     TEvents,
    typename        TCallable,
    typename...     TExtraArgs>
bool MatchEvent(
    const RawEvent& event,
    TCallable&&     callable,
    TExtraArgs&&... extraArgs);

Parameter

TEvent
Der erste Ereignistyp, den Sie zuordnen möchten.

TEvents
Die übrigen Ereignistypen, die Sie zuordnen möchten.

TCallable
Ein Typ, der operator() unterstützt. Weitere Informationen zu den Argumenten, die an diesen Operator übergeben werden, finden Sie in der Beschreibung des Parameters callable.

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

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

callable
MatchEvent ruft den Parameter callable auf, nachdem das Ereignis erfolgreich einem der in TEvent und TEvents beschriebenen Ereignistypen zugeordnet werden konnte. Das erste Argument, das an den Parameter callable übergeben wird, ist ein R-Wert des zugeordneten Eventtyps. Das Parameterpaket extraArgs wird perfekt an die übrigen callable-Parameter weitergeleitet.

extraArgs
Die Argumente, die zusammen mit dem übereinstimmenden Ereignistyp perfekt an den Parameter callable weitergeleitet werden.

Rückgabewert

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

Hinweise

Die Eventtypen, die für die Parameter TEvent und TEvents verwendet werden sollen, werden aus eine Liste mit Erfassungsklassen ausgewählt. Eine Liste der Ereignisse und der Erfassungsklassen, die Sie zum Abgleichen verwenden können, finden Sie in der Ereignistabelle.

Beispiel

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 = MatchEvent<Function, Thread>(
        functionEvent, [](auto matchedEvent){ /* Do something... */});

    bool b2 = MatchEvent<CodeGeneration, Thread>(
        functionEvent, [](auto matchedEvent){ /* Do something... */});


    // b1: true because the list of types contains Function, which is
    //     the type of the event we are trying to match.
    // b2: false because the list of types doesn't contain Function.
}