aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/search_manager.h
diff options
context:
space:
mode:
authorMarisa-Chan2014-02-04 08:32:02 +0700
committerMarisa-Chan2014-02-04 08:32:02 +0700
commit4a454ed763c24f94062be5dd57f43e0a84c1b0a2 (patch)
treecbfd6f403c780c696d86bc02397e93a89dba9870 /engines/zvision/search_manager.h
parent9c9f59d57060617d1acec71bd0d4066504f17c7a (diff)
downloadscummvm-rg350-4a454ed763c24f94062be5dd57f43e0a84c1b0a2.tar.gz
scummvm-rg350-4a454ed763c24f94062be5dd57f43e0a84c1b0a2.tar.bz2
scummvm-rg350-4a454ed763c24f94062be5dd57f43e0a84c1b0a2.zip
ZVISION: New search manager for handle right handle for ZIX-files.
Diffstat (limited to 'engines/zvision/search_manager.h')
-rw-r--r--engines/zvision/search_manager.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/engines/zvision/search_manager.h b/engines/zvision/search_manager.h
new file mode 100644
index 0000000000..c768cb8b00
--- /dev/null
+++ b/engines/zvision/search_manager.h
@@ -0,0 +1,51 @@
+#ifndef SEARCH_MANAGER_H_INCLUDED
+#define SEARCH_MANAGER_H_INCLUDED
+
+#include "common/str.h"
+#include "common/hash-str.h"
+#include "common/hashmap.h"
+#include "common/archive.h"
+#include "common/file.h"
+#include "common/list.h"
+
+namespace ZVision {
+
+class sManager {
+public:
+ sManager(const Common::String &root_path, int depth);
+ ~sManager();
+
+ void addFile(const Common::String &name, Common::Archive *arch);
+ void addDir(const Common::String &name);
+ void addPatch(const Common::String &src, const Common::String &dst);
+
+ Common::File *openFile(const Common::String &name);
+ bool openFile(Common::File &file, const Common::String &name);
+ bool hasFile(const Common::String &name);
+
+ void loadZix(const Common::String &name);
+
+private:
+
+ void list_dir_recursive(Common::List<Common::String> &dir_list, const Common::FSNode &fs_node, int depth);
+
+ struct Node {
+ Common::String name;
+ Common::Archive *arch;
+ };
+
+ Common::List<Common::String> dir_list;
+
+ typedef Common::HashMap<Common::String, Node, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> MatchList;
+
+ Common::List<Common::Archive *> archList;
+ MatchList files;
+
+ Common::String _root;
+
+private:
+};
+
+}
+
+#endif // SEARCH_MANAGER_H_INCLUDED