Граф наследования: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 |
1.3