锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一主播视频,午夜视黄欧洲亚洲,久久久夜夜夜http://m.shnenglu.com/yy2008/archive/2008/11/13/66837.html絀哄績鑿?/dc:creator>絀哄績鑿?/author>Thu, 13 Nov 2008 09:37:00 GMThttp://m.shnenglu.com/yy2008/archive/2008/11/13/66837.htmlhttp://m.shnenglu.com/yy2008/comments/66837.htmlhttp://m.shnenglu.com/yy2008/archive/2008/11/13/66837.html#Feedback3http://m.shnenglu.com/yy2008/comments/commentRss/66837.htmlhttp://m.shnenglu.com/yy2008/services/trackbacks/66837.html
#ifndef __SharedPtr_H__
#define __SharedPtr_H__
#include "OgrePrerequisites.h"
namespace Ogre {
    template<class T> class SharedPtr {
    protected:
        T* pRep;           
        unsigned int* pUseCount; //鐪嬪埌榪欓噷錛屽簲璇ヨ兘鐭ラ亾錛孲haredPtr鏄氳繃寮曠敤璁℃暟鏉ョ鐞唒Rep鐨勫鍛?nbsp;     
    public:
        OGRE_AUTO_SHARED_MUTEX            
        SharedPtr() : pRep(0), pUseCount(0)
        {
            OGRE_SET_AUTO_SHARED_MUTEX_NULL
        }錛忥紡鍏佽鏈変竴涓┖鐨凷haredPtr,涓嶆寚鍚戜換浣曠殑瀵硅薄銆?br>
        template< class Y>
        explicit SharedPtr(Y* rep) : pRep(rep), pUseCount(new unsigned int(1))
        {
            OGRE_SET_AUTO_SHARED_MUTEX_NULL
            OGRE_NEW_AUTO_SHARED_MUTEX
        }//榪欎釜鍐欐硶鏄疢ember Templates錛屽緢鏈夌敤錛岃繖鏍峰氨鍏佽鐢ㄤ竴涓猋瀵硅薄鐨勬寚閽堟潵鍒濆鍖栦竴涓猄haredPtr<T>
                 //涓嬮潰榪樿兘鐪嬪埌寰堝榪欐牱鐨凪ember Templates
                 //瑕佹槸浠ュ墠娌¤榪囩殑浜猴紝鎺ㄨ崘鐪嬩竴涓婥++ Templates鐨勭5绔犮佺3鑺?br>                 //try this:   vector<int> intvec;
                 //       vector<float> floatvec;
                 //       floatvec = intvec ???????
                 //鎻愪竴涓嬶紝鎵鏈夌殑鍒濆鍖栧嚱鏁伴兘娌℃湁媯鏌ep鏄惁闈炵┖錛屾墍浠haredPtr鎺ュ彈涓涓狽ull鎸囬拡
                 //瀹夊叏媯鏌ュ湪姣忔璋冪敤鐨勬椂鍊?br>                 //榪欓噷榪樹嬌鐢ㄤ簡鍏抽敭瀛梕xplicit錛岀姝簡闅愬紡杞崲

        SharedPtr(const SharedPtr& r)
            : pRep(0), pUseCount(0)
        {
            OGRE_SET_AUTO_SHARED_MUTEX_NULL
            OGRE_MUTEX_CONDITIONAL(r.OGRE_AUTO_MUTEX_NAME)
            {
                OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
                OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
                pRep = r.pRep; //娉ㄦ剰涓嬩笌鍚庨潰鐨勪笉鍚?br>                pUseCount = r.pUseCount;
                // Handle zero pointer gracefully to manage STL containers
                if(pUseCount)
                {
                    ++(*pUseCount); 
                }
            }
        }

        SharedPtr& operator=(const SharedPtr& r) {
            if (pRep == r.pRep)
                return *this;
            SharedPtr<T> tmp(r);
            swap(tmp);
            return *this;
        }//榪欓噷鐨勫啓娉曟湁鐐規剰鎬濓紝鏈潵鍦╬Rep鎸囧悜r.pRep涔嬪墠瀵筽Rep鍋氫竴嬈elease錛?br>                 //浣嗘槸榪欓噷娌$湅鍒幫紝鍏跺疄鏄氳繃tmp榪欎釜灞閮ㄥ彉閲忕殑鑷姩瑙f瀽瀹炵幇鐨勩?br>        template< class Y>
        SharedPtr(const SharedPtr<Y>& r)
            : pRep(0), pUseCount(0)
        {
            OGRE_SET_AUTO_SHARED_MUTEX_NULL
            OGRE_MUTEX_CONDITIONAL(r.OGRE_AUTO_MUTEX_NAME)
            {
                OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
                OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
                pRep = r.getPointer(); //榪欓噷鐢ㄧ殑鏄嚱鏁幫紝鍜屼笂闈㈤偅涓殑鍖哄埆錛燂紵
                pUseCount = r.useCountPointer();
                // Handle zero pointer gracefully to manage STL containers
                if(pUseCount)
                {
                    ++(*pUseCount);
                }
            }
        }
        template< class Y>
        SharedPtr& operator=(const SharedPtr<Y>& r) {
            if (pRep == r.pRep)
                return *this;
            SharedPtr<T> tmp(r);
            swap(tmp);
            return *this;
        }
        virtual ~SharedPtr() {
            release();
        }
        inline T& operator*() const { assert(pRep); return *pRep; }
        inline T* operator->() const { assert(pRep); return pRep; }
                //鍦ㄧ敤鐨勬椂鍊欐鏌Rep鐨勫悎娉曟?br>        inline T* get() const { return pRep; }
        void bind(T* rep) {
            assert(!pRep && !pUseCount);
            OGRE_NEW_AUTO_SHARED_MUTEX
            OGRE_LOCK_AUTO_SHARED_MUTEX
            pUseCount = new unsigned int(1);
            pRep = rep;
        }
        inline bool unique() const { OGRE_LOCK_AUTO_SHARED_MUTEX assert(pUseCount); return *pUseCount == 1; }
        inline unsigned int useCount() const { OGRE_LOCK_AUTO_SHARED_MUTEX assert(pUseCount); return *pUseCount; }
        inline unsigned int* useCountPointer() const { return pUseCount; }
        inline T* getPointer() const { return pRep; }
        inline bool isNull(void) const { return pRep == 0; }
        inline void setNull(void) {
            if (pRep)
            {
                // can't scope lock mutex before release incase deleted
                release();
                pRep = 0;
                pUseCount = 0;
            }
        }

    protected:

        inline void release(void)
        {
            bool destroyThis = false;
            OGRE_MUTEX_CONDITIONAL(OGRE_AUTO_MUTEX_NAME)
            {
                OGRE_LOCK_AUTO_SHARED_MUTEX
                if (pUseCount)
                {
                    if (--(*pUseCount) == 0)
                    {
                        destroyThis = true;
                    }
                }
            }
            if (destroyThis)
                destroy();

            OGRE_SET_AUTO_SHARED_MUTEX_NULL
        }

        virtual void destroy(void)
        {
            delete pRep;
            delete pUseCount;
            OGRE_DELETE_AUTO_SHARED_MUTEX
        }

        virtual void swap(SharedPtr<T> &other)
        {
            std::swap(pRep, other.pRep);
            std::swap(pUseCount, other.pUseCount);
#if OGRE_THREAD_SUPPORT
            std::swap(OGRE_AUTO_MUTEX_NAME, other.OGRE_AUTO_MUTEX_NAME);
#endif
        }
    };

