MatchEventStackInMemberFunction
Sada C++ Build Insights SDK je kompatibilní se sadou Visual Studio 2017 a novějšími verzemi. Pokud chcete zobrazit dokumentaci k těmto verzím, nastavte ovládací prvek selektoru verzí sady Visual Studio pro tento článek na Visual Studio 2017 nebo novější. Nachází se v horní části obsahu na této stránce.
Tato MatchEventStackInMemberFunction
funkce se používá ke shodě zásobníku událostí s konkrétní hierarchií událostí, kterou popisuje seznam parametrů členské funkce. Odpovídající hierarchie se předávají členské funkci pro další zpracování. Další informace o událostech, zásobníkech událostí a hierarchiích najdete v tabulce událostí.
Syntaxe
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);
Parametry
TInterface
Typ, který obsahuje členovu funkci.
TReturn
Návratový typ členské funkce.
T1, ..., T10
Typy popisující hierarchii událostí, které se mají shodovat.
TExtraParams
Typy dodatečných parametrů akceptované členské funkce a typy hierarchie událostí.
TExtraArgs
Typy nadbytečných argumentů, které byly předány MatchEventStackInMemberFunction
.
eventStack
Zásobník událostí, který se má shodovat s hierarchií typů událostí, kterou popisuje T1 až T10.
objectPtr
Ukazatel na objekt, na kterém je volána memberFunc .
memberFunc
Členová funkce, která popisuje hierarchii typů událostí, která se má shodovat.
extraArgs
Argumenty, které se dokonale předávají členFunc spolu s parametry hierarchie typů událostí.
Návratová hodnota
Hodnota bool
, která je true
v případě, že byla shoda úspěšná, nebo false
jinak.
Poznámky
Poslední událost v eventStacku se vždy shoduje s poslední položkou v hierarchii typu události, která se má shodovat. Všechny ostatní typy v hierarchii typů událostí se můžou shodovat s libovolnou pozicí v eventStacku s výjimkou posledního, pokud jsou ve stejném pořadí.
Typy událostí, které se mají použít pro parametry T1 až T10 , jsou vybrány ze seznamu tříd zachycení. Seznam událostí a třídy zachycení, které můžete použít k jejich spárování, najdete v tabulce událostí.
Příklad
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).
}