mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-25 13:42:37 +00:00
Modified Common::SearchSet to take signed integer priorities, for convenience (so that one can add archives with less-than-default priority)
svn-id: r34659
This commit is contained in:
parent
3779fc2170
commit
479e67f2f2
@ -275,7 +275,7 @@ FilesystemFactory *OSystem_SDL::getFilesystemFactory() {
|
||||
return _fsFactory;
|
||||
}
|
||||
|
||||
void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, uint priority) {
|
||||
void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
|
||||
|
||||
#ifdef DATA_PATH
|
||||
// Add the global DATA_PATH to the directory search list
|
||||
|
@ -209,7 +209,7 @@ public:
|
||||
|
||||
virtual Common::SaveFileManager *getSavefileManager();
|
||||
virtual FilesystemFactory *getFilesystemFactory();
|
||||
virtual void addSysArchivesToSearchSet(Common::SearchSet &s, uint priority = 0);
|
||||
virtual void addSysArchivesToSearchSet(Common::SearchSet &s, int priority = 0);
|
||||
|
||||
virtual Common::SeekableReadStream *openConfigFileForReading();
|
||||
virtual Common::WriteStream *openConfigFileForWriting();
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "common/archive.h"
|
||||
#include "common/fs.h"
|
||||
#include "common/util.h"
|
||||
#include "common/system.h"
|
||||
|
||||
namespace Common {
|
||||
|
||||
@ -231,7 +232,7 @@ void SearchSet::insert(const Node &node) {
|
||||
_list.insert(it, node);
|
||||
}
|
||||
|
||||
void SearchSet::add(const String& name, ArchivePtr archive, uint priority) {
|
||||
void SearchSet::add(const String& name, ArchivePtr archive, int priority) {
|
||||
if (find(name) == _list.end()) {
|
||||
Node node = { priority, name, archive };
|
||||
insert(node);
|
||||
@ -256,7 +257,7 @@ void SearchSet::clear() {
|
||||
_list.clear();
|
||||
}
|
||||
|
||||
void SearchSet::setPriority(const String& name, uint priority) {
|
||||
void SearchSet::setPriority(const String& name, int priority) {
|
||||
ArchiveList::iterator it = find(name);
|
||||
if (it == _list.end()) {
|
||||
warning("SearchSet::setPriority: archive '%s' is not present", name.c_str());
|
||||
@ -328,6 +329,10 @@ SeekableReadStream *SearchSet::openFile(const String &name) {
|
||||
|
||||
DECLARE_SINGLETON(SearchManager);
|
||||
|
||||
SearchManager::SearchManager() {
|
||||
clear(); // Force a reset
|
||||
}
|
||||
|
||||
void SearchManager::addArchive(const String &name, ArchivePtr archive) {
|
||||
add(name, archive);
|
||||
}
|
||||
@ -337,8 +342,16 @@ void SearchManager::addDirectory(const String &name, const String &directory) {
|
||||
}
|
||||
|
||||
void SearchManager::addDirectoryRecursive(const String &name, const String &directory, int depth) {
|
||||
add(name, SharedPtr<FSDirectory>(new FSDirectory(directory, depth)));
|
||||
add(name, ArchivePtr(new FSDirectory(directory, depth)));
|
||||
}
|
||||
|
||||
void SearchManager::clear() {
|
||||
SearchSet::clear();
|
||||
|
||||
// Always keep system specific archives in the SearchManager.
|
||||
// But we give them a lower priority than the default priority (which is 0),
|
||||
// so that archives added by client code are searched first.
|
||||
g_system->addSysArchivesToSearchSet(*this, -1);
|
||||
}
|
||||
|
||||
} // namespace Common
|
||||
|
@ -153,7 +153,7 @@ public:
|
||||
*/
|
||||
class SearchSet : public Archive {
|
||||
struct Node {
|
||||
uint _priority;
|
||||
int _priority;
|
||||
String _name;
|
||||
ArchivePtr _arc;
|
||||
};
|
||||
@ -169,7 +169,7 @@ public:
|
||||
/**
|
||||
* Add a new archive to the searchable set.
|
||||
*/
|
||||
void add(const String& name, ArchivePtr archive, uint priority = 0);
|
||||
void add(const String& name, ArchivePtr archive, int priority = 0);
|
||||
|
||||
/**
|
||||
* Remove an archive from the searchable set.
|
||||
@ -184,12 +184,12 @@ public:
|
||||
/**
|
||||
* Empties the searchable set.
|
||||
*/
|
||||
void clear();
|
||||
virtual void clear();
|
||||
|
||||
/**
|
||||
* Change the order of searches.
|
||||
*/
|
||||
void setPriority(const String& name, uint priority);
|
||||
void setPriority(const String& name, int priority);
|
||||
|
||||
virtual bool hasFile(const String &name);
|
||||
virtual int matchPattern(StringList &list, const String &pattern);
|
||||
@ -205,6 +205,8 @@ public:
|
||||
|
||||
class SearchManager : public Singleton<SearchManager>, public SearchSet {
|
||||
public:
|
||||
SearchManager();
|
||||
|
||||
/**
|
||||
* Add an existing Archive. This is meant to support searching in system-specific
|
||||
* archives, namely the MACOSX/IPHONE bundles.
|
||||
@ -221,6 +223,10 @@ public:
|
||||
*/
|
||||
void addDirectoryRecursive(const String &name, const String &directory, int depth = 4);
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
virtual void clear();
|
||||
};
|
||||
|
||||
/** Shortcut for accessing the search manager. */
|
||||
|
@ -917,7 +917,7 @@ public:
|
||||
* @param s the SearchSet to which the system specific dirs, if any, are added
|
||||
* @param priority the priority with which those dirs are added
|
||||
*/
|
||||
virtual void addSysArchivesToSearchSet(Common::SearchSet &s, uint priority = 0) {}
|
||||
virtual void addSysArchivesToSearchSet(Common::SearchSet &s, int priority = 0) {}
|
||||
|
||||
/**
|
||||
* Open the default config file for reading, by returning a suitable
|
||||
|
Loading…
x
Reference in New Issue
Block a user