?? intepretor.h
字號:
}
~TB_Select_Info(){delete ColumnHead;delete ConditionHead;}
};
//插入的記錄的其中一個字段信息
typedef struct TInsert_Column *pIns_Col;
typedef struct TInsert_Column
{
char ColumnName[NAMEMAXLEN]; //字段名
Column_Type ColType; //此字段的類型
COLVAL value;
TInsert_Column* next; //下一個字段信息
TInsert_Column(char* str,Column_Type coltype,COLVAL val):
ColType(coltype),value(val) {strcpy(ColumnName,str);
next = NULL;}
~TInsert_Column(){delete next;}
}Insert_Column;
//插入的記錄
class TB_Insert_Info
{
public:
TB_Insert_Info(char* tbname,pIns_Col phead,int ival):head(phead),ColumnNum(ival){strcpy(TableName,tbname);}
char TableName[NAMEMAXLEN]; //所要插入的表名
Insert_Column* head; //所有字段信息鏈表
int ColumnNum; //鏈表長度
~TB_Insert_Info(){delete head;}
};
//修改的記錄的其中一個字段信息
typedef struct TUpdate_Column *pUpd_Col;
typedef struct TUpdate_Column
{
char ColumnName[NAMEMAXLEN]; //字段名
Column_Type ColType; //此字段的類型
COLVAL value; //字段的新值
TUpdate_Column* next; //下一個字段信息
TUpdate_Column(char* colname,Column_Type tcoltype,COLVAL val):
ColType(tcoltype),value(val),next(0)
{strcpy(ColumnName,colname);
}
~TUpdate_Column(){delete next;}
}Update_Column;
//修改信息
class TB_Update_Info
{
public:
TB_Update_Info(char* tbname,Update_Column* colhead,int colnum,pConds condhead,int condnum):
ColumnHead(colhead),ConditionHead(condhead),ColumnNum(colnum),ConditionNum(condnum)
{strcpy(TableName,tbname);}
Update_Column* ColumnHead; //所要修改的字段及其值的鏈表
pConds ConditionHead; //修改的范圍的查詢條件鏈表
int ColumnNum; //字段數(shù)
int ConditionNum; //條件數(shù)
char TableName[NAMEMAXLEN]; //要執(zhí)行修改的表名
~TB_Update_Info(){delete ColumnHead;delete ConditionHead;}
};
//刪除信息
class TB_Delete_Info
{
public:
char TableName[32]; //要進(jìn)行刪除的表名
Delete_Condition* head; //條件鏈表
int ConditionNum; //條件鏈表長度
TB_Delete_Info(char* tbn,Delete_Condition *pdel_cond,int icond):
head(pdel_cond),ConditionNum(icond)
{
strcpy(TableName,tbn);
}
~TB_Delete_Info(){delete head;};
};
//*** 類型說明:這是有關(guān)處理輸入的一個類,包括輸入->有意字串,有意字串->參數(shù)類的組織全在其成員函數(shù)之中
class Ch_csVstrBlk
{
public:
Ch_csVstrBlk();
//對輸入進(jìn)行處理,產(chǎn)生一個有以字串的集合
~Ch_csVstrBlk(){delete strInputCharList;delete StrHead;}
void MakeVstrBlkList();
//** 功能描述: 用于將所有vstrBlk給打印出來
TB_Create_Info* CH_Create();
//** 功能描述:負(fù)責(zé)Create命令的所有操作
TB_Select_Info* CH_Select();
//** 功能描述:負(fù)責(zé)Select命令的所有操作
TB_Insert_Info* CH_Insert();
//** 功能描述:負(fù)責(zé)Insert命令的所有操作
TB_Update_Info* CH_Update();
//** 功能描述:負(fù)責(zé)Update命令的所有操作
TB_Delete_Info* CH_Delete();
//** 功能描述:負(fù)責(zé)Deletc命令的所有操作
ECMD_TYPE ResolveCmd();
//** 功能描述:負(fù)責(zé)判斷第一個有意字串并決定輸入的到底是何命令
void ThrowStrErr(int type,int iNum = 0);
//** 功能描述:負(fù)責(zé)構(gòu)造一個錯誤類并將它拋出來
void PassCommon(char*);
void ChoseDatabase();
//** 功能描述:選擇一個數(shù)據(jù)庫
void DropDB();
//** 功能描述:刪除一個數(shù)據(jù)庫
void DropTB();
//** 功能描述:刪除一個表
void NewDB();
//** 功能描述:創(chuàng)建一個數(shù)據(jù)庫
private:
VSTR_BLK_PTR StrHead;
VSTR_BLK_PTR StrNow;
VSTR_BLK_PTR StrTail;
char* strInputCharList;
int iNumNowInVstr;
//** 功能描述:記錄現(xiàn)在StrNow所指的對象在鏈表中所處的序號(從1開始計(jì)數(shù))
int iLineNum[20][2];
//** 功能描述:記錄輸入的行數(shù)信息,用于出錯時提示,
//如x=iLineNum[i][0]:表示第i行的起始元素在StrHead所指向的鏈表中處于第x個位置(從0開始計(jì))
int sta_i;
//** 功能描述:用于描述對于這一次的命令輸入的處理中當(dāng)前所出的在strInputCharList中的位置,見InString();函數(shù)
char* InitialInput();
//** 功能描述:初始化輸入
char* GetTBName();
//** 功能描述:從StrNow->str中得到所需要的表名
bool InString(char**);
//** 功能描述:在初始化得到的字符串中獲取一個有意字串
void InitialVar();
//** 功能描述:初始化一些特殊的值
void NextStr();
//** 功能描述:跳到下一個有意字串
pCreate_Column GetColumnInfo(bool* NotEnd,bool&);
void GetCheckInfo(bool *NotEnd,pCreate_Column pHead);
//** 功能描述:得到有關(guān)一個列的約束信息
EOPE_TYPE GetOptype();
//** 功能描述:得到一個列的約束的操作類型
pCreate_Column GetColForCheck(char* str,pCreate_Column pHead);
//** 功能描述:得到有關(guān)一個列的約束類型,是 enum Operator_Type {B, BE, L, LE, E, NE,BETWEEN} 中的一種
void SetMin_Max(COLVAL& min,COLVAL& max,EOPE_TYPE optype,ECOL_TYPE coltype,bool next = 1);
//** 功能描述:根據(jù)optype給min和max賦值,當(dāng)前StrNow必須處在處理的有意字串上
void SetMin_Max(COLVAL temp,COLVAL& min,COLVAL& max,EOPE_TYPE optype,ECOL_TYPE coltype);
//** 功能描述:重載SetMin_Max,利用temp的值配合optype和coltype來給min和max賦值
void SetColValFStr(ECOL_TYPE& coltype,COLVAL& tColval,bool next = 1);
//** 功能描述:得到有關(guān)一個輸入的字串為和類型(I,C,F)及對相應(yīng)的tColVal賦值
pSel_Col GetSelColList(int& iColNum);
//** 功能描述:得到select中關(guān)于字段(列名)的列表
pSel_Cond GetCondList(int& iCondNum);
//** 功能描述:得到select,update,delete,insert中有關(guān)條件的描述信息的列表
pIns_Col GetInsValList(int& iValNum);
//** 功能描述:得到一個有關(guān)Insert函數(shù)中所有的輸入的值得鏈表
pUpd_Col GetUpdColList(int &iColNum);
//** 功能描述:得到Update中關(guān)于字段(列名)及其值的列表
};
/***********************類定義***********************/
/***********************函數(shù)聲明***********************/
// enum MSG { CREATE, SELECT, INSERT, UPDATE, DELETE, DROP, QUIT} ;
ECMD_TYPE GetCommand(TB_Create_Info**,TB_Select_Info**,TB_Insert_Info**,TB_Update_Info**,TB_Delete_Info**);
//** 功能描述:該模塊的主函數(shù),負(fù)責(zé)所有操作
char ChUpToLowCase(char);
//** 功能描述:將一個大寫字母換成小寫,否則原樣返回
char* FilterQuota(char* strin);
//** 功能描述:負(fù)責(zé)將一個字符串中的單引號過濾,如FilterQuota("'abc'") == "abc"
bool CompStrEver(char* str1,char* str2);
//** 功能描述:比較兩個字符串是否相等,忽略大小寫,return 1--相同,0---不同
void SaveKeyChar(char* str,int* index,char In);
//** 功能描述:保存關(guān)鍵的由于辨別有意字串的關(guān)鍵字符,如回車,在InitialInput()中調(diào)用
void SetCurLocation(char* str);
//將當(dāng)前的路徑設(shè)置好
void SetCurRelation(char* str);
//將當(dāng)前的表名設(shè)置好
void ShowHelp();
//顯示幫助信息
void QuitSQL();
//退出MiniSQL
void ShowMsg();
//在屏幕上打印消息
void GnlTrwErr(int);
//Generally Throw the Errors,一般性錯誤,如db不存在
// void ResetDBinfo();
//刪除當(dāng)前正在使用的數(shù)據(jù)庫后對有關(guān)數(shù)據(jù)庫路徑和名稱信息的重新設(shè)置
/***********************函數(shù)聲明***********************/
#endif// INTEPRETOR_HPP
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -