Граф наследования:FindTextImpl:
Открытые члены | |
FindTextImpl () | |
Создает объект, устанавливая начальные значения флагов. | |
Закрытые члены | |
virtual void | search (const std::string &dir, bool recur, const std::string &mask, const std::string &text) |
Выполняет поиск подстроки text в файлах, удовлетворяющих маске mask. | |
virtual void | stopSearch () |
Данная функция предназначена для остановки работы функции search(). | |
virtual Publisher< FoundMsg > & | foundPub () |
Издатель, публикующий сообщения о найденных строках. | |
virtual Publisher< InfoMsg > & | infoPub () |
Издатель, публикующий информационные сообщения о ходе работы. | |
virtual Publisher< ErrorMsg > & | errorPub () |
Издатель, публикующий сообщения о нефатальных ошибках, встреченных по ходу работы. | |
virtual bool | found (const std::string &fileName) |
Данная функция вызывается для каждого найденного файла. | |
bool | readLine (FILE *f, string &str, const std::string &file) |
Читает строку текста из f в str. | |
bool | subscribe (Subscriber< FoundMsg > &sub) |
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. | |
bool | unsubscribe (Subscriber< FoundMsg > &sub) |
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. | |
bool | isSubscribed (Subscriber< FoundMsg > &sub) const |
Возвращает true, если переданный подписчик в настоящее время подписан. | |
int | subCount () const |
Возвращает количество подписанных подписчиков. | |
int | send (const FoundMsg &msg) |
Отправляет переданное сообщение всем подписанным подписчикам, т.е. | |
bool | subscribe (Subscriber< InfoMsg > &sub) |
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. | |
bool | unsubscribe (Subscriber< InfoMsg > &sub) |
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. | |
bool | isSubscribed (Subscriber< InfoMsg > &sub) const |
Возвращает true, если переданный подписчик в настоящее время подписан. | |
int | subCount () const |
Возвращает количество подписанных подписчиков. | |
int | send (const InfoMsg &msg) |
Отправляет переданное сообщение всем подписанным подписчикам, т.е. | |
bool | subscribe (Subscriber< ErrorMsg > &sub) |
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. | |
bool | unsubscribe (Subscriber< ErrorMsg > &sub) |
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. | |
bool | isSubscribed (Subscriber< ErrorMsg > &sub) const |
Возвращает true, если переданный подписчик в настоящее время подписан. | |
int | subCount () const |
Возвращает количество подписанных подписчиков. | |
int | send (const ErrorMsg &msg) |
Отправляет переданное сообщение всем подписанным подписчикам, т.е. | |
Закрытые данные | |
bool | running |
флаг, показывающий выполняется ли в данное время search() | |
bool | shouldStop |
флаг, показывающий, что search() должна остановиться | |
sh_ptr< TextFinder > | txtFnd |
объект для поиска текста в строке | |
Друзья | |
struct | OpenCloseSender |
См. определение в файле findtextimpl.cpp строка 43
|
Создает объект, устанавливая начальные значения флагов.
См. определение в файле findtextimpl.cpp строка 82
00082 : running(0), shouldStop(0) {} |
|
Издатель, публикующий сообщения о нефатальных ошибках, встреченных по ходу работы. В процессе обработки сообщения подписчик может вызвать функцию stopSearch() для прекращения поиска. Замещает FindText. См. определение в файле findtextimpl.cpp строка 146
00147 { 00148 return *this; 00149 } |
|
Данная функция вызывается для каждого найденного файла. Она читает содержимое файла, ищет заданную подстроку и посылает соответствующие сообщения. Замещает FindFileCallback. См. определение в файле findtextimpl.cpp строка 151 Перекрестные ссылки _FLINE_, newCException(), readLine(), Publisher< M >::send(), toCException() и txtFnd.
00152 { 00153 try { 00154 if (shouldStop) return 0; 00155 00156 AutoFILE f(fopen(fileName.c_str(), "r")); 00157 if (!f.get()) { 00158 Publisher<ErrorMsg>::send(ErrorMsg(*this, StringBuf("Can't open \"")+ 00159 fileName+"\": "+strerror(errno))); 00160 return 1; 00161 } 00162 00163 OpenCloseSender ocs(*this, fileName); 00164 00165 string str; 00166 str.reserve(1024); 00167 00168 for (int lineNum=1; readLine(f.get(), str, fileName); lineNum++) { 00169 if (txtFnd->findIn(str)) 00170 Publisher<FoundMsg>::send(FoundMsg(*this, fileName, lineNum, str)); 00171 } 00172 00173 return 1; 00174 } 00175 catch (...) { 00176 throw newCException(_FLINE_, "Can't process \""+fileName+"\"", 00177 toCException(_FLINE_)); 00178 } 00179 } |
|
Издатель, публикующий сообщения о найденных строках. В процессе обработки сообщения подписчик может вызвать функцию stopSearch() для прекращения поиска. Замещает FindText. См. определение в файле findtextimpl.cpp строка 136
00137 { 00138 return *this; 00139 } |
|
Издатель, публикующий информационные сообщения о ходе работы. В процессе обработки сообщения подписчик может вызвать функцию stopSearch() для прекращения поиска. Замещает FindText. См. определение в файле findtextimpl.cpp строка 141
00142 { 00143 return *this; 00144 } |
|
Возвращает true, если переданный подписчик в настоящее время подписан.
См. определение в файле pubsub.hpp строка 107
00108 {
00109 return impl.isSubscribed(&sub);
00110 }
|
|
Возвращает true, если переданный подписчик в настоящее время подписан.
См. определение в файле pubsub.hpp строка 107
00108 {
00109 return impl.isSubscribed(&sub);
00110 }
|
|
Возвращает true, если переданный подписчик в настоящее время подписан.
См. определение в файле pubsub.hpp строка 107
00108 {
00109 return impl.isSubscribed(&sub);
00110 }
|
|
Читает строку текста из f в str. При обнаружении ошибки чтения посылает сообщение ErrorMsg. Возвращает false по EOF или ошибке. См. определение в файле findtextimpl.cpp строка 181 Перекрестные ссылки Publisher< M >::send(). Используется в found().
00182 { 00183 if (feof(f)) return 0; 00184 str.clear(); 00185 00186 for (int ch; ; ) { 00187 switch (ch=fgetc(f)) { 00188 case EOF: { 00189 if (ferror(f)) { 00190 Publisher<ErrorMsg>::send(ErrorMsg(*this, 00191 StringBuf("Can't read from \"")+file+"\": "+ 00192 strerror(errno))); 00193 return 0; 00194 } 00195 00196 return (str.size()) ? 1 : 0; 00197 } 00198 case '\n': return 1; 00199 default: { 00200 str.push_back(ch); 00201 break; 00202 } 00203 } 00204 } 00205 } |
|
Выполняет поиск подстроки text в файлах, удовлетворяющих маске mask. Поиск производится в директории dir и, если задан флаг recur, во всех ее поддиректориях. В процессе работы происходит рассылка сообщений, на которые можно подписаться с помощью соответствующих издателей. Возбуждает CException в случае обнаружения фатальных ошибок. Замещает FindText. См. определение в файле findtextimpl.cpp строка 109 Перекрестные ссылки _FLINE_, newCException(), Factory::newFindFile(), Factory::newTextFinder(), running, shouldStop, toCException() и txtFnd.
00111 { 00112 try { 00113 if (running) 00114 throw newCException(_FLINE_, "search() already running"); 00115 running=1; 00116 00117 AutoFlag autoRunning(running); 00118 AutoFlag autoShouldStop(shouldStop); 00119 00120 txtFnd=Factory::newTextFinder(text); 00121 00122 sh_ptr<FindFile> ff=Factory::newFindFile(); 00123 ff->find(dir, recur, mask, *this); 00124 } 00125 catch (...) { 00126 throw newCException(_FLINE_, "Can't search", toCException(_FLINE_)); 00127 } 00128 } |
|
Отправляет переданное сообщение всем подписанным подписчикам, т.е. вызывается функция regularMsg() каждого из них. Если regularMsg() вернет false, то подписчик будет сразу же отписан -- именно поэтому send() не является const функцией. Возвращает количество подписчиков, получивших сообщение. |
|
Отправляет переданное сообщение всем подписанным подписчикам, т.е. вызывается функция regularMsg() каждого из них. Если regularMsg() вернет false, то подписчик будет сразу же отписан -- именно поэтому send() не является const функцией. Возвращает количество подписчиков, получивших сообщение. |
|
Отправляет переданное сообщение всем подписанным подписчикам, т.е. вызывается функция regularMsg() каждого из них. Если regularMsg() вернет false, то подписчик будет сразу же отписан -- именно поэтому send() не является const функцией. Возвращает количество подписчиков, получивших сообщение. |
|
Данная функция предназначена для остановки работы функции search(). Она может быть вызвана только в процессе обработки сообщения. При обнаружении ошибок возбуждает CException. Замещает FindText. См. определение в файле findtextimpl.cpp строка 130 Перекрестные ссылки _FLINE_, newCException(), running и shouldStop.
00131 { 00132 if (!running) throw newCException(_FLINE_, "search() isn't running"); 00133 shouldStop=1; 00134 } |
|
Возвращает количество подписанных подписчиков.
См. определение в файле pubsub.hpp строка 115
00115 { return impl.subCount(); }
|
|
Возвращает количество подписанных подписчиков.
См. определение в файле pubsub.hpp строка 115
00115 { return impl.subCount(); }
|
|
Возвращает количество подписанных подписчиков.
См. определение в файле pubsub.hpp строка 115
00115 { return impl.subCount(); }
|
|
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. вызывается его функция subscribedMsg(). Возвращает false, если он уже был подписан. |
|
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. вызывается его функция subscribedMsg(). Возвращает false, если он уже был подписан. |
|
Подписывает переданного подписчика (если он еще не был подписан) и передает ему сообщение о подписке, т.е. вызывается его функция subscribedMsg(). Возвращает false, если он уже был подписан. |
|
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. вызывается его функция unsubscribedMsg(). Возвращает false, если подписчик не был подписан. |
|
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. вызывается его функция unsubscribedMsg(). Возвращает false, если подписчик не был подписан. |
|
Отменяет подписку переданного подписчика (если он был подписан) и передает ему сообщение о прекращении подписки, т.е. вызывается его функция unsubscribedMsg(). Возвращает false, если подписчик не был подписан. |
|
флаг, показывающий выполняется ли в данное время search()
См. определение в файле findtextimpl.cpp строка 48 Используется в search() и stopSearch(). |
|
флаг, показывающий, что search() должна остановиться
См. определение в файле findtextimpl.cpp строка 50 Используется в search() и stopSearch(). |
|
объект для поиска текста в строке
См. определение в файле findtextimpl.cpp строка 52 |