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

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

?? string.cpp

?? jedit 一個(gè)小型java編譯器的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
/******************************************************************************\
*
*  文件名:    String.cpp
*  目的:	  FString類的實(shí)現(xiàn)文件,關(guān)于函數(shù)用法,請參見string.h
*  使用說明:  FString類是一個(gè)對字符串進(jìn)行操作的類,F(xiàn)的用意是指Free
*			  即任何人都可以修改它為己所用。
*			  在保持此程序完整性的情況下,你可以任意傳播它。你也可以修改它
*			  來為你服務(wù),如果你要將此程序用于商業(yè)目的,請告知我。
*
*  CopyLeft	 2002  張?jiān)?*
*  CopyLeft 是自由軟件基金會(huì)(FSF)推薦使用的自由軟件的標(biāo)志
*
\******************************************************************************/
#include <malloc.h>
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include "fstring.h"

FString::FString()
{
	SelChar=NULL;
	SelLength=0;
	Word=NULL;
	WordLength=0;
	Length=0;
	Line.Add(0);
	Line.Add(Length);
	BufferSize=STR_SIZE;
	Str=(char*)malloc(BufferSize);
	assert(Str);
	Cur=0;
	Openum=0;
	OvrFlag=false;
}
FString::~FString()
{
	free(Str);
	Str=0;
	BufferSize=0;

	Length=0;
	Cur=0;
	OvrFlag=false;
	if(SelChar)
		free(SelChar);
	if(Word)
		free(Word);
	SelLength=0;
}
void FString::Delete(bool UndoFlag)
{
	char c[3];
	int i;
	if(Length==0)
		return;
	if(Cur==Length)
		return;
	if(*(Str+Cur)>=-95&&*(Str+Cur)<=-2)
	{
		c[0]=*(Str+Cur);
		c[1]=*(Str+Cur+1);
		c[2]='\0';
		for(i=Cur;i<Length-2;i++)
			*(Str+i)=*(Str+i+2);
		Length-=2;
		if(UndoFlag)
		{
			undo.SetMax(Openum);
			Openum++;
			undo.add(Undo(Cur,2,OPE_DELETE,c,0));
		}
	}
	else
	{
		c[0]=*(Str+Cur);
		for(i=Cur;i<Length-1;i++)
			*(Str+i)=*(Str+i+1);
		Length--;
		if(UndoFlag)
		{
			undo.SetMax(Openum);
			Openum++;
			undo.add(Undo(Cur,1,OPE_DELETE,0,c[0]));
		}
	}
	SetLine();
}
void FString::DeletePrev()
{
	int i;
	char c[3];
	if(Length==0||Cur==0)
		return;
	Cur--;
	undo.SetMax(Openum);
	if(*(Str+Cur)>=-95&&*(Str+Cur)<=-2)
	{
		Cur--;
		c[0]=*(Str+Cur);
		c[1]=*(Str+Cur+1);
		c[2]='\0';
		for(i=Cur;i<Length-2;i++)
			*(Str+i)=*(Str+i+2);
		Length-=2;
		SetLine();
		undo.add(Undo(Cur,2,OPE_DELETE,c,0));
		return;
	}

	c[0]=*(Str+Cur);
	for(i=Cur;i<Length-1;i++)
		*(Str+i)=*(Str+i+1);
	Length--;
	undo.add(Undo(Cur,1,OPE_DELETE,0,c[0]));
	Openum++;
	SetLine();
}
void FString::DeleteSel(bool UndoFlag)
{
	int SelLength;
	int i;
	SelLength=Sel.GetLength();
	if(SelLength==0)
		return;
	Cur=Sel.GetStart();
	if(UndoFlag)
	{
		undo.SetMax(Openum);
		Openum++;
		undo.add(Undo(Cur,Sel.GetLength(),OPE_DELETE,GetSelect(),0));
	}
	for(i=Cur;i<Length-SelLength;i++)
		*(Str+i)=*(Str+i+SelLength);
	Length-=SelLength;
	Sel.Empty();
	SetLine();
}
void FString::Find(char *str,int &num,IntArray &pos)
{
	int i;
	num=0;
	pos.Clear();
	for(i=0;i<Length;)
	{
		if(stricmpn(str,i,false))
		{
			num++;
			pos.Add(i);
		}
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i+=2;
		else
			i++;
	}
}
bool FString::FindNext(char *str,int &pos,bool icmp)
{
	int i;
	for(i=Cur+1;i<Length;)
	{
		if(stricmpn(str,i,icmp))
		{
			pos=i;
			return true;
		}
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i+=2;
		else
			i++;
	}
	for(i=0;i<=Cur;)
	{
		if(stricmpn(str,i,icmp))
		{
			pos=i;
			return true;
		}
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i+=2;
		else
			i++;
	}
	return false;
}
bool FString::FindPrev(char *str,int &pos,bool icmp)
{
	int i;
	for(i=Cur;i>=0;)
	{
		if(stricmpn(str,i,icmp))
		{
			pos=i;
			return true;
		}
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i-=2;
		else
			i--;
	}
	for(i=Length-1;i>Cur;)
	{
		if(stricmpn(str,i,icmp))
		{
			pos=i;
			return true;
		}
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i-=2;
		else
			i--;
	}
	return false;
}
char FString::GetChar(int line,int column)
{
	if(Str==0)
		return 0;
	int Index;
	Index=GetLineStart(line)+column-1;
	if(Index<0&&Index>=Length)
		return 0;
    return *(Str+Index);
}
char FString::GetChar(int index)
{
	if(Str==0)
		return 0;
	if(index<0&&index>=Length)
		return 0;
	return *(Str+index);
}
int FString::GetColumn()
{
	int Column=1;
	int i;
	for(i=0;i<Cur;)
	{
		if(*(Str+i)!=0x0a)
			Column++;
		else
			Column=1;
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i+=2;
		else
			i++;
	}
	return Column;
}
int FString::GetColumnPos()
{
	int Column=1;
	int i;
	for(i=0;i<Line.GetLength();i++)
	{
		if(Cur>=Line.Get(i)&&Cur<Line.Get(i+1))
		{
			break;
		}
	}
	for(i=Line.Get(i);i<Line.Get(i+1);i++)
	{
		Column++;
	}
	return Column;
}
int FString::GetColumn(int pos)
{
	if(pos<0||pos>Length)
		return 0;
	int Column=1;
	int i;
	for(i=0;i<Line.GetLength();i++)
	{
		if(Cur>=Line.Get(i)&&Cur<Line.Get(i+1))
		{
			break;
		}
	}
	for(i=Line.Get(i);i<Line.Get(i+1);)
	{
		Column++;
		if(*(Str+i)>=-95&&*(Str+i)<=-2)
			i+=2;
		else
			i++;
	}
	return Column;
}
int FString::GetPos()
{
	int Pos=1;
	int i;
	for(i=0;i<Cur;i++)
	{
		if(*(Str+i)!=0x0a)
			Pos++;
		else
			Pos=1;
	}
	return Pos;
}

