00001 // ===================================================================== 00021 // ===================================================================== 00022 #ifndef __TMACROFILEPARSER_HH 00023 #define __TMACROFILEPARSER_HH 00024 00025 #include "Tglobals.h" 00026 00027 00047 class TMacroFileParser 00048 { 00049 00050 private: 00051 Tstring theMacroFileName; 00052 TstringList theCommentStringList; 00053 Tifstream theMacroFileStream; 00054 00055 public: 00056 TMacroFileParser(); 00057 TMacroFileParser( const Tstring& input ); 00058 TMacroFileParser( const Tstring& input, const TstringList& comment ); 00059 TMacroFileParser( const TMacroFileParser& right ); 00060 ~TMacroFileParser(); 00061 00062 public: 00063 Tvoid Open(); 00064 Tvoid Open( const Tstring& filename ); 00065 Tbool IsOpen(); 00066 Tbool IsGood() const; 00067 Tbool IsFail() const; 00068 Tbool IsEndOfFile() const; 00069 Tbool IsSuccess(); 00070 Tvoid Close(); 00071 TstringList ReadLine(); 00072 Tbool IsExecutable( const TstringList& readbuf ) const; 00073 Tstring GetCommand( const TstringList& readbuf ) const; 00074 TstringList GetArguments( const TstringList& readbuf ) const; 00075 00076 public: 00077 const Tstring& GetMacroFileName() const; 00078 Tvoid SetMacroFileName( const Tstring& filename ); 00079 const TstringList& GetCommentStringList() const; 00080 TstringList GetCommentStringList(); 00081 Tvoid SetCommentStringList( const TstringList& list ); 00082 Tifstream& GetMacroFileStream(); 00083 00084 private: 00085 Tvoid checkFileStream(); 00086 TstringList divideLine( Tstring& readline ) const; 00087 const Tstring& eraseComment( Tstring& readline ) const; 00088 00089 }; 00090 00091 inline const Tstring& TMacroFileParser::GetMacroFileName() const 00092 { 00093 return theMacroFileName; 00094 } 00095 00096 inline Tvoid TMacroFileParser::SetMacroFileName( const Tstring& filename ) 00097 { 00098 theMacroFileName = filename; 00099 return; 00100 } 00101 00102 inline const TstringList& TMacroFileParser::GetCommentStringList() const 00103 { 00104 return theCommentStringList; 00105 } 00106 00107 inline TstringList TMacroFileParser::GetCommentStringList() 00108 { 00109 return theCommentStringList; 00110 } 00111 00112 inline Tvoid TMacroFileParser::SetCommentStringList( const TstringList& list ) 00113 { 00114 theCommentStringList = list; 00115 return; 00116 } 00117 00118 inline Tifstream& TMacroFileParser::GetMacroFileStream() 00119 { 00120 return theMacroFileStream; 00121 } 00122 00123 00124 #endif