mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-12 17:19:10 +01:00
d14efe561b
long become wxWidgets 2.9.2, which in turn is expected to be the last 2.9 release before the 3.0 stable release. Since the full wxWidgets distribution is rather large, I have imported only the parts that we use, on a subdirectory basis: art include/wx/*.* include/wx/aui include/wx/cocoa include/wx/generic include/wx/gtk include/wx/meta include/wx/msw include/wx/osx include/wx/persist include/wx/private include/wx/protocol include/wx/unix src/aui src/common src/generic src/gtk src/msw src/osx src/unix git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7380 8ced0084-cf51-0410-be5f-012b33b47a6e
93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/private/fswatcher.h
|
|
// Purpose: File system watcher impl classes
|
|
// Author: Bartosz Bekier
|
|
// Created: 2009-05-26
|
|
// RCS-ID: $Id: fswatcher.h 62475 2009-10-22 11:36:35Z VZ $
|
|
// Copyright: (c) 2009 Bartosz Bekier <bartosz.bekier@gmail.com>
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef WX_PRIVATE_FSWATCHER_H_
|
|
#define WX_PRIVATE_FSWATCHER_H_
|
|
|
|
#include "wx/sharedptr.h"
|
|
|
|
#ifdef wxHAS_INOTIFY
|
|
class wxFSWatchEntryUnix;
|
|
#define wxFSWatchEntry wxFSWatchEntryUnix
|
|
WX_DECLARE_STRING_HASH_MAP(wxSharedPtr<wxFSWatchEntry>,wxFSWatchEntries);
|
|
#include "wx/unix/private/fswatcher_inotify.h"
|
|
#elif defined(wxHAS_KQUEUE)
|
|
class wxFSWatchEntryKq;
|
|
#define wxFSWatchEntry wxFSWatchEntryKq
|
|
WX_DECLARE_STRING_HASH_MAP(wxSharedPtr<wxFSWatchEntry>,wxFSWatchEntries);
|
|
#include "wx/unix/private/fswatcher_kqueue.h"
|
|
#elif defined(__WXMSW__)
|
|
class wxFSWatchEntryMSW;
|
|
#define wxFSWatchEntry wxFSWatchEntryMSW
|
|
WX_DECLARE_STRING_HASH_MAP(wxSharedPtr<wxFSWatchEntry>,wxFSWatchEntries);
|
|
#include "wx/msw/private/fswatcher.h"
|
|
#else
|
|
#define wxFSWatchEntry wxFSWatchEntryPolling
|
|
#endif
|
|
|
|
class wxFSWatcherImpl
|
|
{
|
|
public:
|
|
wxFSWatcherImpl(wxFileSystemWatcherBase* watcher) :
|
|
m_watcher(watcher)
|
|
{
|
|
}
|
|
|
|
virtual ~wxFSWatcherImpl()
|
|
{
|
|
(void) RemoveAll();
|
|
}
|
|
|
|
virtual bool Init() = 0;
|
|
|
|
virtual bool Add(const wxFSWatchInfo& winfo)
|
|
{
|
|
wxCHECK_MSG( m_watches.find(winfo.GetPath()) == m_watches.end(), false,
|
|
"Path '%s' is already watched");
|
|
|
|
// construct watch entry
|
|
wxSharedPtr<wxFSWatchEntry> watch(new wxFSWatchEntry(winfo));
|
|
|
|
if (!DoAdd(watch))
|
|
return false;
|
|
|
|
// add watch to our map (always succeedes, checked above)
|
|
wxFSWatchEntries::value_type val(watch->GetPath(), watch);
|
|
return m_watches.insert(val).second;
|
|
}
|
|
|
|
virtual bool Remove(const wxFSWatchInfo& winfo)
|
|
{
|
|
wxFSWatchEntries::iterator it = m_watches.find(winfo.GetPath());
|
|
wxCHECK_MSG( it != m_watches.end(), false, "Path '%s' is not watched");
|
|
|
|
wxSharedPtr<wxFSWatchEntry> watch = it->second;
|
|
m_watches.erase(it);
|
|
return DoRemove(watch);
|
|
}
|
|
|
|
virtual bool RemoveAll()
|
|
{
|
|
m_watches.clear();
|
|
return true;
|
|
}
|
|
|
|
protected:
|
|
virtual bool DoAdd(wxSharedPtr<wxFSWatchEntry> watch) = 0;
|
|
|
|
virtual bool DoRemove(wxSharedPtr<wxFSWatchEntry> watch) = 0;
|
|
|
|
wxFSWatchEntries m_watches;
|
|
wxFileSystemWatcherBase* m_watcher;
|
|
};
|
|
|
|
|
|
#endif /* WX_PRIVATE_FSWATCHER_H_ */
|