Aracılığıyla paylaş


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