Main Page | Class Hierarchy | Class List | Directories | File List | Class Members

rplPattern.h

00001 #ifndef RPLPATTERN_H
00002 #define RPLPATTERN_H
00003 
00004 #include "config.h"
00005 #include "doomed.h"
00006 #include <string>
00007 #include <set>
00008 #include "traceString.h"
00009 #include <stdio.h>
00010 
00011 class Options;
00012 class IO;
00013 //====================================================
00027 //====================================================
00028 class RplPattern
00029 {
00031   enum ListType_t {NONE, ACTIVE, INACTIVE}; 
00032 
00033  public:
00034   //====================================================
00040   //====================================================
00041   static RplPattern& instance()
00042   {
00043     assert(msp_rplPattern && "Failed to call RplPattern::build()");
00044     return *msp_rplPattern;
00045   }
00046 
00047   //====================================================
00051   //====================================================
00052   static void build()
00053   {
00054     if (msp_rplPattern != 0)
00055       return;
00056     msp_rplPattern = new RplPattern();
00057     ms_destroyer.setDoomed(msp_rplPattern);
00058   }
00059 
00060   //====================================================
00064   //====================================================
00065   ~RplPattern();
00066 
00067 
00068   //====================================================
00085   //====================================================
00086   void replace(Tbl& dict, std::string& ts, std::string& leadwspc);
00087 
00088   //====================================================
00102   //====================================================
00103   void replace(Tbl& dict, std::string& ts, std::string& leadwspc, 
00104                std::string& rtnStr);
00105 
00106 
00107  private:
00108   //====================================================
00117   //====================================================
00118   RplPattern();
00119 
00120   RplPattern(const RplPattern&);            
00121   RplPattern& operator=(const RplPattern&); 
00122   
00123 
00124  private:
00125   //====================================================
00133   //====================================================
00134   void findPattern(Tbl& tbl, std::string& ts, std::string& pat);
00135 
00136   //====================================================
00141   //====================================================
00142   void buildPatternTbl(std::string& line, Tbl& tbl);
00143 
00144   //====================================================
00148   //====================================================
00149   void add2dict(std::string& args, Tbl& tbl);
00150 
00151   //====================================================
00155   //====================================================
00156   void buildList(ListType_t listType, const char* fn);
00157 
00158 
00159   //====================================================
00163   //====================================================
00164   Tbl              m_startPatternTbl;
00165 
00166   //====================================================
00170   //====================================================
00171   Tbl              m_endPatternTbl;
00172 
00173   //====================================================
00179   //====================================================
00180   STD(set)<std::string> m_routineList;
00181 
00182   //====================================================
00187   //====================================================
00188   ListType_t       m_listType;
00189 
00190   //====================================================
00194   //====================================================
00195   int              m_remove;
00196 
00197 
00198   //====================================================
00202   //====================================================
00203   static RplPattern* msp_rplPattern;
00204 
00205   //====================================================
00209   //====================================================
00210   static SingletonDestroyer<RplPattern> ms_destroyer;
00211 
00212 };
00213 
00214 
00215 void removeComment(std::string& line);
00216 
00217 void strip(std::string& s);
00218 
00219 void rstrip(std::string& s);
00220 
00221 
00222 #endif //RPLPATTERN_H
00223 
00224 



Project Hosted By:
SourceForge.net Logo