Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
C++ Build Insights SDK är kompatibelt med Visual Studio 2017 och senare. Om du vill se dokumentationen för dessa versioner, ställ in Väljarkontrollen för Visual Studio Version i den här artikeln på Visual Studio 2017 eller senare. Den finns överst i innehållsförteckningen på den här sidan.
Funktionen MatchEventStackInMemberFunction
används för att matcha en händelsestack mot en specifik händelsehierarki, som beskrivs i parameterlistan för en medlemsfunktion. Matchade hierarkier vidarebefordras till medlemsfunktionen för vidare bearbetning. Mer information om händelser, händelsestackar och hierarkier finns i händelsetabellen.
Syntax
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);
Parameterar
TInterface
Den typ som innehåller medlemsfunktionen.
TReturn
Returtypen för medlemsfunktionen.
T1, ..., T10
De typer som beskriver en händelsehierarki som ska matchas.
TExtraParams
Typerna av extra parametrar som accepteras av medlemsfunktionen och händelsehierarkityperna.
TExtraArgs
De typer av extra argument som skickades till MatchEventStackInMemberFunction
.
eventStack
Händelsestacken som ska matchas mot händelsetypshierarkin som beskrivs av T1 till T10.
objectPtr
En pekare till ett objekt där memberFunc anropas.
memberFunc
Medlemsfunktionen som beskriver hierarkin av händelsetyper som ska matchas.
extraArgs
Argumenten som vidarebefordras perfekt till memberFunc tillsammans med hierarkiparametrarna för händelsetyp.
Returvärde
Ett bool
värde som är true
om matchningen lyckades eller false
på annat sätt.
Anmärkningar
Den sista händelsen i eventStack matchas alltid mot den sista posten i händelsetypshierarkin som ska matchas. Alla andra typer i händelsetypshierarkin kan matcha valfri position i eventStack förutom den sista, förutsatt att de är i samma ordning.
Händelsetyper som ska användas för parametrarna T1 till T10 väljs från en lista över avbildningsklasser. En lista över händelser och de avbildningsklasser som du kan använda för att matcha dem finns i händelsetabellen.
Exempel
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).
}