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

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

?? string.cpp

?? jedit 一個小型java編譯器的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************\
*
*  文件名:    String.cpp
*  目的:	  FString類的實現文件,關于函數用法,請參見string.h
*  使用說明:  FString類是一個對字符串進行操作的類,F的用意是指Free
*			  即任何人都可以修改它為己所用。
*			  在保持此程序完整性的情況下,你可以任意傳播它。你也可以修改它
*			  來為你服務,如果你要將此程序用于商業目的,請告知我。
*
*  CopyLeft	 2002  張元一
*
*  CopyLeft 是自由軟件基金會(FSF)推薦使用的自由軟件的標志
*
\******************************************************************************/
#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);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久精品欧美| 日韩视频在线观看一区二区| 欧美日韩国产高清一区二区| 久久综合色综合88| 亚洲va国产va欧美va观看| 风间由美性色一区二区三区| 日韩美女一区二区三区四区| ...中文天堂在线一区| 精品一区二区三区久久| 欧美乱熟臀69xxxxxx| 亚洲欧美一区二区三区国产精品| 国产一区二区看久久| 欧美一级夜夜爽| 午夜视频一区在线观看| 色老头久久综合| 中文字幕第一区第二区| 久久se这里有精品| 日韩写真欧美这视频| 午夜免费欧美电影| 91麻豆国产福利在线观看| 国产人成一区二区三区影院| 免费精品视频在线| 欧美二区在线观看| 婷婷开心激情综合| 欧洲一区二区三区免费视频| 日韩伦理免费电影| 99精品欧美一区二区三区小说| 国产网红主播福利一区二区| 国产一区二区伦理片| 日本一区二区免费在线| 国产v日产∨综合v精品视频| 久久亚洲一区二区三区四区| 美女视频一区在线观看| 欧美大胆人体bbbb| 国产制服丝袜一区| 国产精品无圣光一区二区| 国产aⅴ精品一区二区三区色成熟| 国产女人18水真多18精品一级做 | 欧美成人精品福利| 免费成人小视频| 欧美va亚洲va| 激情深爱一区二区| 精品国产亚洲一区二区三区在线观看| 日韩精品一卡二卡三卡四卡无卡| 在线免费不卡视频| 亚洲精选在线视频| 97久久精品人人澡人人爽| 国产欧美日韩久久| 成人午夜精品一区二区三区| 日韩欧美在线1卡| 久久精品噜噜噜成人av农村| 911精品产国品一二三产区| 亚洲韩国一区二区三区| 99视频在线精品| 视频一区视频二区中文字幕| 亚洲福利视频导航| 欧美性生交片4| 美女视频黄久久| 欧美tickling挠脚心丨vk| 久久精品国产亚洲aⅴ| 欧美一区二区三区日韩视频| 精品一区二区三区欧美| 国产欧美精品区一区二区三区| 成人免费看视频| 自拍偷拍亚洲综合| 国产不卡一区视频| 亚洲日本欧美天堂| 欧美精品日韩精品| 精品一区精品二区高清| 欧美激情在线一区二区三区| proumb性欧美在线观看| 亚洲男人的天堂在线aⅴ视频 | 精品国产不卡一区二区三区| 国产综合成人久久大片91| 国产日韩av一区| 99精品桃花视频在线观看| 亚洲精品中文字幕乱码三区| 在线一区二区三区四区五区| 日韩精品国产欧美| 久久久精品蜜桃| 91天堂素人约啪| 美女任你摸久久| 国产精品福利影院| 欧美视频三区在线播放| 国产精品12区| 亚洲午夜视频在线| 337p日本欧洲亚洲大胆色噜噜| av电影天堂一区二区在线观看| 亚洲6080在线| 欧美激情一区二区三区全黄| 欧美性受xxxx黑人xyx| 精东粉嫩av免费一区二区三区| 久久久久国色av免费看影院| 奇米777欧美一区二区| 国产精品18久久久久| 亚洲免费观看高清在线观看| 国产日产欧美精品一区二区三区| 欧美又粗又大又爽| 国产成人av影院| 日韩在线一区二区| 亚洲欧美电影一区二区| 日韩精品中文字幕在线不卡尤物| 91丝袜高跟美女视频| 久久99久国产精品黄毛片色诱| 天堂在线一区二区| 亚洲情趣在线观看| 国产午夜精品福利| 日韩一区国产二区欧美三区| 色偷偷久久一区二区三区| 国产乱码精品一区二区三区五月婷| 一区二区三区.www| 欧美国产一区二区| 日韩一级大片在线| 欧美一区二区三区系列电影| 欧美亚日韩国产aⅴ精品中极品| 岛国av在线一区| 国产综合久久久久久鬼色 | 亚洲国产毛片aaaaa无费看| 久久久久国产精品厨房| 91精品国产品国语在线不卡| 色哟哟一区二区三区| 国产不卡高清在线观看视频| 狠狠色综合日日| 免费不卡在线观看| 国产精品初高中害羞小美女文| 欧美国产精品一区| 久久久亚洲午夜电影| 日韩精品一区二区三区在线 | 亚洲国产色一区| 一区二区三区鲁丝不卡| 亚洲男人的天堂av| 一区二区久久久久| 中文字幕国产精品一区二区| 亚洲欧美另类久久久精品| 国产精品久久毛片| 国产精品二三区| 亚洲欧洲性图库| 亚洲精品久久久蜜桃| 亚洲日本在线视频观看| 亚洲激情男女视频| 亚洲三级在线看| 亚洲日本在线a| 一区二区久久久久久| 亚洲成人av免费| 午夜国产精品一区| 日韩中文欧美在线| 久久99久久久久久久久久久| 日本vs亚洲vs韩国一区三区二区 | 欧美日韩mp4| 欧美精选在线播放| 欧美大黄免费观看| 日韩精品中文字幕一区二区三区 | 精品一区在线看| 成人在线综合网站| 91国偷自产一区二区开放时间 | 亚洲色图在线播放| 天天综合色天天综合色h| 天天色综合成人网| 免费欧美在线视频| 国产乱码精品一区二区三区五月婷| 成人av在线网站| 欧美影片第一页| 日韩精品一区二区三区在线观看| 欧美日韩另类一区| 久久欧美一区二区| 亚洲欧美精品午睡沙发| 日韩黄色在线观看| 精品系列免费在线观看| 91美女片黄在线观看91美女| 91一区一区三区| 日韩欧美一区二区三区在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲视频免费观看| 一区二区三区欧美在线观看| 国产一区二区在线观看视频| 99久久综合色| 91精品在线免费| 欧美韩日一区二区三区| 一区二区三区在线免费播放| 蜜桃av一区二区| 99精品视频在线播放观看| 久久久久亚洲综合| 亚洲成人激情社区| 成人精品视频一区二区三区尤物| 欧美日韩一级二级三级| 国产日产精品1区| 日韩电影免费在线观看网站| 成人av在线一区二区三区| 欧美日韩国产在线播放网站| 国产欧美一区二区三区在线看蜜臀 | 国产福利不卡视频| 欧美手机在线视频| 国产精品乱码人人做人人爱| 日韩影院在线观看| 91麻豆蜜桃一区二区三区| 精品国产一区二区亚洲人成毛片| 日韩激情视频网站| 欧美午夜精品一区二区蜜桃| 亚洲国产激情av| 国产一区二区在线影院|