亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stl_rope.h

?? STL 最新源代碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
// Substring results are usually represented using just// concatenation nodes.  But in the case of very long flat ropes// or ropes with a functional representation that isn't practical.// In that case, we represent the __result as a special case of// RopeFunction, whose char_producer points back to the rope itself.// In all cases except repeated substring operations and// deallocation, we treat the __result as a RopeFunction.template<class _CharT, class _Alloc>struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,                             public char_producer<_CharT> {  public:    // XXX this whole class should be rewritten.    _Rope_RopeRep<_CharT,_Alloc>* _M_base;      // not 0    size_t _M_start;    virtual void operator()(size_t __start_pos, size_t __req_len,                            _CharT* __buffer) {        switch(_M_base->_M_tag) {            case _S_function:            case _S_substringfn:              {                char_producer<_CharT>* __fn =                        ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;                __stl_assert(__start_pos + __req_len <= _M_size);                __stl_assert(_M_start + _M_size <= _M_base->_M_size);                (*__fn)(__start_pos + _M_start, __req_len, __buffer);              }              break;            case _S_leaf:              {                __GC_CONST _CharT* __s =                        ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;                uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,                                     __buffer);              }              break;            default:              __stl_assert(false);        }    }    typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type        allocator_type;    _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,                          size_t __l, allocator_type __a)      : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a),        char_producer<_CharT>(),        _M_base(__b),        _M_start(__s)    {        __stl_assert(__l > 0);        __stl_assert(__s + __l <= __b->_M_size);#       ifndef __GC            _M_base->_M_ref_nonnil();#       endif        _M_tag = _S_substringfn;    }    virtual ~_Rope_RopeSubstring()      { #       ifndef __GC          _M_base->_M_unref_nonnil();          // _M_free_c_string();  -- done by parent class#       endif      }};// Self-destructing pointers to Rope_rep.// These are not conventional smart pointers.  Their// only purpose in life is to ensure that unref is called// on the pointer either at normal exit or if an exception// is raised.  It is the caller's responsibility to// adjust reference counts when these pointers are initialized// or assigned to.  (This convention significantly reduces// the number of potentially expensive reference count// updates.)#ifndef __GC  template<class _CharT, class _Alloc>  struct _Rope_self_destruct_ptr {    _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;    ~_Rope_self_destruct_ptr()       { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }#   ifdef __STL_USE_EXCEPTIONS        _Rope_self_destruct_ptr() : _M_ptr(0) {};#   else        _Rope_self_destruct_ptr() {};#   endif    _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}    _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }    _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }    operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }    _Rope_self_destruct_ptr& operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)        { _M_ptr = __x; return *this; }  };#endif// Dereferencing a nonconst iterator has to return something// that behaves almost like a reference.  It's not possible to// return an actual reference since assignment requires extra// work.  And we would get into the same problems as with the// CD2 version of basic_string.template<class _CharT, class _Alloc>class _Rope_char_ref_proxy {    friend class rope<_CharT,_Alloc>;    friend class _Rope_iterator<_CharT,_Alloc>;    friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;#   ifdef __GC        typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;#   else        typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;#   endif    typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;    typedef rope<_CharT,_Alloc> _My_rope;    size_t _M_pos;    _CharT _M_current;    bool _M_current_valid;    _My_rope* _M_root;     // The whole rope.  public:    _Rope_char_ref_proxy(_My_rope* __r, size_t __p)      :  _M_pos(__p), _M_current_valid(false), _M_root(__r) {}    _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x)      : _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}        // Don't preserve cache if the reference can outlive the        // expression.  We claim that's not possible without calling        // a copy constructor or generating reference to a proxy        // reference.  We declare the latter to have undefined semantics.    _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)      : _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}    inline operator _CharT () const;    _Rope_char_ref_proxy& operator= (_CharT __c);    _Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;    _Rope_char_ref_proxy& operator= (const _Rope_char_ref_proxy& __c) {        return operator=((_CharT)__c);     }};#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER    template<class _CharT, class __Alloc>    inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,                     _Rope_char_ref_proxy <_CharT, __Alloc > __b) {        _CharT __tmp = __a;        __a = __b;        __b = __tmp;    }#else// There is no really acceptable way to handle this.  The default// definition of swap doesn't work for proxy references.// It can't really be made to work, even with ugly hacks, since// the only unusual operation it uses is the copy constructor, which// is needed for other purposes.  We provide a macro for// full specializations, and instantiate the most common case.# define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \    inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \                     _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \        _CharT __tmp = __a; \        __a = __b; \        __b = __tmp; \    }_ROPE_SWAP_SPECIALIZATION(char,__STL_DEFAULT_ALLOCATOR(char))#endif /* !__STL_FUNCTION_TMPL_PARTIAL_ORDER */template<class _CharT, class _Alloc>class _Rope_char_ptr_proxy {    // XXX this class should be rewritten.    friend class _Rope_char_ref_proxy<_CharT,_Alloc>;    size_t _M_pos;    rope<_CharT,_Alloc>* _M_root;     // The whole rope.  public:    _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)       : _M_pos(__x._M_pos), _M_root(__x._M_root) {}    _Rope_char_ptr_proxy(const _Rope_char_ptr_proxy& __x)      : _M_pos(__x._M_pos), _M_root(__x._M_root) {}    _Rope_char_ptr_proxy() {}    _Rope_char_ptr_proxy(_CharT* __x) : _M_root(0), _M_pos(0) {        __stl_assert(0 == __x);    }    _Rope_char_ptr_proxy&     operator= (const _Rope_char_ptr_proxy& __x) {        _M_pos = __x._M_pos;        _M_root = __x._M_root;        return *this;    }#ifdef __STL_MEMBER_TEMPLATES    template<class _CharT2, class _Alloc2>    friend bool operator== (const _Rope_char_ptr_proxy<_CharT2,_Alloc2>& __x,                            const _Rope_char_ptr_proxy<_CharT2,_Alloc2>& __y);#else    friend bool operator==  __STL_NULL_TMPL_ARGS                (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,                 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y);#endif    _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {        return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);    }};// Rope iterators:// Unlike in the C version, we cache only part of the stack// for rope iterators, since they must be efficiently copyable.// When we run out of cache, we have to reconstruct the iterator// value.// Pointers from iterators are not included in reference counts.// Iterators are assumed to be thread private.  Ropes can// be shared.#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)#pragma set woff 1375#endiftemplate<class _CharT, class _Alloc>class _Rope_iterator_base  : public random_access_iterator<_CharT, ptrdiff_t> {    friend class rope<_CharT,_Alloc>;  public:    typedef _Alloc _allocator_type; // used in _Rope_rotate, VC++ workaround    typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;        // Borland doesnt want this to be protected.  protected:    enum { _S_path_cache_len = 4 }; // Must be <= 9.    enum { _S_iterator_buf_len = 15 };    size_t _M_current_pos;    _RopeRep* _M_root;     // The whole rope.    size_t _M_leaf_pos;    // Starting position for current leaf    __GC_CONST _CharT* _M_buf_start;                        // Buffer possibly                        // containing current char.    __GC_CONST _CharT* _M_buf_ptr;                        // Pointer to current char in buffer.                        // != 0 ==> buffer valid.    __GC_CONST _CharT* _M_buf_end;                        // One past __last valid char in buffer.    // What follows is the path cache.  We go out of our    // way to make this compact.    // Path_end contains the bottom section of the path from    // the root to the current leaf.    const _RopeRep* _M_path_end[_S_path_cache_len];    int _M_leaf_index;     // Last valid __pos in path_end;                        // _M_path_end[0] ... _M_path_end[leaf_index-1]                        // point to concatenation nodes.    unsigned char _M_path_directions;                          // (path_directions >> __i) & 1 is 1                          // iff we got from _M_path_end[leaf_index - __i - 1]                          // to _M_path_end[leaf_index - __i] by going to the                          // __right. Assumes path_cache_len <= 9.    _CharT _M_tmp_buf[_S_iterator_buf_len];                        // Short buffer for surrounding chars.                        // This is useful primarily for                         // RopeFunctions.  We put the buffer                        // here to avoid locking in the                        // multithreaded case.    // The cached path is generally assumed to be valid    // only if the buffer is valid.    static void _S_setbuf(_Rope_iterator_base& __x);                                        // Set buffer contents given                                        // path cache.    static void _S_setcache(_Rope_iterator_base& __x);                                        // Set buffer contents and                                        // path cache.    static void _S_setcache_for_incr(_Rope_iterator_base& __x);                                        // As above, but assumes path                                        // cache is valid for previous posn.    _Rope_iterator_base() {}    _Rope_iterator_base(_RopeRep* __root, size_t __pos)      : _M_current_pos(__pos), _M_root(__root), _M_buf_ptr(0) {}    void _M_incr(size_t __n);    void _M_decr(size_t __n);  public:    size_t index() const { return _M_current_pos; }    _Rope_iterator_base(const _Rope_iterator_base& __x) {        if (0 != __x._M_buf_ptr) {            *this = __x;        } else {            _M_current_pos = __x._M_current_pos;            _M_root = __x._M_root;            _M_buf_ptr = 0;        }    }};template<class _CharT, class _Alloc> class _Rope_iterator;template<class _CharT, class _Alloc>class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {    friend class rope<_CharT,_Alloc>;  protected:#   ifdef __STL_HAS_NAMESPACES      typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;      // The one from the base class may not be directly visible.#   endif    _Rope_const_iterator(const _RopeRep* __root, size_t __pos):                   _Rope_iterator_base<_CharT,_Alloc>(                     const_cast<_RopeRep*>(__root), __pos)                   // Only nonconst iterators modify root ref count    {}  public:    typedef _CharT reference;   // Really a value.  Returning a reference                                // Would be a mess, since it would have                                // to be included in refcount.    typedef const _CharT* pointer;  public:    _Rope_const_iterator() {};    _Rope_const_iterator(const _Rope_const_iterator& __x) :                                _Rope_iterator_base<_CharT,_Alloc>(__x) { }    _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);    _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :        _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) {}    _Rope_const_iterator& operator= (const _Rope_const_iterator& __x) {        if (0 != __x._M_buf_ptr) {            *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;        } else {            _M_current_pos = __x._M_current_pos;            _M_root = __x._M_root;            _M_buf_ptr = 0;        }        return(*this);    }    reference operator*() {        if (0 == _M_buf_ptr) _S_setcache(*this);        return *_M_buf_ptr;    }    _Rope_const_iterator& operator++() {        __GC_CONST _CharT* __next;        if (0 != _M_buf_ptr && (__next = _M_buf_ptr + 1) < _M_buf_end) {            _M_buf_ptr = __next;            ++_M_current_pos;        } else {            _M_incr(1);        }        return *this;    }    _Rope_const_iterator& operator+=(ptrdiff_t __n) {        if (__n >= 0) {            _M_incr(__n);        } else {            _M_decr(-__n);        }        return *this;    }    _Rope_const_iterator& operator--() {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷色综合| 国产日本欧洲亚洲| 国产成人精品一区二区三区四区| 国产精品私人自拍| 8x8x8国产精品| 99精品视频一区二区| 视频在线在亚洲| 中文字幕一区二区三区四区 | 亚洲国产精品影院| 亚洲国产精品传媒在线观看| 欧美人xxxx| 成人免费看片app下载| 麻豆成人久久精品二区三区红| 自拍偷拍国产精品| 国产日韩欧美一区二区三区综合| 欧美精选一区二区| 色天使色偷偷av一区二区| 国产999精品久久久久久绿帽| 视频一区二区三区入口| 国产精品麻豆久久久| 久久综合久色欧美综合狠狠| 欧美精品xxxxbbbb| 欧美在线观看禁18| 色欧美日韩亚洲| 色综合中文字幕| 97久久精品人人爽人人爽蜜臀| 国产露脸91国语对白| 美女网站色91| 免费久久精品视频| 天堂一区二区在线免费观看| 一区二区三区国产精品| 亚洲欧美另类久久久精品 | 久久一区二区三区四区| 日韩天堂在线观看| 日韩午夜精品电影| 日韩欧美亚洲国产另类| 日韩一区二区在线看| 欧美一区二区在线免费观看| 欧美日韩国产美女| 欧美男女性生活在线直播观看| 色婷婷综合中文久久一本| 91在线丨porny丨国产| 不卡的电影网站| 91在线云播放| 欧美午夜精品一区| 欧美视频自拍偷拍| 欧美丝袜丝交足nylons图片| 91福利在线导航| 欧美日韩日本视频| 91精品免费在线观看| 欧美日韩国产首页| 日韩精品一区二区三区中文精品 | 久久久久久久久久久黄色| 国产香蕉久久精品综合网| 久久人人超碰精品| 国产精品素人一区二区| 亚洲欧美日韩国产手机在线 | 久久亚洲私人国产精品va媚药| 欧美v日韩v国产v| 国产日韩精品一区| 亚洲同性同志一二三专区| 亚洲欧美日韩成人高清在线一区| 亚洲激情图片一区| 日日夜夜精品视频天天综合网| 日韩专区在线视频| 国产毛片精品国产一区二区三区| 国产成人av电影在线| 91视频你懂的| 欧美欧美欧美欧美| 国产清纯白嫩初高生在线观看91 | 91精品国产综合久久精品图片| 欧美xxxxxxxxx| 综合色天天鬼久久鬼色| 亚洲国产wwwccc36天堂| 久久精工是国产品牌吗| 成人动漫av在线| 欧美日本国产视频| 国产午夜精品久久久久久免费视 | 欧美一区午夜精品| 国产精品女上位| 五月天亚洲精品| 国产精品一卡二| 欧美性色aⅴ视频一区日韩精品| 91麻豆精品91久久久久久清纯 | 日日摸夜夜添夜夜添精品视频 | 亚洲国产成人av| 国产精品综合久久| 欧美亚男人的天堂| 久久久噜噜噜久久人人看 | 在线观看亚洲成人| 久久青草国产手机看片福利盒子| 亚洲天堂2016| 国产专区综合网| 欧美视频一二三区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲国产欧美另类丝袜| 国产不卡在线播放| 欧美一卡二卡三卡| 一区二区三区蜜桃网| 国内精品久久久久影院一蜜桃| 91黄视频在线| 国产日本一区二区| 久久99国产精品久久99 | 欧美精品99久久久**| 国产精品久久网站| 国产一区二区三区四区五区美女| 欧美性猛交一区二区三区精品| 久久久777精品电影网影网| 亚洲超碰精品一区二区| 99精品欧美一区二区蜜桃免费| 欧美电影免费观看高清完整版在线观看| 中文字幕不卡的av| 国产一区二区在线影院| 777欧美精品| 亚洲福利视频三区| 99re热视频这里只精品 | 日本成人中文字幕| 在线观看日韩电影| ...xxx性欧美| 成人免费毛片嘿嘿连载视频| 日韩精品一区二区在线| 日韩av一区二区三区四区| 91久久精品国产91性色tv| 亚洲婷婷国产精品电影人久久| 国产激情91久久精品导航| 欧美成人三级在线| 卡一卡二国产精品| 日韩一区二区三区在线视频| 首页欧美精品中文字幕| 欧美老肥妇做.爰bbww| 亚洲国产一二三| 欧美日韩一区成人| 亚洲欧美日本韩国| 在线观看一区二区视频| 亚洲一区二区美女| 欧美理论在线播放| 日本不卡中文字幕| 日韩一卡二卡三卡四卡| 另类的小说在线视频另类成人小视频在线 | 欧美性色综合网| 亚洲国产精品一区二区久久恐怖片 | 亚洲精品欧美激情| 在线亚洲一区观看| 亚洲午夜激情网页| 欧美日韩国产高清一区二区三区| 亚洲国产综合人成综合网站| 精品视频一区三区九区| 日日摸夜夜添夜夜添精品视频| 91精品一区二区三区在线观看| 日本欧美在线看| 精品人在线二区三区| 韩国理伦片一区二区三区在线播放| 欧美成人伊人久久综合网| 美女脱光内衣内裤视频久久影院| 日韩精品影音先锋| 粉嫩aⅴ一区二区三区四区 | 乱中年女人伦av一区二区| 日韩一区二区在线看| 国产精品一色哟哟哟| 国产精品国产三级国产普通话三级| 本田岬高潮一区二区三区| 亚洲欧美视频一区| 51精品久久久久久久蜜臀| 国内精品国产成人| 亚洲欧洲三级电影| 欧美日韩一级二级| 久久精品国产亚洲5555| 欧美极品xxx| 91电影在线观看| 精品写真视频在线观看| 中文字幕亚洲成人| 69堂国产成人免费视频| 国产在线精品一区二区夜色 | 成人免费不卡视频| 亚洲无线码一区二区三区| 欧美大片在线观看一区| 成人精品电影在线观看| 午夜视频在线观看一区二区 | 精品国产91洋老外米糕| 97精品国产97久久久久久久久久久久 | 成人av综合在线| 亚洲第一主播视频| 国产欧美日韩精品在线| 欧美色偷偷大香| 国产原创一区二区| 亚洲午夜在线视频| 国产欧美一区二区精品仙草咪 | 欧洲一区二区三区在线| 国产一区欧美一区| 午夜精品久久久久久久久久| 欧美国产日韩一二三区| 欧美一区二区黄色| 91色porny| 国产一区91精品张津瑜| 亚洲国产成人91porn| 亚洲欧洲无码一区二区三区| 久久综合九色综合欧美亚洲| 欧美视频完全免费看| av不卡免费电影| 国产精品中文有码|