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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tktextbtree.c

?? linux系統(tǒng)下的音頻通信
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
	 * Starting and stopping segments are in the same line; mark the	 * search as over immediately if the second segment is after the	 * first.	 */	if (index1Ptr->charIndex <= backOne.charIndex) {	    searchPtr->linesLeft = 0;	}    }}/* *---------------------------------------------------------------------- * * TkBTreeNextTag -- * *	Once a tag search has begun, successive calls to this procedure *	return successive tag toggles.  Note:  it is NOT SAFE to call this *	procedure if characters have been inserted into or deleted from *	the B-tree since the call to TkBTreeStartSearch. * * Results: *	The return value is 1 if another toggle was found that met the *	criteria specified in the call to TkBTreeStartSearch;  in this *	case searchPtr->curIndex gives the toggle's position and *	searchPtr->curTagPtr points to its segment.  0 is returned if *	no more matching tag transitions were found; in this case *	searchPtr->curIndex is the same as searchPtr->stopIndex. * * Side effects: *	Information in *searchPtr is modified to update the state of the *	search and indicate where the next tag toggle is located. * *---------------------------------------------------------------------- */intTkBTreeNextTag(searchPtr)    register TkTextSearch *searchPtr;	/* Information about search in					 * progress;  must have been set up by					 * call to TkBTreeStartSearch. */{    register TkTextSegment *segPtr;    register Node *nodePtr;    register Summary *summaryPtr;    if (searchPtr->linesLeft <= 0) {	goto searchOver;    }    /*     * The outermost loop iterates over lines that may potentially contain     * a relevant tag transition, starting from the current segment in     * the current line.     */    segPtr = searchPtr->nextPtr;    while (1) {	/*	 * Check for more tags on the current line.	 */	for ( ; segPtr != NULL; segPtr = segPtr->nextPtr) {	    if (segPtr == searchPtr->lastPtr) {		goto searchOver;	    }	    if (((segPtr->typePtr == &tkTextToggleOnType)		    || (segPtr->typePtr == &tkTextToggleOffType))		    && (searchPtr->allTags		    || (segPtr->body.toggle.tagPtr == searchPtr->tagPtr))) {		searchPtr->segPtr = segPtr;		searchPtr->nextPtr = segPtr->nextPtr;		searchPtr->tagPtr = segPtr->body.toggle.tagPtr;		return 1;	    }	    searchPtr->curIndex.charIndex += segPtr->size;	}    	/*	 * See if there are more lines associated with the current parent	 * node.  If so, go back to the top of the loop to search the next	 * one.	 */	nodePtr = searchPtr->curIndex.linePtr->parentPtr;	searchPtr->curIndex.linePtr = searchPtr->curIndex.linePtr->nextPtr;	searchPtr->linesLeft--;	if (searchPtr->linesLeft <= 0) {	    goto searchOver;	}	if (searchPtr->curIndex.linePtr != NULL) {	    segPtr = searchPtr->curIndex.linePtr->segPtr;	    searchPtr->curIndex.charIndex = 0;	    continue;	}	if (nodePtr == searchPtr->tagPtr->tagRootPtr) {	    goto searchOver;	}    	/*	 * Search across and up through the B-tree's node hierarchy looking	 * for the next node that has a relevant tag transition somewhere in	 * its subtree.  Be sure to update linesLeft as we skip over large	 * chunks of lines.	 */    	while (1) {	    while (nodePtr->nextPtr == NULL) {		if (nodePtr->parentPtr == NULL ||		    nodePtr->parentPtr == searchPtr->tagPtr->tagRootPtr) {		    goto searchOver;		}		nodePtr = nodePtr->parentPtr;	    }	    nodePtr = nodePtr->nextPtr;	    for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL;		    summaryPtr = summaryPtr->nextPtr) {		if ((searchPtr->allTags) ||			(summaryPtr->tagPtr == searchPtr->tagPtr)) {		    goto gotNodeWithTag;		}	    }	    searchPtr->linesLeft -= nodePtr->numLines;	}    	/*	 * At this point we've found a subtree that has a relevant tag	 * transition.  Now search down (and across) through that subtree	 * to find the first level-0 node that has a relevant tag transition.	 */    	gotNodeWithTag:	while (nodePtr->level > 0) {	    for (nodePtr = nodePtr->children.nodePtr; ;		    nodePtr = nodePtr->nextPtr) {		for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL;			summaryPtr = summaryPtr->nextPtr) {		    if ((searchPtr->allTags)			    || (summaryPtr->tagPtr == searchPtr->tagPtr)) {			goto nextChild;		    }		}		searchPtr->linesLeft -= nodePtr->numLines;		if (nodePtr->nextPtr == NULL) {		    panic("TkBTreeNextTag found incorrect tag summary info.");		}	    }	    nextChild:	    continue;	}    	/*	 * Now we're down to a level-0 node that contains a line that contains	 * a relevant tag transition.  Set up line information and go back to	 * the beginning of the loop to search through lines.	 */	searchPtr->curIndex.linePtr = nodePtr->children.linePtr;	searchPtr->curIndex.charIndex = 0;	segPtr = searchPtr->curIndex.linePtr->segPtr;	if (searchPtr->linesLeft <= 0) {	    goto searchOver;	}	continue;    }    searchOver:    searchPtr->linesLeft = 0;    searchPtr->segPtr = NULL;    return 0;}/* *---------------------------------------------------------------------- * * TkBTreePrevTag -- * *	Once a tag search has begun, successive calls to this procedure *	return successive tag toggles in the reverse direction. *	Note:  it is NOT SAFE to call this *	procedure if characters have been inserted into or deleted from *	the B-tree since the call to TkBTreeStartSearch. * * Results: *	The return value is 1 if another toggle was found that met the *	criteria specified in the call to TkBTreeStartSearch;  in this *	case searchPtr->curIndex gives the toggle's position and *	searchPtr->curTagPtr points to its segment.  0 is returned if *	no more matching tag transitions were found; in this case *	searchPtr->curIndex is the same as searchPtr->stopIndex. * * Side effects: *	Information in *searchPtr is modified to update the state of the *	search and indicate where the next tag toggle is located. * *---------------------------------------------------------------------- */intTkBTreePrevTag(searchPtr)    register TkTextSearch *searchPtr;	/* Information about search in					 * progress;  must have been set up by					 * call to TkBTreeStartSearch. */{    register TkTextSegment *segPtr, *prevPtr;    register TkTextLine *linePtr, *prevLinePtr;    register Node *nodePtr, *node2Ptr, *prevNodePtr;    register Summary *summaryPtr;    int charIndex;    int pastLast;			/* Saw last marker during scan */    int linesSkipped;    if (searchPtr->linesLeft <= 0) {	goto searchOver;    }    /*     * The outermost loop iterates over lines that may potentially contain     * a relevant tag transition, starting from the current segment in     * the current line.  "nextPtr" is maintained as the last segment in     * a line that we can look at.      */    while (1) {	/*	 * Check for the last toggle before the current segment on this line.	 */	charIndex = 0;	if (searchPtr->lastPtr == NULL) {	    /* 	     * Search back to the very beginning, so pastLast is irrelevent.	     */	    pastLast = 1; 	} else {	    pastLast = 0;	}	for (prevPtr = NULL, segPtr = searchPtr->curIndex.linePtr->segPtr ;		segPtr != NULL && segPtr != searchPtr->nextPtr;		segPtr = segPtr->nextPtr) {	    if (((segPtr->typePtr == &tkTextToggleOnType)		    || (segPtr->typePtr == &tkTextToggleOffType))		    && (searchPtr->allTags		    || (segPtr->body.toggle.tagPtr == searchPtr->tagPtr))) {		prevPtr = segPtr;		searchPtr->curIndex.charIndex = charIndex;	    }	    if (segPtr == searchPtr->lastPtr) {	        prevPtr = NULL;   /* Segments earlier than last don't count */		pastLast = 1;	    }	    charIndex += segPtr->size;	}	if (prevPtr != NULL) {	    if (searchPtr->linesLeft == 1 && !pastLast) {		/*		 * We found a segment that is before the stopping index.		 * Note that it is OK if prevPtr == lastPtr.		 */		goto searchOver;	    }	    searchPtr->segPtr = prevPtr;	    searchPtr->nextPtr = prevPtr;	    searchPtr->tagPtr = prevPtr->body.toggle.tagPtr;	    return 1;	}    	searchPtr->linesLeft--;	if (searchPtr->linesLeft <= 0) {	    goto searchOver;	}	/*	 * See if there are more lines associated with the current parent	 * node.  If so, go back to the top of the loop to search the previous	 * one.	 */	nodePtr = searchPtr->curIndex.linePtr->parentPtr;	for (prevLinePtr = NULL, linePtr = nodePtr->children.linePtr;		linePtr != NULL && linePtr != searchPtr->curIndex.linePtr;		prevLinePtr = linePtr, linePtr = linePtr->nextPtr) {	    /* empty loop body */ ;	}	if (prevLinePtr != NULL) {	    searchPtr->curIndex.linePtr = prevLinePtr;	    searchPtr->nextPtr = NULL;	    continue;	}	if (nodePtr == searchPtr->tagPtr->tagRootPtr) {	    goto searchOver;	}    	/*	 * Search across and up through the B-tree's node hierarchy looking	 * for the previous node that has a relevant tag transition somewhere in	 * its subtree.  The search and line counting is trickier with/out	 * back pointers. We'll scan all the nodes under a parent up to	 * the current node, searching all of them for tag state.  The last	 * one we find, if any, is recorded in prevNodePtr, and any nodes	 * past prevNodePtr that don't have tag state increment linesSkipped.	 */    	while (1) {	    for (prevNodePtr = NULL, linesSkipped = 0,		    node2Ptr = nodePtr->parentPtr->children.nodePtr ;		    node2Ptr != nodePtr;  node2Ptr = node2Ptr->nextPtr) {		for (summaryPtr = node2Ptr->summaryPtr; summaryPtr != NULL;			summaryPtr = summaryPtr->nextPtr) {		    if ((searchPtr->allTags) ||			    (summaryPtr->tagPtr == searchPtr->tagPtr)) {			prevNodePtr = node2Ptr;			linesSkipped = 0;			goto keepLooking;		    }		}		linesSkipped += node2Ptr->numLines;		keepLooking:		continue;	    }	    if (prevNodePtr != NULL) {		nodePtr = prevNodePtr;		searchPtr->linesLeft -= linesSkipped;		goto gotNodeWithTag;	    }	    nodePtr = nodePtr->parentPtr;	    if (nodePtr->parentPtr == NULL ||		nodePtr == searchPtr->tagPtr->tagRootPtr) {		goto searchOver;	    }	}    	/*	 * At this point we've found a subtree that has a relevant tag	 * transition.  Now search down (and across) through that subtree	 * to find the last level-0 node that has a relevant tag transition.	 */    	gotNodeWithTag:	while (nodePtr->level > 0) {	    for (linesSkipped = 0, prevNodePtr = NULL,		    nodePtr = nodePtr->children.nodePtr; nodePtr != NULL ;		    nodePtr = nodePtr->nextPtr) {		for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL;			summaryPtr = summaryPtr->nextPtr) {		    if ((searchPtr->allTags)			    || (summaryPtr->tagPtr == searchPtr->tagPtr)) {			prevNodePtr = nodePtr;			linesSkipped = 0;			goto keepLooking2;		    }		}		linesSkipped += nodePtr->numLines;		keepLooking2:		continue;	    }	    if (prevNodePtr == NULL) {		panic("TkBTreePrevTag found incorrect tag summary info.");	    }	    searchPtr->linesLeft -= linesSkipped;	    nodePtr = prevNodePtr;	}    	/*	 * Now we're down to a level-0 node that contains a line that contains	 * a relevant tag transition.  Set up line information and go back to	 * the beginning of the loop to search through lines.  We start with	 * the last line below the node.	 */	for (prevLinePtr = NULL, linePtr = nodePtr->children.linePtr;		linePtr != NULL ;		prevLinePtr = linePtr, linePtr = linePtr->nextPtr) {	    /* empty loop body */ ;	}	searchPtr->curIndex.linePtr = prevLinePtr;	searchPtr->curIndex.charIndex = 0;	if (searchPtr->linesLeft <= 0) {	    goto searchOver;	}	continue;    }    searchOver:    searchPtr->linesLeft = 0;    searchPtr->segPtr = NULL;    return 0;}/* *---------------------------------------------------------------------- * * TkBTreeCharTagged -- * *	Determine whether a particular character has a particular tag. * * Results: *	The return value is 1 if the given tag is in effect at the *	character given by linePtr and ch, and 0 otherwise. * * Side effects: *	None. * *---------------------------------------------------------------------- */intTkBTreeCharTagged(indexPtr, tagPtr)    TkTextIndex *indexPtr;		/* Indicates a character position at					 * which to check for a tag. */    TkTextTag *tagPtr;			/* Tag of interest. */{    register Node *nodePtr;    register TkTextLine *siblingLinePtr;    register TkTextSegment *segPtr;    TkTextSegment *toggleSegPtr;    int toggles, index;    /*      * Check for toggles for the tag in indexPtr's line but before     * indexPtr.  If there is one, its type indicates whether or     * not the character is tagged.     */    toggleSegPtr = NULL;    for (index = 0, segPtr = indexPtr->linePtr->segPtr;	    (index + segPtr->size) <= indexPtr->charIndex;	    index += segPtr->size, segPtr = segPtr->nextPtr) {	if (((segPtr->typePtr == &tkTextToggleOnType)		|| (segPtr->typePtr == &tkTextToggleOffType))		&& (segPtr->body.toggle.tagPtr == tagPtr)) {	    toggleSegPtr = segPtr;	}    }    if (toggleSegPtr != NULL) {	return (toggleSegPtr->typePtr == &tkTextToggleOnType);    }    /*     * No toggle in this line.  Look for toggles for the tag in lines     * that are predecessors of indexPtr->linePtr but under the same     * level-0 node.     */    for (siblingLinePtr = indexPtr->linePtr->parentPtr->children.linePtr;	    siblingLinePtr != indexPtr->linePtr;	    siblingLinePtr = siblingLinePtr->nextPtr) {	for (segPtr = siblingLinePtr->segPtr; segPtr != NULL;		segPtr = segPtr->nextPtr) {	    if (((segPtr->typePtr == &tkTextToggleOnType)		    || (segP

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
爽好多水快深点欧美视频| 成熟亚洲日本毛茸茸凸凹| 亚洲一区二区三区在线播放| 亚洲欧洲精品一区二区三区不卡| 久久你懂得1024| 久久亚洲一区二区三区明星换脸 | 免费人成精品欧美精品| 日本不卡视频在线观看| 伦理电影国产精品| 韩国视频一区二区| 高潮精品一区videoshd| 成人精品一区二区三区中文字幕| 成人网页在线观看| 91麻豆免费观看| 欧美日韩专区在线| 日韩欧美一级精品久久| 久久亚区不卡日本| 国产精品久久久久aaaa樱花| 亚洲欧洲综合另类| 天堂一区二区在线免费观看| 美日韩一级片在线观看| 国产91精品一区二区麻豆网站 | 色婷婷av一区| 欧美久久久一区| 精品国产一二三区| 国产精品大尺度| 亚洲国产日韩精品| 精品一区二区在线观看| 成人av手机在线观看| 在线日韩国产精品| 欧美成人激情免费网| 国产精品色噜噜| 亚洲成av人片在线| 国产精品一二三四五| 91免费观看国产| 欧美一个色资源| 国产精品久久久久影院| 亚洲成人免费av| 国产成a人无v码亚洲福利| 在线观看视频一区| 2020国产精品自拍| 一区二区三区在线影院| 精品一区二区在线观看| 91久久精品一区二区二区| 日韩一级免费观看| 亚洲日本va午夜在线电影| 免费观看久久久4p| 91一区二区在线| 欧美大度的电影原声| 亚洲精品ww久久久久久p站| 免费观看在线综合| 色婷婷综合久色| 精品少妇一区二区三区日产乱码| ...xxx性欧美| 老色鬼精品视频在线观看播放| 成人精品免费视频| 日韩视频一区二区| 亚洲免费观看高清| 国产一区二区免费在线| 欧美日韩电影在线播放| 国产精品人成在线观看免费| 日本亚洲三级在线| 色综合天天综合网国产成人综合天| 日韩精品在线网站| 亚洲成av人综合在线观看| 成人精品一区二区三区中文字幕| 日韩一区二区视频| 亚洲精品精品亚洲| 国产91富婆露脸刺激对白| 5566中文字幕一区二区电影| 亚洲欧洲精品成人久久奇米网| 蜜臀a∨国产成人精品| 色94色欧美sute亚洲线路二| 国产日产欧美一区二区视频| 老司机精品视频一区二区三区| 欧美无砖砖区免费| 综合久久久久久| 国产成人综合视频| 精品久久一区二区三区| 日韩国产欧美在线播放| 欧亚洲嫩模精品一区三区| 最新日韩av在线| 国产99精品国产| 亚洲精品在线网站| 青青草原综合久久大伊人精品 | 成人午夜电影小说| 国产亚洲自拍一区| 激情六月婷婷综合| 日韩欧美国产一区二区在线播放| 亚洲成a人v欧美综合天堂下载| 欧亚一区二区三区| 亚洲愉拍自拍另类高清精品| 91亚洲男人天堂| 中文字幕一区二区三区在线播放| 国产丶欧美丶日本不卡视频| 亚洲精品一区二区三区影院| 日产精品久久久久久久性色| 欧美日韩亚洲丝袜制服| 五月天亚洲精品| 欧美日韩免费不卡视频一区二区三区 | 久久久五月婷婷| 国产麻豆视频一区二区| 精品国产电影一区二区| 极品瑜伽女神91| 久久综合久久综合亚洲| 国产在线视视频有精品| 2021国产精品久久精品| 国产v综合v亚洲欧| 中文字幕一区在线观看| 99久久99久久久精品齐齐| 亚洲女子a中天字幕| 欧美性生活影院| 五月婷婷色综合| 日韩亚洲欧美在线| 国产一区不卡精品| 欧美经典一区二区三区| www.久久久久久久久| 亚洲欧美色图小说| 日本韩国一区二区三区视频| 亚洲一二三四在线| 欧美一级欧美一级在线播放| 久久69国产一区二区蜜臀 | 国内精品免费**视频| 国产日韩精品久久久| 91在线你懂得| 午夜电影久久久| 日韩欧美不卡一区| 国产99精品国产| 亚洲欧美aⅴ...| 欧美午夜视频网站| 日本视频一区二区| 久久久久国产精品人| aaa亚洲精品| 一区二区三区四区视频精品免费| 欧美日本一区二区| 久久精品国产999大香线蕉| 精品国产乱码久久| 99精品偷自拍| 免费欧美高清视频| 视频一区视频二区中文字幕| 日韩精品一区二区三区在线观看| 国产精品一二一区| ...中文天堂在线一区| 欧美亚洲综合网| 日韩av中文字幕一区二区三区| 日韩欧美精品在线视频| 国产成人啪午夜精品网站男同| 亚洲国产精品黑人久久久| 97se亚洲国产综合自在线不卡 | 午夜精品福利视频网站| 久久久久国产一区二区三区四区 | 另类调教123区| 中文字幕av一区二区三区高 | 国产在线精品一区二区夜色| 国产精品久久久久久久久久久免费看 | 国产午夜亚洲精品不卡| 91久久精品国产91性色tv| 日日嗨av一区二区三区四区| 欧美激情一区二区三区四区| 欧美私人免费视频| 日本欧美加勒比视频| 国产精品免费人成网站| 欧美精品粉嫩高潮一区二区| 成人天堂资源www在线| 亚洲高清三级视频| 久久精品人人做人人爽人人| 91丨porny丨中文| 经典一区二区三区| 亚洲自拍偷拍图区| 亚洲国产高清在线| 欧美一区二区三区男人的天堂| 国产精品一区二区x88av| 偷拍亚洲欧洲综合| 1024亚洲合集| 日本一区二区三区在线不卡| 日韩午夜小视频| 欧美日韩精品专区| 色婷婷综合久色| 99久久精品国产一区| 久久99最新地址| 日韩av网站在线观看| 亚洲国产婷婷综合在线精品| 日韩毛片精品高清免费| 国产色综合久久| 精品国产网站在线观看| 欧美日韩成人一区| 欧美在线一区二区| 色婷婷激情综合| 99视频热这里只有精品免费| 高清久久久久久| 国产在线麻豆精品观看| 精品一区二区在线视频| 丝袜国产日韩另类美女| 亚洲成人资源网| 亚洲va欧美va国产va天堂影院| 亚洲视频免费在线观看| 中文字幕一区二区三区在线播放| 中文字幕第一页久久| 国产片一区二区三区| 国产欧美日韩在线观看|