Титульная страница   Пространства имен   Иерархия классов   Алфавитный указатель   Классы   Файлы   Члены пространства имен   Члены классов   Члены файла  

findtext.hpp

См. документацию.
00001 /*
00002  * Copyright (C) Sergey P. Derevyago, 2003-2004.
00003  *
00004  * Permission to copy, use, modify, sell and distribute this software is granted
00005  * provided this copyright notice appears in all copies.
00006  * This software is provided "as is" without express or implied warranty, and
00007  * with no claim as to its suitability for any purpose.
00008  *
00009  */
00010 
00015 #ifndef __FINDTEXT_HPP__
00016  #define __FINDTEXT_HPP__
00017 
00018 #include "pubsub.hpp"
00019 #include "cexception.hpp"
00020 
00021 // некоторые реализации определяют макрос FindText, который приходится явным
00022 // образом отменять для успешной компиляции
00023 #undef FindText
00024 
00025 class FindText;
00026 
00033 struct MsgBase {
00035        FindText& ft;
00036 
00040        MsgBase(FindText& ft_) : ft(ft_) {}
00041 };
00042 
00047 struct FoundMsg : MsgBase {
00049        const std::string fileName;
00051        const int lineNum;
00053        const std::string lineText;
00054 
00058        FoundMsg(FindText& ft, const std::string& file, int num,
00059          const std::string& txt) : MsgBase(ft), fileName(file), lineNum(num),
00060          lineText(txt) {}
00061 };
00062 
00067 struct InfoMsg : MsgBase {
00069        enum Type { opened, closed };
00070 
00072        const Type type;
00074        const std::string fileName;
00075 
00079        InfoMsg(FindText& ft, Type t, const std::string& fn) : MsgBase(ft),
00080          type(t), fileName(fn) {}
00081 };
00082 
00088 struct ErrorMsg : MsgBase {
00090        const std::string errMsg;
00091 
00095        ErrorMsg(FindText& ft, const std::string& err) : MsgBase(ft), errMsg(err)
00096          {}
00097 };
00098 
00105 class FindText {
00106  public:
00114       virtual void search(const std::string& dir, bool recur,
00115         const std::string& mask, const std::string& text)=0;
00116 
00122       virtual void stopSearch()=0;
00123 
00129       virtual Publisher<FoundMsg>& foundPub()=0;
00130 
00136       virtual Publisher<InfoMsg>& infoPub()=0;
00137 
00143       virtual Publisher<ErrorMsg>& errorPub()=0;
00144 
00148       virtual ~FindText() {}
00149 
00150  private:
00152       FindText& operator=(const FindText&);
00153 };
00154 
00158 namespace Factory {
00159 
00164  sh_ptr<FindText> newFindText();
00165 
00166 }
00167 
00168 #endif

Документация по ftext. Последние изменения: Sat Mar 20 17:58:15 2004. Создано системой doxygen1.3