#ifndef _PATEDIT_H #define _PATEDIT_H ////////////////////////////////////////////////////////////////////////////////////////////////////////// //patch描述行内容(起始行),或注释行内容 class TARCH_EXP TPatHead { public: CString name; public: void operator >>(CStdioFile&ar)const{ar.WriteString(name);ar.WriteString(_T("\n"));}//ok void operator <<(const CString&s){name=s;}//ok bool IsEmpty()const{return name.GetLength()==0;}//ok CString FirstName()const//ok,patch的正式名称 { if(name.GetAt(0)!=_T('*')) return name; long i=name.Find(_T(',')); if(i==-1) return name.Right(name.GetLength()-1);//除去* else return name.Mid(1,i-1);//*和,之间 } bool operator >(const TPatHead&n)const{return name>n.name;}//ok bool operator <(const TPatHead&n)const{return name data; void CheckLength();//如果行长度超过80个字符,输出时将在行左边加上(;;?)标志,将提示用户手动调整行长 public: TPatData(){}//ok bool operator >(const TPatData&)const{return false;}//ok bool operator <(const TPatData&)const{return false;}//ok void Scale(double s); void operator>>(CStdioFile&ar); void operator<<(const CString&s); void AppendListCtrl(CListCtrl&list); }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //patch定义段,或一个注释行(此时TPatHead中放置注释内容) //注释不能夹杂于一个patch定义段之中,只能在patch定义段外单独定义!!! class TARCH_EXP TPat { public: TPatHead name; PDList lines; public: TPat(){}//ok TPat(const CString&s){name<(const TPat&pat)const{return name>pat.name;}//ok bool operator <(const TPat&pat)const{return name>(CStdioFile &ar); void Update(CListCtrl& list); }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //pat文件内容 class TARCH_EXP TPats { protected: SPTable pats; public: long Length()const{return pats.GetLength();}//ok TPat& operator[](long i){return pats(i);}//ok long Find(const CString &name){return pats.FindData(TPat(name));}//ok void Reset(){pats.Clear();}//ok void operator<<(CStdioFile&ar); void operator>>(CStdioFile&ar); }; #endif