MatchEventStackInMemberFunction
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 MatchEventStackInMemberFunction
é usada para corresponder uma pilha de eventos com uma hierarquia de eventos específica, descrita pela lista de parâmetros de uma função de membro. As hierarquias correspondentes são encaminhadas para a função de membro para processamento adicional. Para saber mais sobre eventos, pilhas de eventos e hierarquias, confira a tabela de eventos.
Sintaxe
template <
typename TInterface,
typename TReturn,
typename T1,
typename... TExtraParams,
typename... TExtraArgs>
bool MatchEventStackInMemberFunction(
const EventStack& eventStack,
TInterface* objectPtr,
TReturn (TInterface::* memberFunc)(T1, TExtraParams...),
TExtraArgs&&... extraArgs);
template <
typename TInterface,
typename TReturn,
typename T1,
typename T2,
typename... TExtraParams,
typename... TExtraArgs>
bool MatchEventStackInMemberFunction(
const EventStack& eventStack,
TInterface* objectPtr,
TReturn (TInterface::* memberFunc)(T1, T2, TExtraParams...),
TExtraArgs&&... extraArgs);
// Etc...
template <
typename TInterface,
typename TReturn,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
typename... TExtraParams,
typename... TExtraArgs>
bool MatchEventStackInMemberFunction(
const EventStack& eventStack,
TInterface* objectPtr,
TReturn (TInterface::* memberFunc)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TExtraParams...),
TExtraArgs&&... extraArgs);
Parâmetros
TInterface
O tipo que contém a função de membro.
TReturn
O tipo de retorno da função de membro.
T1, ..., T10
Os tipos que descrevem a hierarquia de eventos a ser correspondida.
TExtraParams
Os tipos dos parâmetros extras aceitos pela função de membro e os tipos de hierarquia de eventos.
TExtraArgs
Os tipos dos argumentos adicionais que foram passados para MatchEventStackInMemberFunction
.
eventStack
A pilha de eventos a ser correspondida com a hierarquia de tipos de evento descrita por T1 a T10.
objectPtr
Um ponteiro para um objeto no qual memberFunc é chamado.
memberFunc
A função de membro que descreve a hierarquia de tipo de evento a ser correspondida.
extraArgs
Os argumentos que são encaminhados para memberFunc juntamente com os parâmetros de hierarquia de tipo de evento.
Valor de retorno
Um valor bool
que é true
quando há correspondência ou false
quando não há.
Comentários
O último evento em eventStack é sempre combinado com a última entrada na hierarquia de tipos de evento. Todos os outros tipos na hierarquia de tipos de evento podem corresponder a qualquer posição em eventStack, exceto a último, desde que estejam na mesma ordem.
Os tipos de evento a serem usados para os parâmetros T1 a T10 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::Foo1(Compiler cl, BackEndPass bep, C2DLL c2,
CodeGeneration cg, Thread t, Function f) { }
void MyClass::Foo2(Compiler cl, Function f) { }
void MyClass::Foo3(Thread t, Compiler cl, Function f) { }
void MyClass::Foo4(Compiler cl) { }
void MyClass::OnStartActivity(const EventStack& eventStack)
{
// Let's assume eventStack contains:
// [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]
bool b1 = MatchEventStackInMemberFunction(
eventStack, this, &MyClass::Foo1);
bool b2 = MatchEventStackInMemberFunction(
eventStack, this, &MyClass::Foo2);
bool b3 = MatchEventStackInMemberFunction(
eventStack, this, &MyClass::Foo3);
bool b4 = MatchEventStackInMemberFunction(
eventStack, this, &MyClass::Foo4);
// b1: true because the parameter types of Foo1 match the eventStack
// exactly.
// b2: true because Function is the last entry in both the member
// function parameter list and 'eventStack', and also because
// Compiler comes before Function in 'eventStack' and in the
// parameter type list.
// b3: false because, even though both Thread and Compiler come
// before Function in 'eventStack', the member function parameter
// list doesn't list them in the right order.
// b4: false because the last entry in the member function parameter
// list is Compiler, which doesn't match the last entry in 'eventStack'
// (Function).
}