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