mummy
1.0.2
|
00001 //---------------------------------------------------------------------------- 00002 // MummyLineOrientedTextFileReader.h 00003 // 00004 // Author(s) : David Cole 00005 // 00006 // Copyright (C) 2007 Kitware, Inc. 00007 //---------------------------------------------------------------------------- 00008 00009 #ifndef _MummyLineOrientedTextFileReader_h_ 00010 #define _MummyLineOrientedTextFileReader_h_ 00011 00012 #include "MummyUtilities.h" // first mummy include for root classes 00013 00014 #include "gxsys/stl/string" 00015 #include "gxsys/stl/vector" 00016 00017 00018 //---------------------------------------------------------------------------- 00024 class LineData 00025 { 00026 public: 00027 LineData(const gxsys_stl::string &line, const bool isLineComment, const int btxEtxLevel) : 00028 Line(line), IsLineComment(isLineComment), BtxEtxLevel(btxEtxLevel) 00029 { 00030 } 00031 00032 gxsys_stl::string Line; 00033 bool IsLineComment; 00034 int BtxEtxLevel; 00035 }; 00036 00037 00038 //---------------------------------------------------------------------------- 00045 class MummyLineOrientedTextFileReader 00046 { 00047 public: 00048 MummyLineOrientedTextFileReader(); 00049 virtual ~MummyLineOrientedTextFileReader(); 00050 00051 //-------------------------------------------------------------------------- 00056 virtual gxsys_stl::string GetFileName(); 00057 00058 //-------------------------------------------------------------------------- 00063 virtual void SetFileName(const char *filename); 00064 00065 //-------------------------------------------------------------------------- 00071 virtual bool GetExcludeMarkedLines(); 00072 00073 //-------------------------------------------------------------------------- 00079 virtual void SetExcludeMarkedLines(bool excludeMarkedLines); 00080 00081 //-------------------------------------------------------------------------- 00087 virtual gxsys_stl::string GetBeginExcludeRegex(); 00088 00089 //-------------------------------------------------------------------------- 00097 virtual void SetBeginExcludeRegex(const gxsys_stl::string& beginExcludeRegex); 00098 00099 //-------------------------------------------------------------------------- 00105 virtual gxsys_stl::string GetEndExcludeRegex(); 00106 00107 //-------------------------------------------------------------------------- 00115 virtual void SetEndExcludeRegex(const gxsys_stl::string& endExcludeRegex); 00116 00117 //-------------------------------------------------------------------------- 00126 virtual void Update(); 00127 00128 //-------------------------------------------------------------------------- 00133 virtual unsigned int GetNumberOfLines(); 00134 00135 //-------------------------------------------------------------------------- 00143 virtual gxsys_stl::string GetLine(unsigned int lineNumber); 00144 00145 //-------------------------------------------------------------------------- 00152 virtual bool GetIsLineComment(unsigned int lineNumber); 00153 00154 //-------------------------------------------------------------------------- 00164 virtual int GetBtxEtxLevel(unsigned int lineNumber); 00165 00166 //-------------------------------------------------------------------------- 00174 virtual bool IsLineExcluded(unsigned int lineNumber); 00175 00176 //-------------------------------------------------------------------------- 00185 00186 virtual void GetCommentBlockBefore(unsigned int lineNumber, gxsys_stl::vector<gxsys_stl::string>& block, unsigned int smallestAcceptableLineNumber); 00187 00188 //-------------------------------------------------------------------------- 00193 virtual void GetFirstCommentBlock(gxsys_stl::vector<gxsys_stl::string>& block); 00194 00195 private: 00196 gxsys_stl::string FileName; 00197 gxsys_stl::vector<LineData> Lines; 00198 bool ExcludeMarkedLines; 00199 gxsys_stl::string BeginExcludeRegex; 00200 gxsys_stl::string EndExcludeRegex; 00201 }; 00202 00203 #endif // _MummyLineOrientedTextFileReader_h_