MatchEvent
C++ Build Insights SDK'sı Visual Studio 2017 ve sonraki sürümlerle uyumludur. Bu sürümlerin belgelerini görmek için bu makalenin Visual Studio Sürüm seçici denetimini Visual Studio 2017 veya üzeri olarak ayarlayın. Bu sayfadaki içindekiler tablosunun en üstünde bulunur.
MatchEvent
İşlev, bir olayı olay türleri listesiyle eşleştirmek için kullanılır. Olay listedeki bir türle eşleşiyorsa, daha fazla işlem için bir işleyiciye iletilir.
Sözdizimi
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEvent(
const RawEvent& event,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parametreler
TEvent
Eşleştirmek istediğiniz ilk olay türü.
TEvents
Eşleştirmek istediğiniz kalan olay türleri.
Çağrılabilen
destekleyen operator()
bir tür. Bu işleç için hangi bağımsız değişkenlerin geçirildiği hakkında daha fazla bilgi için çağrılabilen parametre açıklamasına bakın.
TExtraArgs
öğesine geçirilen MatchEvent
ek bağımsız değişkenlerin türleri.
event
TEvent ve TEvents tarafından açıklanan olay türleriyle eşleşecek olay.
Callable
MatchEvent
, olayı TEvent ve TEvents tarafından açıklanan olay türlerinden herhangi biriyle başarıyla eşleştirdikten sonra çağrılabilir öğesini çağırır. Çağrılabilir öğesine geçirilen ilk bağımsız değişken, eşleşen olay türünün r değeridir. extraArgs parametre paketi, çağrılabilen öğesinin kalan parametrelerinde mükemmel iletilir.
extraArgs
Eşlenen olay türüyle birlikte çağrılabilene mükemmel iletilen bağımsız değişkenler.
Dönüş Değeri
bool
Eşleştirmenin başarılı olduğu veya false
başka bir şekilde olduğu bir değertrue
.
Açıklamalar
TEvent ve TEvents parametreleri için kullanılacak olay türleri, yakalama sınıfları listesinden seçilir. Olayları ve bunları eşleştirmek için kullanabileceğiniz yakalama sınıflarının listesi için olay tablosuna bakın.
Örnek
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.
}