MatchEvent
O SDK do C++ Build Insights é compatível com o Visual Studio 2017 e posterior. Para ver a documentação dessas versões, defina o controle seletor de Versão do Visual Studio deste artigo para o Visual Studio 2017 ou posterior. Ele é encontrado na parte superior da tabela de conteúdo nesta página.
A função MatchEvent
é usada para fazer a correspondência de um evento com uma lista de tipos de evento. Se o evento corresponder a um tipo na lista, ele será encaminhado para um manipulador para processamento adicional.
Sintaxe
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEvent(
const RawEvent& event,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parâmetros
TEvent
O primeiro tipo de evento que você deseja corresponder.
TEvents
Os demais tipos de evento que você deseja corresponder.
TCallable
Um tipo que dá suporte a operator()
. Para obter mais informações sobre quais argumentos são passados para esse operador, consulte a descrição do parâmetro callable.
TExtraArgs
Os tipos dos argumentos adicionais que foram passados para MatchEvent
.
event
O evento a ser correspondido com o tipo de evento descrito por TEvent e TEvents.
callable
MatchEvent
invoca callable após a correspondência do evento com qualquer um dos tipos de evento descritos em TEvent e TEvents. O primeiro argumento passado para callable é um r-value do tipo de evento correspondente. O pacote de parâmetros extraArgs é encaminhado perfeitamente nos parâmetros restantes do callable.
extraArgs
Os argumentos que são encaminhados perfeitamente para callable juntamente com o tipo de evento correspondente.
Valor de retorno
Um valor bool
que é true
quando há correspondência ou false
quando não há.
Comentários
Os tipos de evento a serem usados para os parâmetros TEvent e TEvents são selecionados em uma lista de classes de captura. Para obter uma lista de eventos e as classes de captura que você pode usar para combiná-los, consulte a tabela de eventos.
Exemplo
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.
}