当前位置: 首页>>代码示例>>C++>>正文


C++ Archive::isFlagSet方法代码示例

本文整理汇总了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;
        }
    }
开发者ID:MorelM35,项目名称:ESIR_MorKaneGame,代码行数:46,代码来源:SerializeSmartPtr.hpp

示例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;
     }
 }
开发者ID:MorelM35,项目名称:ESIR_MorKaneGame,代码行数:22,代码来源:SerializeSmartPtr.hpp


注:本文中的sf::Archive::isFlagSet方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。