锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美手机在线,一区二区三区视频在线观看,欧美77777http://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>
            亚洲制服欧美中文字幕中文字幕| 夜夜嗨av一区二区三区免费区| 欧美一级理论性理论a| 国产精品久久久久久久久久免费| 一区二区久久久久| 中文亚洲欧美| 国产性做久久久久久| 久久久久久国产精品mv| 久久精品盗摄| 亚洲精品日韩欧美| 一区二区精品| 国外成人在线| 亚洲黄网站在线观看| 欧美日韩精品一区二区三区四区 | 久久成人一区| 亚洲国产精品热久久| 亚洲国产一区二区三区在线播 | 国产伦精品一区二区三区照片91 | 欧美一区二区三区婷婷月色| 国产在线视频欧美| 亚洲第一精品电影| 国产精品爱啪在线线免费观看| 欧美一区国产在线| 免费观看亚洲视频大全| 亚洲一区二区久久| 久久亚洲图片| 亚洲一区二区在| 久久婷婷国产综合尤物精品| 亚洲视频观看| 久久久久久久久一区二区| 99v久久综合狠狠综合久久| 亚洲欧美综合国产精品一区| 亚洲国产日韩一区二区| 亚洲一级黄色av| 亚洲国产一区二区三区高清| 亚洲一区二区三区激情| 亚洲激情黄色| 欧美一区二区播放| 亚洲午夜国产一区99re久久| 久久九九精品99国产精品| 一本色道久久综合狠狠躁的推荐| 香蕉久久夜色| 亚洲欧美激情一区| 麻豆成人91精品二区三区| 欧美一区二区三区免费大片| 欧美二区在线看| 久久婷婷蜜乳一本欲蜜臀| 国产精品白丝av嫩草影院| 欧美激情精品久久久久久久变态 | 欧美成人69av| 久热精品视频在线免费观看| 国产精品盗摄久久久| 亚洲激情国产| 最新国产成人av网站网址麻豆 | 亚洲一区二区免费看| 9色精品在线| 欧美a级片网| 免费国产自线拍一欧美视频| 国内自拍亚洲| 欧美一区日本一区韩国一区| 亚洲欧洲av一区二区| 欧美日韩午夜视频在线观看| 亚洲欧洲一区二区天堂久久| 91久久精品一区| 久久综合中文| 蜜桃av噜噜一区二区三区| 国产一区二区高清| 欧美在线观看视频一区二区三区| 午夜天堂精品久久久久| 国产精品黄页免费高清在线观看| 99热免费精品在线观看| 亚洲一区3d动漫同人无遮挡| 欧美日韩美女在线| 一本色道久久综合亚洲精品婷婷| 亚洲视频碰碰| 国产精品久久久久高潮| 亚洲视频香蕉人妖| 午夜在线一区| 国际精品欧美精品| 久久精品在线播放| 免费一级欧美片在线观看| 亚洲高清在线播放| 欧美国产日韩二区| 日韩一级在线观看| 午夜精品一区二区三区在线视| 国产精品乱码妇女bbbb| 欧美一级片一区| 欧美高清一区二区| 一本久久综合亚洲鲁鲁| 国产乱肥老妇国产一区二| 欧美在线视频免费| 亚洲福利电影| 午夜精品久久久久影视| 国内精品嫩模av私拍在线观看| 久久人人看视频| 99国产精品视频免费观看一公开| 欧美亚洲色图校园春色| 在线成人亚洲| 国产精品成人v| 久久精品午夜| 夜夜狂射影院欧美极品| 久久精品亚洲| 夜夜嗨av一区二区三区四季av | 欧美三级韩国三级日本三斤| 亚洲已满18点击进入久久| 久久久xxx| 亚洲国产天堂久久综合网| 欧美大片在线观看一区| 亚洲国产成人在线视频| 中国成人亚色综合网站| 国产精品视频最多的网站| 久久福利视频导航| 欧美激情第二页| 一本色道精品久久一区二区三区 | 一区二区三区欧美在线观看| 午夜精品久久久久99热蜜桃导演| 亚洲国产精品999| 欧美日韩中文字幕日韩欧美| 亚洲男女自偷自拍图片另类| 久久午夜色播影院免费高清| 亚洲精品久久在线| 国产精品日韩精品| 久久久亚洲午夜电影| 亚洲精品免费电影| 欧美一区影院| 狠色狠色综合久久| 欧美午夜宅男影院在线观看| 久久国产精品久久久久久久久久 | 欧美国产亚洲精品久久久8v| 亚洲天堂成人在线观看| 欧美freesex8一10精品| 亚洲影音一区| 亚洲国产一区视频| 国产九九精品视频| 欧美国产亚洲视频| 欧美专区福利在线| 亚洲先锋成人| 亚洲激情国产| 欧美成年人网站| 久久gogo国模啪啪人体图| 亚洲区在线播放| 好吊妞**欧美| 国产日韩欧美电影在线观看| 欧美精品一区三区| 玖玖视频精品| 欧美一进一出视频| 久久成人免费电影| 亚洲免费视频观看| 99视频在线精品国自产拍免费观看| 久久香蕉国产线看观看av| 亚洲欧美日韩一区二区三区在线观看 | 亚洲国产成人精品女人久久久| 黑人巨大精品欧美一区二区 | 亚洲五月婷婷| 一本色道**综合亚洲精品蜜桃冫| 蜜桃av一区二区| 久久免费高清视频| 久久国产主播| 老司机精品久久| 久久久久久国产精品mv| 久久成人人人人精品欧| 欧美伊人久久| 久久精品视频在线免费观看| 久久精品理论片| 久久激情五月激情| 久久精品国产亚洲一区二区三区| 亚洲欧美日韩国产综合精品二区| 中日韩美女免费视频网址在线观看 | 久久亚洲一区二区| 久久综合激情| 亚洲二区在线观看| 亚洲激情电影在线| 亚洲麻豆国产自偷在线| 亚洲永久免费av| 亚洲综合激情| 欧美在线视频观看| 久久亚洲春色中文字幕| 暖暖成人免费视频| 国产精品无人区| 国产资源精品在线观看| 在线观看视频一区二区| 亚洲丰满少妇videoshd| 狠狠入ady亚洲精品| 一区二区日本视频| 亚洲欧美日本国产有色| 久久精品国产亚洲a| 免费在线观看精品| 欧美激情精品| 欧美一区2区三区4区公司二百| 久久久久久9999| 欧美精品久久久久久久久久| 欧美午夜欧美| 国产日韩欧美自拍| aaa亚洲精品一二三区| 午夜久久美女| 欧美成人69av| 亚洲无人区一区| 欧美精彩视频一区二区三区| 国产精品视频区| 亚洲国产一区在线|