锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品资源,欧美性大战久久久久,99精品国产一区二区青青牛奶http://www.shnenglu.com/yy2008/archive/2008/11/13/66837.html絀哄績鑿?/dc:creator>絀哄績鑿?/author>Thu, 13 Nov 2008 09:37:00 GMThttp://www.shnenglu.com/yy2008/archive/2008/11/13/66837.htmlhttp://www.shnenglu.com/yy2008/comments/66837.htmlhttp://www.shnenglu.com/yy2008/archive/2008/11/13/66837.html#Feedback3http://www.shnenglu.com/yy2008/comments/commentRss/66837.htmlhttp://www.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久久精品色噜噜导演| 在线日韩欧美| 亚洲国产精品一区二区第一页| 欧美a级片一区| 中日韩高清电影网| 性欧美暴力猛交69hd| 18成人免费观看视频| 亚洲激情校园春色| 国产精品日韩欧美一区| 久久一区中文字幕| 欧美国产在线电影| 亚洲欧美日韩精品在线| 欧美在线黄色| 一本色道精品久久一区二区三区 | 亚洲黄色一区| 亚洲国产成人porn| 国产精品无人区| 欧美激情精品久久久久久变态| 欧美日韩精品免费| 久久免费少妇高潮久久精品99| 女女同性精品视频| 欧美在线观看www| 欧美二区不卡| 久久精品男女| 欧美日韩在线三区| 国产精品久久久久久超碰| 久久精品最新地址| 欧美三级视频| 欧美激情视频在线播放 | 欧美精品在线看| 欧美一区二区啪啪| 欧美日韩的一区二区| 久久亚洲春色中文字幕久久久| 欧美日韩视频在线| 蜜臀a∨国产成人精品| 国产精品毛片a∨一区二区三区|国| 蜜桃视频一区| 国产午夜精品理论片a级探花| 亚洲欧洲日本国产| 亚洲春色另类小说| 欧美一级视频一区二区| 亚洲婷婷国产精品电影人久久 | 亚洲精品美女久久7777777| 国产日韩欧美在线| 在线视频精品一区| 99精品视频免费| 美女被久久久| 久久资源在线| 韩日午夜在线资源一区二区| 在线视频中文亚洲| 亚洲午夜久久久久久尤物| 老司机凹凸av亚洲导航| 免费91麻豆精品国产自产在线观看| 国产精品区一区| 一区二区三区高清在线| 亚洲最新视频在线| 欧美日韩国产区| 亚洲日本激情| 艳女tv在线观看国产一区| 欧美成va人片在线观看| 亚洲高清在线观看| 亚洲日韩欧美视频| 欧美精品福利| 亚洲乱码久久| 亚洲一区欧美| 国产欧美日韩一区二区三区在线| 亚洲色图综合久久| 欧美在线看片| 狠狠色香婷婷久久亚洲精品| 久久精品一区中文字幕| 欧美α欧美αv大片| 日韩视频三区| 欧美视频一区二区在线观看| 亚洲一区二区三区四区在线观看| 欧美一区国产一区| 精久久久久久| 欧美顶级少妇做爰| 这里只有精品视频在线| 亚洲欧洲av一区二区三区久久| 国产老女人精品毛片久久| 久久av资源网| 亚洲国产高清一区二区三区| 亚洲视频在线观看免费| 国产精品日韩精品| 久久久久在线观看| 亚洲精品免费在线播放| 欧美一区精品| 在线看片第一页欧美| 欧美剧在线观看| 欧美亚洲尤物久久| 免费永久网站黄欧美| 中国女人久久久| 国产一区深夜福利| 欧美日产一区二区三区在线观看 | 亚洲国产成人av| 亚洲一区精品视频| 一色屋精品视频免费看| 欧美日韩亚洲综合一区| 欧美在线视频免费播放| 亚洲精品网站在线播放gif| 欧美在线视频一区| 亚洲久久视频| 国产一区二区三区在线观看精品| 欧美福利影院| 久久精品天堂| 亚洲视频成人| 亚洲经典在线看| 久久久国产午夜精品| 日韩网站在线观看| 精品不卡视频| 国产日韩综合| 欧美午夜一区二区福利视频| 免费成人你懂的| 亚洲欧美一区二区精品久久久| 亚洲国产清纯| 欧美波霸影院| 久久久久久亚洲综合影院红桃| 亚洲一区二区在线免费观看| 91久久夜色精品国产网站| 国产伦精品一区二区三区| 欧美日韩在线播放一区| 欧美福利影院| 欧美不卡在线| 蜜臀久久99精品久久久画质超高清| 午夜视频一区二区| 亚洲在线一区二区| 一区二区三区精品视频在线观看 | 亚洲男人影院| 亚洲视频欧美视频| 一本色道久久综合亚洲二区三区| 最新中文字幕亚洲| 亚洲黄色天堂| 亚洲日本久久| 亚洲精品国产拍免费91在线| 亚洲第一网站| 亚洲国产日韩精品| 亚洲电影免费观看高清| 精品福利av| 亚洲国产欧美一区| 亚洲国产免费| 亚洲裸体视频| 亚洲深夜福利网站| 亚洲天堂成人在线观看| 亚洲一区三区在线观看| 亚洲男人的天堂在线| 午夜性色一区二区三区免费视频| 亚洲欧美日韩视频一区| 亚洲欧美激情在线视频| 欧美一级在线亚洲天堂| 欧美在线免费视屏| 久久这里只有精品视频首页| 欧美freesex交免费视频| 欧美高清在线一区| 亚洲精品中文字幕在线| 在线视频一区观看| 午夜精品国产精品大乳美女| 久久av一区二区三区漫画| 久久天天躁夜夜躁狠狠躁2022| 蜜桃精品久久久久久久免费影院| 你懂的亚洲视频| 欧美视频不卡中文| 国产亚洲欧洲| 亚洲精品日韩在线| 亚洲欧美卡通另类91av| 久久日韩粉嫩一区二区三区 | 在线视频精品一| 欧美主播一区二区三区美女 久久精品人 | 一区在线播放视频| 亚洲精品一二三| 亚洲欧美资源在线| 麻豆精品传媒视频| 99在线精品观看| 久久精品国产一区二区电影 | 欧美日本久久| 国产一区二区高清不卡| 亚洲精品久久久久久久久久久久久 | 国产精品视频不卡| 亚洲第一网站免费视频| 亚洲欧美国产77777| 欧美暴力喷水在线| 亚洲综合欧美| 欧美啪啪成人vr| 极品少妇一区二区三区| 亚洲一区二区三区在线看| 欧美成黄导航| 午夜精品免费在线| 欧美人妖另类| 在线精品国产成人综合| 欧美亚洲在线视频| 亚洲人久久久| 老司机午夜精品视频| 国产午夜精品全部视频在线播放| 一区二区不卡在线视频 午夜欧美不卡'| 久久久久久午夜| 亚洲女同精品视频| 欧美日一区二区在线观看|