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

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

?? ropeimpl.h

?? The Standard Template Library, or STL, is a C++ library of container classes, algorithms, and iterat
?? H
?? 第 1 頁 / 共 4 頁
字號:
/* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation.  Silicon Graphics makes no * representations about the suitability of this software for any * purpose.  It is provided "as is" without express or implied warranty. *//* NOTE: This is an internal header file, included by other STL headers. *   You should not attempt to use it directly. */# include <stdio.h>     #ifdef __STL_USE_NEW_IOSTREAMS # include <iostream>#else /* __STL_USE_NEW_IOSTREAMS */# include <iostream.h>#endif /* __STL_USE_NEW_IOSTREAMS */#ifdef __STL_USE_EXCEPTIONS# include <stdexcept>#endif__STL_BEGIN_NAMESPACE#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)#pragma set woff 1174#endif// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf// if necessary.  Assumes _M_path_end[leaf_index] and leaf_pos are correct.// Results in a valid buf_ptr if the iterator can be legitimately// dereferenced.template <class _CharT, class _Alloc>void _Rope_iterator_base<_CharT,_Alloc>::_S_setbuf(   _Rope_iterator_base<_CharT,_Alloc>& __x){    const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];    size_t __leaf_pos = __x._M_leaf_pos;    size_t __pos = __x._M_current_pos;    switch(__leaf->_M_tag) {	case _RopeRep::_S_leaf:	    __x._M_buf_start = 	      ((_Rope_RopeLeaf<_CharT,_Alloc>*)__leaf)->_M_data;	    __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);	    __x._M_buf_end = __x._M_buf_start + __leaf->_M_size;	    break;	case _RopeRep::_S_function:	case _RopeRep::_S_substringfn:	    {		size_t __len = _S_iterator_buf_len;		size_t __buf_start_pos = __leaf_pos;		size_t __leaf_end = __leaf_pos + __leaf->_M_size;		char_producer<_CharT>* __fn =			((_Rope_RopeFunction<_CharT,_Alloc>*)__leaf)->_M_fn;		if (__buf_start_pos + __len <= __pos) {		    __buf_start_pos = __pos - __len/4;		    if (__buf_start_pos + __len > __leaf_end) {			__buf_start_pos = __leaf_end - __len;		    }		}		if (__buf_start_pos + __len > __leaf_end) {		    __len = __leaf_end - __buf_start_pos;		}		(*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);		__x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);		__x._M_buf_start = __x._M_tmp_buf;		__x._M_buf_end = __x._M_tmp_buf + __len;	    }	    break;	default:	    __stl_assert(0);    }}// Set path and buffer inside a rope iterator.  We assume that // pos and root are already set.template <class _CharT, class _Alloc>void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache(_Rope_iterator_base<_CharT,_Alloc>& __x){    const _RopeRep* __path[_RopeRep::_S_max_rope_depth+1];    const _RopeRep* __curr_rope;    int __curr_depth = -1;  /* index into path    */    size_t __curr_start_pos = 0;    size_t __pos = __x._M_current_pos;    unsigned char __dirns = 0; // Bit vector marking right turns in the path    __stl_assert(__pos <= __x._M_root->_M_size);    if (__pos >= __x._M_root->_M_size) {	__x._M_buf_ptr = 0;	return;    }    __curr_rope = __x._M_root;    if (0 != __curr_rope->_M_c_string) {	/* Treat the root as a leaf. */	__x._M_buf_start = __curr_rope->_M_c_string;	__x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size;	__x._M_buf_ptr = __curr_rope->_M_c_string + __pos;	__x._M_path_end[0] = __curr_rope;	__x._M_leaf_index = 0;	__x._M_leaf_pos = 0;	return;    }    for(;;) {	++__curr_depth;	__stl_assert(__curr_depth <= _RopeRep::_S_max_rope_depth);	__path[__curr_depth] = __curr_rope;	switch(__curr_rope->_M_tag) {	  case _RopeRep::_S_leaf:	  case _RopeRep::_S_function:	  case _RopeRep::_S_substringfn:	    __x._M_leaf_pos = __curr_start_pos;	    goto done;	  case _RopeRep::_S_concat:	    {		_Rope_RopeConcatenation<_CharT,_Alloc>* __c =			(_Rope_RopeConcatenation<_CharT,_Alloc>*)__curr_rope;		_RopeRep* __left = __c->_M_left;		size_t __left_len = __left->_M_size;				__dirns <<= 1;		if (__pos >= __curr_start_pos + __left_len) {		    __dirns |= 1;		    __curr_rope = __c->_M_right;		    __curr_start_pos += __left_len;		} else {		    __curr_rope = __left;		}	    }	    break;	}    }  done:    // Copy last section of path into _M_path_end.      {	int __i = -1;	int __j = __curr_depth + 1 - _S_path_cache_len;	if (__j < 0) __j = 0;	while (__j <= __curr_depth) {	    __x._M_path_end[++__i] = __path[__j++];	}	__x._M_leaf_index = __i;      }      __x._M_path_directions = __dirns;      _S_setbuf(__x);}// Specialized version of the above.  Assumes that// the path cache is valid for the previous position.template <class _CharT, class _Alloc>void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache_for_incr(_Rope_iterator_base<_CharT,_Alloc>& __x){    int __current_index = __x._M_leaf_index;    const _RopeRep* __current_node = __x._M_path_end[__current_index];    size_t __len = __current_node->_M_size;    size_t __node_start_pos = __x._M_leaf_pos;    unsigned char __dirns = __x._M_path_directions;    _Rope_RopeConcatenation<_CharT,_Alloc>* __c;    __stl_assert(__x._M_current_pos <= __x._M_root->_M_size);    if (__x._M_current_pos - __node_start_pos < __len) {	/* More stuff in this leaf, we just didn't cache it. */	_S_setbuf(__x);	return;    }    __stl_assert(__node_start_pos + __len == __x._M_current_pos);    //  node_start_pos is starting position of last_node.    while (--__current_index >= 0) {	if (!(__dirns & 1) /* Path turned left */) 	  break;	__current_node = __x._M_path_end[__current_index];	__c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;	// Otherwise we were in the right child.  Thus we should pop	// the concatenation node.	__node_start_pos -= __c->_M_left->_M_size;	__dirns >>= 1;    }    if (__current_index < 0) {	// We underflowed the cache. Punt.	_S_setcache(__x);	return;    }    __current_node = __x._M_path_end[__current_index];    __c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;    // current_node is a concatenation node.  We are positioned on the first    // character in its right child.    // node_start_pos is starting position of current_node.    __node_start_pos += __c->_M_left->_M_size;    __current_node = __c->_M_right;    __x._M_path_end[++__current_index] = __current_node;    __dirns |= 1;    while (_RopeRep::_S_concat == __current_node->_M_tag) {	++__current_index;	if (_S_path_cache_len == __current_index) {	    int __i;	    for (__i = 0; __i < _S_path_cache_len-1; __i++) {		__x._M_path_end[__i] = __x._M_path_end[__i+1];	    }	    --__current_index;	}	__current_node =	    ((_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node)->_M_left;	__x._M_path_end[__current_index] = __current_node;	__dirns <<= 1;	// node_start_pos is unchanged.    }    __x._M_leaf_index = __current_index;    __x._M_leaf_pos = __node_start_pos;    __x._M_path_directions = __dirns;    _S_setbuf(__x);}template <class _CharT, class _Alloc>void _Rope_iterator_base<_CharT,_Alloc>::_M_incr(size_t __n) {    _M_current_pos += __n;    if (0 != _M_buf_ptr) {        size_t __chars_left = _M_buf_end - _M_buf_ptr;        if (__chars_left > __n) {            _M_buf_ptr += __n;        } else if (__chars_left == __n) {            _M_buf_ptr += __n;            _S_setcache_for_incr(*this);        } else {            _M_buf_ptr = 0;        }    }}template <class _CharT, class _Alloc>void _Rope_iterator_base<_CharT,_Alloc>::_M_decr(size_t __n) {    if (0 != _M_buf_ptr) {        size_t __chars_left = _M_buf_ptr - _M_buf_start;        if (__chars_left >= __n) {            _M_buf_ptr -= __n;        } else {            _M_buf_ptr = 0;        }    }    _M_current_pos -= __n;}template <class _CharT, class _Alloc>void _Rope_iterator<_CharT,_Alloc>::_M_check() {    if (_M_root_rope->_M_tree_ptr != _M_root) {        // _Rope was modified.  Get things fixed up.        _RopeRep::_S_unref(_M_root);        _M_root = _M_root_rope->_M_tree_ptr;        _RopeRep::_S_ref(_M_root);        _M_buf_ptr = 0;    }}template <class _CharT, class _Alloc>inline _Rope_const_iterator<_CharT, _Alloc>::_Rope_const_iterator(  const _Rope_iterator<_CharT,_Alloc>& __x): _Rope_iterator_base<_CharT,_Alloc>(__x) { }template <class _CharT, class _Alloc>inline _Rope_iterator<_CharT,_Alloc>::_Rope_iterator(  rope<_CharT,_Alloc>& __r, size_t __pos): _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos),   _M_root_rope(&__r){    _RopeRep::_S_ref(_M_root);}template <class _CharT, class _Alloc>inline size_t rope<_CharT,_Alloc>::_S_char_ptr_len(const _CharT* __s){    const _CharT* __p = __s;    while (!_S_is0(*__p)) { ++__p; }    return (__p - __s);}#ifndef __GCtemplate <class _CharT, class _Alloc>inline void _Rope_RopeRep<_CharT,_Alloc>::_M_free_c_string(){    _CharT* __cstr = _M_c_string;    if (0 != __cstr) {	size_t __size = _M_size + 1;	destroy(__cstr, __cstr + __size);	_Data_deallocate(__cstr, __size);    }}template <class _CharT, class _Alloc>#ifdef __STL_USE_STD_ALLOCATORS  inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_CharT* __s,							   size_t __n,						           allocator_type __a)#else  inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_CharT* __s,							   size_t __n)#endif{    if (!_S_is_basic_char_type((_CharT*)0)) {	destroy(__s, __s + __n);    }//  This has to be a static member, so this gets a bit messy#   ifdef __STL_USE_STD_ALLOCATORS        __a.deallocate(	    __s, _Rope_RopeLeaf<_CharT,_Alloc>::_S_rounded_up_size(__n));#   else	_Data_deallocate(	    __s, _Rope_RopeLeaf<_CharT,_Alloc>::_S_rounded_up_size(__n));#   endif}//  There are several reasons for not doing this with virtual destructors//  and a class specific delete operator://  - A class specific delete operator can't easily get access to//    allocator instances if we need them.//  - Any virtual function would need a 4 or byte vtable pointer;//    this only requires a one byte tag per object.template <class _CharT, class _Alloc>void _Rope_RopeRep<_CharT,_Alloc>::_M_free_tree(){    switch(_M_tag) {	case _S_leaf:	    {	        _Rope_RopeLeaf<_CharT,_Alloc>* __l			= (_Rope_RopeLeaf<_CharT,_Alloc>*)this;	        __l->_Rope_RopeLeaf<_CharT,_Alloc>::~_Rope_RopeLeaf();	        _L_deallocate(__l, 1);	        break;	    }	case _S_concat:	    {	        _Rope_RopeConcatenation<_CharT,_Alloc>* __c		    = (_Rope_RopeConcatenation<_CharT,_Alloc>*)this;	        __c->_Rope_RopeConcatenation<_CharT,_Alloc>::		       ~_Rope_RopeConcatenation();	        _C_deallocate(__c, 1);	        break;	    }	case _S_function:	    {	        _Rope_RopeFunction<_CharT,_Alloc>* __f		    = (_Rope_RopeFunction<_CharT,_Alloc>*)this;	        __f->_Rope_RopeFunction<_CharT,_Alloc>::~_Rope_RopeFunction();	        _F_deallocate(__f, 1);	        break;	    }	case _S_substringfn:	    {	        _Rope_RopeSubstring<_CharT,_Alloc>* __ss =			(_Rope_RopeSubstring<_CharT,_Alloc>*)this;		__ss->_Rope_RopeSubstring<_CharT,_Alloc>::		        ~_Rope_RopeSubstring();		_S_deallocate(__ss, 1);		break;	    }    }}#elsetemplate <class _CharT, class _Alloc>#ifdef __STL_USE_STD_ALLOCATORS  inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string		(const _CharT*, size_t, allocator_type)#else  inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string		(const _CharT*, size_t)#endif{}#endif// Concatenate a C string onto a leaf rope by copying the rope data.// Used for short ropes.template <class _CharT, class _Alloc>rope<_CharT,_Alloc>::_RopeLeaf*rope<_CharT,_Alloc>::_S_leaf_concat_char_iter		(_RopeLeaf* __r, const _CharT* __iter, size_t __len){    size_t __old_len = __r->_M_size;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频18| 欧美xxxxxxxx| 日韩精品在线看片z| 国产精品人人做人人爽人人添 | 视频一区欧美精品| 不卡视频一二三| 精品欧美乱码久久久久久 | 欧美性生活久久| 久久女同性恋中文字幕| 日本少妇一区二区| 在线亚洲免费视频| 国产精品久久久久久福利一牛影视| 青青草国产精品亚洲专区无| av电影在线观看完整版一区二区| 欧美精品一区二区三区在线播放| 亚洲午夜激情网页| 91国产精品成人| 中文字幕一区在线观看视频| 国产乱妇无码大片在线观看| 日韩午夜激情电影| 亚洲成人av中文| 欧美亚洲综合色| 一区二区三区在线高清| 91影院在线观看| 中文字幕一区二区三| 成人国产精品免费观看视频| 久久久久一区二区三区四区| 国内精品国产三级国产a久久 | 91久久国产最好的精华液| 国产精品久久久久三级| 粉嫩在线一区二区三区视频| 久久久久久日产精品| 国产一区二区不卡| 国产欧美精品区一区二区三区 | 欧美唯美清纯偷拍| 亚洲主播在线播放| 欧美视频中文字幕| 日韩成人一级大片| 日韩欧美资源站| 韩国毛片一区二区三区| 久久久噜噜噜久噜久久综合| 国产98色在线|日韩| 国产精品青草综合久久久久99| 高清不卡在线观看| 亚洲视频一二三| 欧美在线free| 喷白浆一区二区| 亚洲精品在线观| 成人丝袜高跟foot| 亚洲欧美日韩精品久久久久| 91久久精品国产91性色tv| 亚洲成av人影院| 久久久亚洲精华液精华液精华液| 成人综合婷婷国产精品久久蜜臀 | 欧美性受xxxx| 蜜臀av一区二区三区| 久久欧美中文字幕| 一本在线高清不卡dvd| 日韩福利电影在线观看| 精品久久久久久久人人人人传媒| 国产91富婆露脸刺激对白| 一区二区中文视频| 在线播放视频一区| 岛国一区二区三区| 亚洲成人资源网| 国产无一区二区| 91黄色免费版| 美女看a上一区| 日韩毛片视频在线看| 制服丝袜中文字幕一区| 国产成人综合在线播放| 亚洲小说欧美激情另类| 精品久久久久一区二区国产| 色婷婷综合在线| 九九国产精品视频| 亚洲精品日韩综合观看成人91| 日韩欧美高清一区| 色婷婷精品久久二区二区蜜臂av | 91麻豆精品视频| 老司机一区二区| 亚洲国产精品综合小说图片区| 久久精品人人做人人综合| 欧美亚洲国产怡红院影院| 国产一区二区三区| 首页国产欧美日韩丝袜| 中文字幕亚洲在| 欧美精品一区二区在线播放| 欧美视频一区二区三区| 不卡高清视频专区| 精一区二区三区| 日本免费在线视频不卡一不卡二 | 国产亚洲精品bt天堂精选| 欧美色图片你懂的| 91美女蜜桃在线| www.欧美日韩国产在线| 韩国av一区二区三区四区| 五月婷婷综合网| 亚洲美女屁股眼交| 一区在线观看视频| 中文成人综合网| 国产清纯白嫩初高生在线观看91| 欧美理论电影在线| 在线观看国产日韩| 色爱区综合激月婷婷| www.色综合.com| av在线播放不卡| 成人福利视频在线看| 成人性色生活片免费看爆迷你毛片| 精品无人码麻豆乱码1区2区| 六月丁香婷婷久久| 麻豆成人综合网| 久久疯狂做爰流白浆xx| 日本不卡免费在线视频| 秋霞电影一区二区| 免费看日韩精品| 久草这里只有精品视频| 激情小说亚洲一区| 国产乱子伦视频一区二区三区 | 亚洲视频每日更新| 亚洲欧美激情视频在线观看一区二区三区 | 国产精品三级在线观看| 亚洲国产成人在线| 亚洲欧美在线视频| 亚洲激情自拍视频| 亚洲地区一二三色| 蜜臀精品久久久久久蜜臀| 男男gaygay亚洲| 狠狠色丁香久久婷婷综| 国产精品一区二区久激情瑜伽| 国产黑丝在线一区二区三区| 国产不卡视频一区二区三区| 成人av网站免费| 欧美伊人久久久久久久久影院| 精品视频1区2区3区| 日韩午夜在线观看视频| 欧美精品一区视频| 中文字幕日本乱码精品影院| 亚洲中国最大av网站| 蜜臀91精品一区二区三区| 国产精品538一区二区在线| www.av精品| 欧美最猛性xxxxx直播| 欧美电影免费观看高清完整版在 | 伊人色综合久久天天人手人婷| 亚洲6080在线| 国内精品久久久久影院色| 99久久夜色精品国产网站| 欧美日韩一二三区| 久久综合国产精品| 亚洲精品日韩综合观看成人91| 日韩黄色免费电影| 成人性生交大合| 91精品国产全国免费观看| 久久免费午夜影院| 亚洲最大成人网4388xx| 韩国中文字幕2020精品| 一本一道久久a久久精品| 欧美成人女星排行榜| 中文字幕一区二区三| 久久99精品久久久| 色婷婷国产精品| 久久香蕉国产线看观看99| 亚洲激情av在线| 欧美日韩亚洲丝袜制服| 欧美一区二区三区视频在线| 国产亚洲精品福利| 日韩电影在线观看电影| 成人性视频免费网站| 欧美成人vps| 日韩不卡一二三区| 99久久精品国产导航| 日韩限制级电影在线观看| 夜夜爽夜夜爽精品视频| 黄色日韩网站视频| 欧美日本一区二区三区| 综合精品久久久| 国产成人精品免费看| 日韩一区二区三区精品视频| 亚洲免费视频成人| 99久免费精品视频在线观看 | 成人黄页在线观看| 精品盗摄一区二区三区| 日日摸夜夜添夜夜添国产精品| 色国产综合视频| 自拍偷拍国产亚洲| 成人免费精品视频| 国产精品久久久久aaaa樱花| 国产麻豆精品视频| 亚洲精品一区二区精华| 久久黄色级2电影| 91精品国产综合久久精品app | 国产清纯在线一区二区www| 捆绑紧缚一区二区三区视频| 在线成人av网站| 日本欧美一区二区三区| 6080国产精品一区二区| 日韩国产精品久久久久久亚洲| 欧美日本在线播放| 日韩成人精品在线| 欧美日韩和欧美的一区二区|