MatchEventStackInMemberFunction
C++ Build Insights SDK'sı Visual Studio 2017 ve sonraki sürümlerle uyumludur. Bu sürümlerin belgelerini görmek için bu makalenin Visual Studio Sürüm seçici denetimini Visual Studio 2017 veya üzeri olarak ayarlayın. Bu sayfadaki içindekiler tablosunun en üstünde bulunur.
MatchEventStackInMemberFunction
İşlev, bir üye işlevin parametre listesi tarafından açıklanan belirli bir olay hiyerarşisi ile bir olay yığınını eşleştirmek için kullanılır. Eşleşen hiyerarşiler, daha fazla işlem için üye işlevine iletilir. Olaylar, olay yığınları ve hiyerarşiler hakkında daha fazla bilgi edinmek için bkz . olay tablosu.
Sözdizimi
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);
Parametreler
TInterface
Üye işlevini içeren tür.
TReturn
Üye işlevinin dönüş türü.
T1, ..., T10
Eşleşecek olay hiyerarşisini açıklayan türler.
TExtraParams
Üye işlevi tarafından kabul edilen ek parametre türleri ve olay hiyerarşisi türleri.
TExtraArgs
öğesine geçirilen MatchEventStackInMemberFunction
ek bağımsız değişkenlerin türleri.
eventStack
T1 ile T10 arasında tanımlanan olay türü hiyerarşisi ile eşleşecek olay yığını.
objectPtr
memberFunc öğesinin çağrıldığı nesnenin işaretçisi.
memberFunc
Eşleşecek olay türü hiyerarşisini açıklayan üye işlevi.
extraArgs
Olay türü hiyerarşi parametreleriyle birlikte memberFunc'a mükemmel iletilen bağımsız değişkenler.
Dönüş Değeri
bool
Eşleştirmenin başarılı olduğu veya false
başka bir şekilde olduğu bir değertrue
.
Açıklamalar
eventStack'teki son olay her zaman olay türü hiyerarşisindeki eşleşecek son girişle eşleştirilir. Olay türü hiyerarşisindeki diğer tüm türler, aynı sırada olmaları koşuluyla eventStack'teki son konum dışındaki herhangi bir konumu eşleştirebilir.
T1 ile T10 parametreleri için kullanılacak olay türleri, yakalama sınıfları listesinden seçilir. Olayları ve bunları eşleştirmek için kullanabileceğiniz yakalama sınıflarının listesi için olay tablosuna bakın.
Örnek
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).
}