锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久夜夜夜,狂野欧美激情性xxxx,久久国产视频网站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>
            久久久久一本一区二区青青蜜月| 亚洲第一页中文字幕| 中文国产一区| 久久一区二区三区国产精品| 久久福利电影| 久久精品视频99| 亚洲午夜视频在线观看| 国产视频一区在线观看一区免费 | 欧美专区亚洲专区| 亚洲精品在线二区| 亚洲激情电影在线| 久久综合色播五月| 美国三级日本三级久久99| 久久精品亚洲一区二区| 久久久久久综合| 欧美国内亚洲| 亚洲一区二区三区视频播放| 亚洲精品日本| 亚洲欧美精品suv| 欧美一区日本一区韩国一区| 午夜在线a亚洲v天堂网2018| 亚洲欧美成人网| 久久中文在线| 欧美日韩免费高清| 国产主播一区二区| 亚洲欧美一区二区激情| 欧美一区二区在线| 欧美日韩一区在线观看视频| 国产精品vip| 久久伊人免费视频| 亚洲激情在线观看| 久久久精品国产免大香伊| 欧美成人精品在线观看| 亚洲先锋成人| 在线视频你懂得一区二区三区| 久久综合给合| 久久亚洲私人国产精品va| 亚洲国产成人精品视频| 黄色亚洲在线| 欧美午夜免费影院| 亚洲一区二区视频在线| 亚洲午夜一二三区视频| 久久久久国产精品麻豆ai换脸| 亚洲电影免费观看高清完整版在线 | 狠狠色综合色区| 亚洲资源在线观看| 欧美电影免费观看高清| 久久精品成人| 激情懂色av一区av二区av| 国产视频亚洲| 一区二区三区国产精品| 久久免费99精品久久久久久| 亚洲三级网站| 欧美搞黄网站| 国产毛片精品国产一区二区三区| 欧美/亚洲一区| 久久婷婷人人澡人人喊人人爽| 欧美多人爱爱视频网站| 亚洲视频综合| 亚洲欧美综合一区| 亚洲免费一在线| 欧美日韩在线播放一区| 亚洲欧美综合v| 欧美激情亚洲综合一区| 久久久久免费观看| 1769国内精品视频在线播放| 久久久久欧美精品| 亚洲视频欧洲视频| 欧美性片在线观看| 久久久99精品免费观看不卡| 女女同性精品视频| 亚洲一区二区三区视频播放| 亚洲精品在线观| 一区二区三区中文在线观看| 亚洲私人影院| 亚洲国产精品久久| 亚洲欧美国产日韩天堂区| 影音先锋亚洲精品| 亚洲精品视频中文字幕| 在线观看国产日韩| 欧美一区二区三区四区夜夜大片| 亚洲卡通欧美制服中文| 久久精品网址| 一本久久知道综合久久| 久久在线视频在线| 亚洲国产另类精品专区| 国产欧美日韩另类视频免费观看| 亚洲激情电影在线| 正在播放欧美视频| 欧美三区免费完整视频在线观看| 亚洲国产精品久久久| 国内精品久久久久影院 日本资源| 免费欧美在线| 精品99一区二区三区| 久久尤物视频| 亚洲高清久久网| 亚洲高清视频中文字幕| 久久久久久久999| 女同一区二区| 一本色道精品久久一区二区三区| 欧美日韩一区二区三区四区五区| 亚洲午夜一区| 亚洲国产福利在线| 亚洲在线播放| 亚洲综合色视频| 亚洲男人的天堂在线aⅴ视频| 欧美日韩国产一区二区三区地区| 亚洲国产精品第一区二区| 99国产精品久久久久久久久久| 欧美视频一区二区三区…| 午夜久久tv| 亚洲伦理自拍| 亚洲国内自拍| 国内久久精品视频| 欧美色图麻豆| 欧美激情一区二区久久久| 欧美一区二区三区另类| 一区二区三区精品| 欧美黄色影院| 嫩模写真一区二区三区三州| 欧美在线免费播放| 香港久久久电影| 亚洲综合清纯丝袜自拍| 亚洲一区二区三区四区视频| 一区二区精品| 欧美一级夜夜爽| 欧美在线观看视频一区二区| 欧美尤物巨大精品爽| 久久精品在线| 亚洲高清自拍| 一区二区欧美亚洲| 欧美一区二区三区男人的天堂| 亚洲伊人第一页| 香蕉亚洲视频| 欧美jizzhd精品欧美喷水| 亚洲深夜福利| 亚洲欧美日韩国产精品| 国产精品网站一区| 亚洲一区综合| 亚洲欧美日韩成人高清在线一区| 国产日产精品一区二区三区四区的观看方式 | 亚洲欧洲精品一区| 国产精品乱人伦中文| 麻豆成人av| 国产精品第2页| 可以看av的网站久久看| 久久精品国产69国产精品亚洲| 91久久精品国产91久久性色tv| 欧美1区3d| 欧美中文在线字幕| 欧美黄色成人网| 国产主播一区二区三区| 亚洲视频一区二区| 久久精品亚洲| 嫩草成人www欧美| 99在线精品视频在线观看| 久久久久久综合网天天| 亚洲国产精品视频一区| 日韩亚洲欧美中文三级| 欧美亚洲在线| 亚洲一区二区免费在线| 国产欧美日韩另类一区 | 午夜精品久久久久| 亚洲精品一区二区三| 欧美色网在线| 亚洲一区二区精品在线| 亚洲手机成人高清视频| 国产精品试看| 欧美岛国在线观看| 欧美一区二区视频网站| 国产精品亚洲成人| 欧美一区二区三区免费视频| 亚洲国产mv| 噜噜爱69成人精品| 亚洲人久久久| 国产精品久久久一区二区三区| 亚洲欧洲一级| 久久国产精品久久w女人spa| 久久久久一区| 亚洲午夜极品| 欧美日韩中文字幕| 亚洲美女黄网| 亚洲欧美日韩综合| 亚洲国产精品悠悠久久琪琪| 亚洲一区二区av电影| 亚洲久久一区| 国内精品免费在线观看| 亚洲欧洲精品一区| 久久婷婷av| 一本大道久久精品懂色aⅴ| 亚洲视频专区在线| 亚洲激情六月丁香| 日韩亚洲一区在线播放| 欧美日韩成人激情| 嫩草影视亚洲| 黄色精品一二区| 亚洲国产婷婷香蕉久久久久久99 | 美女国产精品| 亚洲欧美精品在线观看| 欧美日本乱大交xxxxx|