    template<class T, class U> inline bool operator==(SharedPtr<T> const& a, SharedPtr<U> const& b)
    {
        return a.get() == b.get();
    }

    template<class T, class U> inline bool operator!=(SharedPtr<T> const& a, SharedPtr<U> const& b)
    {
        return a.get() != b.get();
    }
}
#endif
鏈鍚庢湁娉ㄦ剰鍒幫細
    inline T* get() const { return pRep; }
    inline T* getPointer() const { return pRep; }
涓嶇煡閬撲負鍟ヨ榪欐牱錛屾湁涓涓笉灝辮浜嗕箞銆?br>鏇村鐨勭粏鑺傘佷嬌鐢ㄦ柟娉曟斁鍒頒笅嬈℃妸銆?br>

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久嫩草影院一区二区| 在线一区二区视频| 日韩午夜电影| 亚洲美女性视频| 日韩一区二区精品葵司在线| 亚洲片国产一区一级在线观看| 亚洲看片网站| 亚洲伊人色欲综合网| 欧美伊人久久| 欧美激情一区二区在线| 亚洲精品国产精品国自产观看| 亚洲精品日韩一| 亚洲欧美视频在线观看| 久久久91精品国产| 欧美激情欧美激情在线五月| 欧美人成在线| 国产日韩欧美视频| 亚洲激情女人| 香蕉久久夜色精品国产使用方法 | 另类欧美日韩国产在线| 免费美女久久99| 国产精品久久久久av免费| 狠狠色丁香婷婷综合久久片| 亚洲精品久久久久久久久| 亚洲一区二区三区四区中文| 狼人社综合社区| 中文国产成人精品久久一| 久久国产精品99国产| 欧美精品免费在线| 精久久久久久| 午夜天堂精品久久久久 | 午夜免费日韩视频| 欧美韩国在线| 先锋影音一区二区三区| 欧美国产亚洲精品久久久8v| 国产欧美日韩一区| 日韩午夜在线视频| 久久午夜电影网| 亚洲精品一二三| 久久免费视频一区| 国产农村妇女毛片精品久久麻豆 | 欧美激情网站在线观看| 免费人成网站在线观看欧美高清| 国产精品videosex极品| 国产日韩精品视频一区| 99精品视频免费观看视频| 久久五月天婷婷| 亚洲欧美中文日韩v在线观看| 欧美日韩视频一区二区| 国语自产精品视频在线看| 亚洲一区三区电影在线观看| 亚洲国产精品精华液网站| 久久九九久精品国产免费直播| 国产日韩欧美视频在线| 欧美一级网站| 亚洲一区二区三区高清不卡| 欧美日韩一区在线播放| 亚洲精品日韩久久| 亚洲国产精品电影| 免费亚洲一区二区| 亚洲电影免费在线| 女人天堂亚洲aⅴ在线观看| 欧美一区二区三区在线播放| 国产午夜精品久久久久久久| 亚欧成人精品| 羞羞答答国产精品www一本| 国产伦精品免费视频| 亚洲素人一区二区| 亚洲一区美女视频在线观看免费| 国产精品久久久久久亚洲毛片| 亚洲永久免费精品| 亚洲欧美激情视频| 韩日精品在线| 欧美国产视频在线观看| 免费欧美日韩| 在线一区日本视频| 亚洲一区免费观看| 一区二区三区中文在线观看| 欧美freesex交免费视频| 蜜桃av噜噜一区| 一区二区三区精品视频| 一本色道久久88综合日韩精品| 国产精品日韩在线| 久热爱精品视频线路一| 欧美gay视频| 亚洲午夜久久久久久久久电影院| 亚洲免费网站| 亚洲高清免费视频| 在线视频日韩精品| 国产视频一区二区三区在线观看| 久久久亚洲欧洲日产国码αv| 免费国产自线拍一欧美视频| 一区二区三区四区国产| 亚洲欧美日韩另类精品一区二区三区 | 亚洲成色999久久网站| 亚洲国产精品第一区二区三区| 国产精品v欧美精品∨日韩| 久久久久99| 欧美日韩四区| 久久夜色精品国产欧美乱极品| 蜜臀av性久久久久蜜臀aⅴ四虎| 怡红院精品视频| 最新中文字幕亚洲| 欧美一区二区三区日韩| 亚洲一区二区三区免费在线观看| 欧美日本韩国一区二区三区| 亚洲欧美激情四射在线日| 午夜一区二区三区在线观看| 伊人精品视频| 一区二区高清在线| 一区二区在线观看视频在线观看| 亚洲人成网站色ww在线| 国产美女一区二区| 亚洲激情午夜| 国产色综合天天综合网| 亚洲国产精品久久久久秋霞影院| 国产精品一卡| 日韩亚洲欧美一区| 亚洲国产精品第一区二区三区 | 亚洲免费在线视频| 亚洲国产毛片完整版 | 中文国产成人精品久久一| 久久久精品国产免费观看同学 | 亚洲第一区在线观看| 亚洲午夜在线视频| 99re6热在线精品视频播放速度 | aa日韩免费精品视频一| 亚洲国产欧美在线| 久久午夜国产精品| 久久人人97超碰人人澡爱香蕉| 欧美三级第一页| 亚洲精品久久久久久久久久久久| 亚洲国产mv| 久久久精品一区| 久久躁日日躁aaaaxxxx| 国产欧美91| 亚洲欧美另类中文字幕| 亚洲欧美日韩国产中文| 欧美视频在线观看一区| 亚洲精品乱码久久久久久黑人| 亚洲日本无吗高清不卡| 欧美大片在线看| 亚洲福利视频一区二区| 亚洲欧洲一区| 欧美黑人国产人伦爽爽爽| 亚洲国产成人porn| 日韩午夜三级在线| 欧美三日本三级少妇三2023| 一区二区三区视频在线播放| 亚洲一区二区三区精品在线观看| 欧美三级欧美一级| 亚洲男人的天堂在线| 久久精品视频在线播放| 在线日韩精品视频| 欧美激情综合色综合啪啪| 亚洲精品国产日韩| 午夜在线a亚洲v天堂网2018| 国产精品一区在线观看| 欧美一区二区三区免费视频| 国产麻豆日韩| 久久久综合视频| 亚洲福利国产| 亚洲欧美另类在线| 伊人久久久大香线蕉综合直播| 毛片基地黄久久久久久天堂| 亚洲精品乱码久久久久久蜜桃91 | 亚洲欧美日韩综合一区| 久久久久久亚洲精品中文字幕| 亚洲高清毛片| 国产精品久久久久9999| 久久久999| 亚洲乱码视频| 久久久久久久网站| 日韩天堂av| 国产欧美日韩在线播放| 狼人天天伊人久久| 国产精品99久久久久久白浆小说 | 亚洲欧美一区二区视频| 免费欧美在线| 亚洲欧美伊人| 亚洲国产专区| 国产精品视频一二| 久久综合色8888| 国产精品99久久不卡二区| 欧美99久久| 久久gogo国模裸体人体| 99re6热只有精品免费观看| 国产亚洲一区二区三区在线播放| 欧美成人免费视频| 欧美在线播放| 亚洲一区欧美激情| 亚洲精品美女在线观看| 麻豆成人综合网| 欧美一进一出视频| 亚洲一二区在线| 亚洲免费观看高清完整版在线观看| 国产日韩精品久久| 国产精品区一区二区三区| 欧美—级高清免费播放| 久久激情一区|