mummy  1.0.2
MummyLineOrientedTextFileReader.h
Go to the documentation of this file.
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_