+#include <msp/core/algorithm.h>
+#include <msp/core/except.h>
#include "filemonitor.h"
#include "filemonitor_platform.h"
namespace FS {
FileMonitor::FileMonitor():
- priv(new Private(*this)),
- event_disp(0)
+ priv(new Private(*this))
{ }
FileMonitor::~FileMonitor()
void FileMonitor::use_event_dispatcher(IO::EventDispatcher &ed)
{
if(event_disp)
- throw logic_error("event_disp!=0");
+ throw already_called("FileMonitor::use_event_dispatcher");
event_disp = &ed;
platform_use_event_dispatcher();
{
MonitoredFile file;
file.path = path;
- file.modified = false;
prepare_file(file);
files.push_back(file);
}
void FileMonitor::remove_file(const FS::Path &path)
{
- for(vector<MonitoredFile>::iterator i=files.begin(); i!=files.end(); ++i)
- if(i->path==path)
- {
- cleanup_file(*i);
- if(&*i!=&files.back())
- *i = files.back();
- files.pop_back();
- break;
- }
+ auto i = find_member(files, path, &MonitoredFile::path);
+ if(i!=files.end())
+ {
+ cleanup_file(*i);
+ if(&*i!=&files.back())
+ *i = files.back();
+ files.pop_back();
+ }
}
} // namespace FS