亚洲欧美第一页_禁久久精品乱码_粉嫩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精品久久久久久久91蜜桃| 日韩精品亚洲一区二区三区免费| 精品国产一区二区三区忘忧草| 欧美日韩电影在线| 色婷婷久久久亚洲一区二区三区| 成人午夜视频福利| 国产91精品一区二区| 成人av一区二区三区| 国产一区二区在线电影| 美国毛片一区二区三区| 久久精品国产成人一区二区三区| 九九精品一区二区| 成人综合在线观看| 精品国产人成亚洲区| 日韩中文字幕不卡| 91黄视频在线观看| 日韩视频一区二区| 中文字幕av不卡| 亚洲女同ⅹxx女同tv| 一区二区三区在线视频免费| 一区二区三区日韩精品视频| 丁香天五香天堂综合| 精品国产免费久久| 日韩精彩视频在线观看| 欧美日韩视频第一区| 久久综合色天天久久综合图片| 亚洲国产精华液网站w| 国产精品夜夜嗨| 欧美日韩国产小视频在线观看| 中文字幕在线观看一区| 日韩在线卡一卡二| 91精品综合久久久久久| 蜜桃av噜噜一区二区三区小说| 欧美精品日韩综合在线| 中文字幕av免费专区久久| 国产精品1区二区.| 国产午夜精品久久久久久久| 亚洲国产日日夜夜| 国产一区激情在线| 国产色产综合色产在线视频| 国产成人免费高清| 欧美一区二区三区视频免费播放| 国产精品久久久久aaaa| 久久精品72免费观看| 日韩亚洲欧美在线观看| 国产一区二区久久| 国产精品传媒入口麻豆| 91看片淫黄大片一级在线观看| 日韩天堂在线观看| 国产精品资源在线| 自拍偷拍国产精品| 国产成人av一区| 亚洲视频在线一区| 欧美喷水一区二区| 国产麻豆成人传媒免费观看| 国产精品美女一区二区在线观看| 久久成人免费网| 中文字幕第一区综合| 在线观看亚洲专区| 亚洲免费观看高清完整版在线 | 亚洲影视在线播放| av不卡在线观看| 国产精品久久久久久久久免费丝袜 | 国产成人免费视频| 一二三四区精品视频| 日韩精品一区二区三区蜜臀| 91极品美女在线| 久久国产生活片100| 国产精品毛片久久久久久久| 欧美日韩国产a| 国产精品一区久久久久| 亚洲制服欧美中文字幕中文字幕| 久久夜色精品国产噜噜av| 欧美色偷偷大香| 懂色av一区二区三区蜜臀| 天天综合网天天综合色| 欧美亚洲国产bt| 亚洲一区二区在线播放相泽| 337p粉嫩大胆噜噜噜噜噜91av | 国产一区二区视频在线| 亚洲一区自拍偷拍| 国产精品伦一区二区三级视频| 欧美日韩亚洲另类| 色婷婷综合中文久久一本| 国产成人亚洲精品青草天美| 午夜精品视频在线观看| 综合电影一区二区三区| 国产亚洲欧美色| 日韩欧美亚洲国产精品字幕久久久| 91香蕉视频黄| 成人动漫中文字幕| 国产福利一区在线观看| 人人超碰91尤物精品国产| 日韩精品一区在线观看| 精品视频全国免费看| 91亚洲精品乱码久久久久久蜜桃| 国产毛片精品国产一区二区三区| 日韩国产精品久久久| 精品成人佐山爱一区二区| 欧美日韩大陆在线| 欧美中文字幕一区二区三区亚洲 | 国产激情视频一区二区三区欧美 | 色天使色偷偷av一区二区| 国产sm精品调教视频网站| 精品一二三四在线| 久久精品国产精品亚洲综合| 天天操天天综合网| 天天色天天操综合| 青娱乐精品视频| 视频一区欧美精品| 视频一区视频二区中文字幕| 丝袜a∨在线一区二区三区不卡| 亚洲最新视频在线观看| 亚洲一区二区三区自拍| 亚洲综合久久av| 亚洲成人手机在线| 久久综合中文字幕| 国产性色一区二区| 国产精品三级电影| 免费av成人在线| 精品系列免费在线观看| 国产精品一区一区三区| 国产精品影视网| 91在线看国产| 久久国产尿小便嘘嘘| 久久精品久久综合| 成人午夜视频福利| 色综合网色综合| 激情另类小说区图片区视频区| 亚洲男女毛片无遮挡| 亚洲激情中文1区| 国产精品乱码一区二三区小蝌蚪| 国产精品久久毛片a| 亚洲最新视频在线观看| 日本午夜一本久久久综合| 国产一区二区伦理| 成人av动漫网站| 欧美午夜影院一区| 欧美一级高清大全免费观看| 国产欧美一区二区三区沐欲| 欧美一卡2卡3卡4卡| 国产亚洲视频系列| 亚洲欧美日韩中文字幕一区二区三区 | 成人国产电影网| 在线视频欧美区| 日韩欧美在线影院| 国产精品免费久久久久| 丝袜a∨在线一区二区三区不卡| 国模大尺度一区二区三区| 91蜜桃婷婷狠狠久久综合9色| 91精品婷婷国产综合久久竹菊| 久久综合九色综合97婷婷| 亚洲色图一区二区| 捆绑变态av一区二区三区| 91麻豆6部合集magnet| 欧美一区二区三区性视频| 国产精品国产三级国产aⅴ无密码| 亚洲国产va精品久久久不卡综合| 精品亚洲国产成人av制服丝袜| 色94色欧美sute亚洲线路一ni | 亚洲综合成人在线视频| 国产精品中文字幕欧美| 欧美日本国产视频| 亚洲日本在线观看| 国产一区二区三区美女| 欧美日韩国产精品成人| 国产精品久久福利| 国产综合色产在线精品| 欧美日韩亚洲另类| 亚洲精选视频在线| 国产成人精品免费看| 欧美福利视频一区| 樱花影视一区二区| av日韩在线网站| 久久精品欧美一区二区三区麻豆| 婷婷成人激情在线网| 一本高清dvd不卡在线观看| 欧美国产欧美综合| 老汉av免费一区二区三区 | 男男gaygay亚洲| 欧美午夜视频网站| 亚洲人成在线播放网站岛国| 国产大陆亚洲精品国产| 精品国产一区二区三区av性色 | 99久久久精品| 中文字幕不卡一区| 国产一区二区女| 久久亚洲私人国产精品va媚药| 久久精品国产**网站演员| 69av一区二区三区| 视频一区二区中文字幕| 欧美久久久影院| 婷婷久久综合九色综合绿巨人 | 国产亚洲欧美在线| 国产黄人亚洲片| 国产日韩在线不卡| 国产九九视频一区二区三区| 精品动漫一区二区三区在线观看| 美女视频一区二区三区|