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