本文整理汇总了C++中sf::Archive::isFlagSet方法的典型用法代码示例。如果您正苦于以下问题:C++ Archive::isFlagSet方法的具体用法?C++ Archive::isFlagSet怎么用?C++ Archive::isFlagSet使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sf::Archive
的用法示例。
在下文中一共展示了Archive::isFlagSet方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: serializeRefCountedSmartPtr
inline void serializeRefCountedSmartPtr(SmartPtrT **ppt, SF::Archive &ar)
{
if (ar.isRead())
{
if (ar.isFlagSet(Archive::POINTER))
{
*ppt = new SmartPtrT;
}
T *pt = NULL;
ar & pt;
ContextRead &ctx = ar.getIstream()->getTrackingContext();
if (!ctx.getEnabled())
{
// No pointer tracking.
**ppt = SmartPtrT(pt);
}
else
{
// Pointer tracking enabled, so some extra gymnastics involved.
void *pv = NULL;
if (pt && ctx.getEnabled() && ctx.query((void *)pt, typeid(SmartPtrT), pv))
{
SmartPtrT *ps_prev = reinterpret_cast<SmartPtrT *>(pv);
**ppt = *ps_prev;
}
else if (pt)
{
if (ctx.getEnabled())
{
ctx.add((void *)pt, typeid(SmartPtrT), *ppt);
}
**ppt = SmartPtrT(pt);
}
}
}
else /*if (ar.isWrite())*/
{
T *pt = NULL;
if (*ppt)
{
pt = (**ppt).get();
}
ar & pt;
}
}
示例2: serializeSimpleSmartPtr
inline void serializeSimpleSmartPtr(SmartPtrT **ppt, SF::Archive &ar)
{
if (ar.isRead())
{
if (ar.isFlagSet(Archive::POINTER))
{
*ppt = new SmartPtrT();
}
T *pt = NULL;
ar & pt;
(**ppt).reset(pt);
}
else if (ar.isWrite())
{
T *pt = NULL;
if (*ppt && (**ppt).get())
{
pt = (**ppt).operator->();
}
ar & pt;
}
}