MatchEventStack
El SDK de C++ Build Insights es compatible con Visual Studio 2017 y versiones posteriores. Para ver la documentación de estas versiones, establezca el control de selector de Versión de Visual Studio para este artículo en Visual Studio 2017 o versiones posteriores. Se encuentra en la parte superior de la tabla de contenido de esta página.
La función MatchEventStack
se usa para comparar una pila de eventos con una jerarquía de eventos específica. Las jerarquías coincidentes se reenvían a un controlador para su posterior procesamiento. Para obtener más información sobre eventos, pilas de eventos y jerarquías, vea la tabla de eventos.
Sintaxis
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEventStack(
const EventStack& eventStack,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parámetros
TEvent
Tipo del elemento primario más antiguo que se va a comparar en la pila de eventos.
TEvents
Tipos restantes que desea comparar en la pila de eventos.
TCallable
Tipo que admite operator()
. Para obtener más información sobre qué argumentos se pasan a este operador, vea la descripción del parámetro callable.
TExtraArgs
Tipos de los argumentos adicionales pasados a MatchEventStack
.
eventStack
Pila de eventos para comparar con la jerarquía de tipos de evento descrita por TEvent y TEvents.
callable
Tras hacer coincidir correctamente la pila de eventos con la jerarquía de tipos de evento descrita por TEvent y TEvents, MatchEventStack
invoca a callable. Pasa a callable un argumento de valor r para cada tipo en la jerarquía de eventos. El paquete de parámetros extraArgs se reenvía directamente a los parámetros restantes de callable.
extraArgs
Argumentos que se reenvían directamente a callable junto con el tipo de evento coincidente.
Valor devuelto
Valor bool
que es true
si la coincidencia se produjo correctamente, o false
de lo contrario.
Comentarios
El último evento de eventStack siempre se compara con la última entrada de la lista de tipos [TEvent, TEvents...] concatenada. El resto de entradas de TEvent y TEvents pueden coincidir con cualquier posición de eventStack excepto la última, siempre que estén en el mismo orden.
Los tipos de evento que se van a usar para los parámetros TEvent y TEvents se seleccionan de una lista de clases de captura. Para obtener una lista de eventos y las clases de captura que puede usar para la comparación, consulte la tabla de eventos.
Ejemplo
void MyClass::OnStartActivity(const EventStack& eventStack)
{
// Let's assume eventStack contains:
// [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]
bool b1 = MatchEventStack<Compiler, BackEndPass, C2DLL,
CodeGeneration, Thread, Function>(
eventStack, [](Compiler cl, BackEndPass bep, C2DLL c2,
CodeGeneration cg, Thread t, Function f){ /* Do something ... */ });
bool b2 = MatchEventStack<Compiler, Function>(
eventStack, [](Compiler cl, Function f){ /* Do something... */ });
bool b3 = MatchEventStack<Thread, Compiler, Function>(
eventStack, [](Thread t, Compiler cl Function f){ /* Do something... */ });
bool b4 = MatchEventStack<Compiler>(
eventStack, [](Compiler cl){ /* Do something... */ });
// b1: true because the list of types matches the eventStack exactly.
// b2: true because Function is the last entry in both the type list
// and 'eventStack', and also because Compiler comes before
// Function in 'eventStack' and in the type list.
// b3: false because, even though both Thread and Compiler come
// before Function in 'eventStack', they aren't listed in the
// right order in the type list.
// b4: false because the last entry in the type list is Compiler,
// which doesn't match the last entry in 'eventStack' (Function).
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de