int FString::GetLine(int pos)
{
	int i;
	for(i=0;i<Line.GetLength();i++)
	{
		if(pos>=Line.Get(i)&&pos<Line.Get(i+1))
		{
			break;
		}
	}
	return i;
}
int FString::GetLineStart(int line)
{
	return Line.Get(line-1);
}
int FString::GetLine()
{
	int i;
	if(Cur==Length)
		return Line.GetLength()-1;
	for(i=0;i<Line.GetLength();i++)
	{
		if(Cur>=Line.Get(i)&&Cur<Line.Get(i+1))
		{
			break;
		}
	}
	return i+1;
}
int FString::GetCurLineStart()
{
	int i;
	for(i=0;i<Line.GetLength();i++)
	{
		if(Cur>=Line.Get(i)&&Cur<Line.Get(i+1))
		{
			break;
		}
	}
	return Line.Get(i);
}
int FString::GetLineWidth(int line)
{
	return (Line.Get(line)-Line.Get(line-1)+1);
}
int FString::GetMaxLineWidth()
{
	int i;
	int MaxWidth=1;
	int Width;
	for(i=1;i<=GetTotalLine();i++)
	{
		Width=GetLineWidth(i);
		if(Width>MaxWidth) MaxWidth=Width;
	}
	return MaxWidth;
}
int FString::GetPos(int line,int column)
{
	int Column=0;
	for(int i=Line.Get(line-1);i<=Line.Get(line);i++)
	{
		Column++;
		if(column==Column)
			return i;
	}
	return 0;
}
int FString::GetTotalLine()
{
//	int i;
//	int Line=1;
//	for(i=0;i<Length;i++)
//		if(*(Str+i)==0x0a)
//			Line++;
	return Line.GetLength()-1;
}
int FString::GetTotalByte()
{
	int TotalByte=0;
	for(int i=1;i<GetTotalLine();i++)
		TotalByte+=GetLineWidth(i);
	return TotalByte;
}
char* FString::GetSelect()
{
	if(SelLength<Sel.GetLength())
		SelLength=Sel.GetLength();

	SelChar=(char*)realloc(SelChar,SelLength+1);
	for(int i=Sel.GetStart();i<Sel.GetEnd();i++)
		*(SelChar+(i-Sel.GetStart()))=*(Str+i);
	*(SelChar+(i-Sel.GetStart()))='\0';
	return SelChar;
}
char* FString::GetSelectWord(int line,int column)
{
	int i;
	int Pos=GetPos(line,column);
	int SelStart,SelEnd;
	for(i=Pos;i>=0;i--)
		if(*(Str+i)<-95||
			(*(Str+i)>-2&&*(Str+i)<0x41)||
			(*(Str+i)>0x5a&&*(Str+i)<0x61)
			||*(Str+i)>0x7a)
		{
			if(*(Str+i)!='_')
				break;
		}
	SelStart=i+1;
	for(i=Pos;i<Length;i++)
		if(*(Str+i)<-95||
			(*(Str+i)>-2&&*(Str+i)<0x41)||
			(*(Str+i)>0x5a&&*(Str+i)<0x61)
			||*(Str+i)>0x7a)
		{
			if(*(Str+i)!='_')
				break;
		}
	SelEnd=i;

	if(*(Str+Pos)<-95||
			(*(Str+Pos)>-2&&*(Str+Pos)<0x41)||
			(*(Str+Pos)>0x5a&&*(Str+Pos)<0x61)
			||*(Str+Pos)>0x7a)
	{
		if(*(Str+Pos)!='_')
		{
			SelStart=Pos;
			SelEnd=Pos+1;
		}
	}

	if(WordLength<SelEnd-SelStart)
	{
		WordLength=SelEnd-SelStart;
		Word=(char*)realloc(Word,WordLength+1);
	}
	for(i=SelStart;i<SelEnd;i++)
		*(Word+(i-SelStart))=*(Str+i);
	*(Word+(i-SelStart))='\0';

	return Word;
}
void FString::Inflate()
{
	char* newStr;
	BufferSize+=STR_INCRE;
	newStr=(char*)realloc(Str,BufferSize);
	assert(newStr);
	Str=newStr;
}
void FString::Insert(char c,bool UndoFlag)
{
	if(Length==BufferSize)
		Inflate();
	for(int i=Length;i>Cur;i--)
		*(Str+i)=*(Str+i-1);
	*(Str+Cur)=c;
	if(UndoFlag)
	{
		undo.SetMax(Openum);
		undo.add(Undo(Cur,1,OPE_INSERT,0,c));
		Openum++;
	}
	Cur++;
	Length++;
	SetLine();
}
void FString::Insert(char* str,bool UndoFlag)
{
	int StrLen;
	int i;

	StrLen=strlen(str);
				
	while(Length+StrLen>BufferSize) Inflate();

	for(i=Length+StrLen-1;i>Cur+StrLen-1;i--)
		*(Str+i)=*(Str+i-StrLen);

	for(i=0;i<StrLen;i++)
		*(Str+Cur+i)=*(str+i);

	if(UndoFlag)
	{
		undo.SetMax(Openum);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美videossexotv100| 国产成人免费视频网站 | 亚洲自拍偷拍图区| 91久久免费观看| 亚洲国产aⅴ成人精品无吗| 欧美三级视频在线播放| 性欧美疯狂xxxxbbbb| 日韩色在线观看| 国产精品一卡二卡在线观看| 中文字幕精品—区二区四季| 91麻豆.com| 麻豆久久久久久久| 欧美极品美女视频| 欧洲精品在线观看| 麻豆极品一区二区三区| 久久久久久免费毛片精品| 成人av电影在线网| 性做久久久久久免费观看| 久久综合精品国产一区二区三区| 国产福利一区二区三区视频在线| 中文字幕中文字幕在线一区| 欧美男人的天堂一二区| 精品一区二区免费看| 中文字幕制服丝袜一区二区三区| 色哟哟日韩精品| 日本vs亚洲vs韩国一区三区二区 | 91麻豆swag| 毛片av中文字幕一区二区| 国产精品麻豆久久久| 欧美影视一区二区三区| 国产在线不卡一区| 一区二区三区日韩精品| www久久精品| 欧美调教femdomvk| 国产91对白在线观看九色| 亚洲成在线观看| 国产精品欧美久久久久一区二区| 欧美日韩一区二区三区不卡| 成人永久aaa| 五月综合激情网| 亚洲男人都懂的| 国产无一区二区| 日韩欧美一区二区免费| 99视频在线精品| 国产精品99久久久久久似苏梦涵 | 亚洲美女屁股眼交3| 久久亚洲欧美国产精品乐播| 欧洲一区二区av| 成人深夜视频在线观看| 久久精品国产亚洲aⅴ| 亚洲精品水蜜桃| 国产精品色呦呦| 欧美刺激脚交jootjob| 在线观看精品一区| 99视频精品免费视频| 国产成人在线网站| 美国一区二区三区在线播放| 亚洲va欧美va天堂v国产综合| 国产精品无码永久免费888| 欧美mv日韩mv国产网站| 欧美男男青年gay1069videost| 成人动漫视频在线| 大尺度一区二区| 国产精品综合一区二区三区| 美洲天堂一区二卡三卡四卡视频 | 91蜜桃免费观看视频| 国产不卡免费视频| 国产一区二区不卡在线| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日本一区二区高清| 精品99一区二区三区| 欧美一级二级三级乱码| 91精品中文字幕一区二区三区| 在线观看一区日韩| 欧美曰成人黄网| 色美美综合视频| 在线精品视频一区二区| 欧美在线观看一二区| 在线区一区二视频| 欧美色倩网站大全免费| 精品视频1区2区3区| 欧美久久久久久久久久| 欧美一级艳片视频免费观看| 欧美一级二级在线观看| 精品剧情在线观看| 久久一日本道色综合| 欧美国产日韩一二三区| 国产精品久久久久久妇女6080| 日韩理论片网站| 亚洲综合色婷婷| 日日摸夜夜添夜夜添亚洲女人| 免费观看久久久4p| 国产精品亚洲专一区二区三区 | 亚洲精品欧美综合四区| 亚洲一级不卡视频| 日韩国产一二三区| 韩国成人在线视频| 成人做爰69片免费看网站| 成人高清视频在线观看| 欧美主播一区二区三区美女| 欧美另类videos死尸| 精品美女在线播放| 亚洲欧洲在线观看av| 亚洲国产精品欧美一二99| 六月丁香婷婷色狠狠久久| 成人午夜电影网站| 欧美中文字幕一区二区三区亚洲 | 久久日韩精品一区二区五区| 国产精品天天看| 亚洲一区二区视频在线观看| 捆绑紧缚一区二区三区视频| 成人自拍视频在线观看| 欧美日韩中文字幕一区二区| 日韩视频不卡中文| 亚洲女子a中天字幕| 麻豆精品久久久| 91精彩视频在线观看| 欧美α欧美αv大片| 国产精品超碰97尤物18| 另类欧美日韩国产在线| 一本色道**综合亚洲精品蜜桃冫| 91精品国产欧美日韩| 国产精品国产三级国产aⅴ入口| 一区二区三区欧美激情| 国产在线播放一区二区三区| 色吧成人激情小说| 久久久亚洲精品一区二区三区| 亚洲猫色日本管| 国产一区二区三区香蕉| 欧美三级韩国三级日本一级| 国产精品免费视频网站| 奇米影视一区二区三区小说| 91在线精品秘密一区二区| 精品免费视频一区二区| 亚洲国产精品视频| 91网站在线观看视频| 久久久久久亚洲综合影院红桃| 天堂va蜜桃一区二区三区漫画版| www.成人在线| 久久综合999| 秋霞午夜av一区二区三区| 在线看日本不卡| 综合分类小说区另类春色亚洲小说欧美 | 一区二区三区在线视频观看| 国产伦精品一区二区三区免费 | 99视频热这里只有精品免费| 久久久久久久网| 日本视频一区二区| 欧美性受xxxx黑人xyx性爽| 综合久久久久综合| 豆国产96在线|亚洲| 久久色.com| 国产精品一二三在| 久久综合色一综合色88| 久久精品国产免费| 日韩欧美亚洲国产精品字幕久久久| 亚洲一区二区三区四区五区黄| 9色porny自拍视频一区二区| 国产精品美女久久久久久久 | 日韩欧美国产精品| 偷窥少妇高潮呻吟av久久免费| 欧美性色欧美a在线播放| 一区二区三区欧美日| 欧美中文字幕不卡| 洋洋av久久久久久久一区| 91国产成人在线| 亚洲一区二区三区自拍| 欧美日韩视频在线观看一区二区三区| 亚洲美女视频一区| 欧美日韩精品一区二区三区| 舔着乳尖日韩一区| 欧美一区二区三区日韩| 看电影不卡的网站| 久久色中文字幕| 波多野结衣中文一区| 亚洲人成精品久久久久久| 日本高清不卡一区| 污片在线观看一区二区| 欧美成人女星排名| 国产成人精品免费网站| 国产精品久久免费看| 色婷婷综合在线| 日韩精品色哟哟| 欧美mv和日韩mv的网站| 国产精品一区二区久久精品爱涩| 久久九九全国免费| 色综合天天综合网天天狠天天| 亚洲老妇xxxxxx| 日韩写真欧美这视频| 国产成人精品影视| 一区二区在线免费观看| 欧美日韩aaaaa| 国产剧情在线观看一区二区| 中文字幕日本乱码精品影院| 欧美亚洲综合色| 国产在线视视频有精品| 综合中文字幕亚洲| 日韩欧美国产不卡| 99久久久久免费精品国产 | 蜜臀av性久久久久蜜臀aⅴ流畅|