summaryrefslogtreecommitdiff
path: root/core/io/file_access_pack.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/io/file_access_pack.h')
-rw-r--r--core/io/file_access_pack.h83
1 files changed, 34 insertions, 49 deletions
diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h
index 0a1320e57b..d16f5c461e 100644
--- a/core/io/file_access_pack.h
+++ b/core/io/file_access_pack.h
@@ -29,18 +29,18 @@
#ifndef FILE_ACCESS_PACK_H
#define FILE_ACCESS_PACK_H
-#include "os/file_access.h"
-#include "os/dir_access.h"
-#include "map.h"
#include "list.h"
+#include "map.h"
+#include "os/dir_access.h"
+#include "os/file_access.h"
#include "print_string.h"
class PackSource;
class PackedData {
-friend class FileAccessPack;
-friend class DirAccessPack;
-friend class PackSource;
+ friend class FileAccessPack;
+ friend class DirAccessPack;
+ friend class PackSource;
public:
struct PackedFile {
@@ -49,21 +49,21 @@ public:
uint64_t offset; //if offset is ZERO, the file was ERASED
uint64_t size;
uint8_t md5[16];
- PackSource* src;
+ PackSource *src;
};
private:
struct PackedDir {
PackedDir *parent;
String name;
- Map<String,PackedDir*> subdirs;
+ Map<String, PackedDir *> subdirs;
Set<String> files;
};
struct PathMD5 {
uint64_t a;
uint64_t b;
- bool operator < (const PathMD5& p_md5) const {
+ bool operator<(const PathMD5 &p_md5) const {
if (p_md5.a == a) {
return b < p_md5.b;
@@ -72,7 +72,7 @@ private:
}
}
- bool operator == (const PathMD5& p_md5) const {
+ bool operator==(const PathMD5 &p_md5) const {
return a == p_md5.a && b == p_md5.b;
};
@@ -81,14 +81,14 @@ private:
};
PathMD5(const Vector<uint8_t> p_buf) {
- a = *((uint64_t*)&p_buf[0]);
- b = *((uint64_t*)&p_buf[8]);
+ a = *((uint64_t *)&p_buf[0]);
+ b = *((uint64_t *)&p_buf[8]);
};
};
- Map<PathMD5,PackedFile> files;
+ Map<PathMD5, PackedFile> files;
- Vector<PackSource*> sources;
+ Vector<PackSource *> sources;
PackedDir *root;
//Map<String,PackedDir*> dirs;
@@ -99,18 +99,17 @@ private:
void _free_packed_dirs(PackedDir *p_dir);
public:
+ void add_pack_source(PackSource *p_source);
+ void add_path(const String &pkg_path, const String &path, uint64_t ofs, uint64_t size, const uint8_t *p_md5, PackSource *p_src); // for PackSource
- void add_pack_source(PackSource* p_source);
- void add_path(const String& pkg_path, const String& path, uint64_t ofs, uint64_t size,const uint8_t* p_md5, PackSource* p_src); // for PackSource
-
- void set_disabled(bool p_disabled) { disabled=p_disabled; }
+ void set_disabled(bool p_disabled) { disabled = p_disabled; }
_FORCE_INLINE_ bool is_disabled() const { return disabled; }
static PackedData *get_singleton() { return singleton; }
- Error add_pack(const String& p_path);
+ Error add_pack(const String &p_path);
- _FORCE_INLINE_ FileAccess *try_open_path(const String& p_path);
- _FORCE_INLINE_ bool has_path(const String& p_path);
+ _FORCE_INLINE_ FileAccess *try_open_path(const String &p_path);
+ _FORCE_INLINE_ bool has_path(const String &p_path);
PackedData();
~PackedData();
@@ -119,21 +118,18 @@ public:
class PackSource {
public:
-
- virtual bool try_open_pack(const String& p_path)=0;
- virtual FileAccess* get_file(const String& p_path, PackedData::PackedFile* p_file)=0;
+ virtual bool try_open_pack(const String &p_path) = 0;
+ virtual FileAccess *get_file(const String &p_path, PackedData::PackedFile *p_file) = 0;
virtual ~PackSource() {}
};
class PackedSourcePCK : public PackSource {
public:
-
virtual bool try_open_pack(const String &p_path);
- virtual FileAccess* get_file(const String& p_path, PackedData::PackedFile* p_file);
+ virtual FileAccess *get_file(const String &p_path, PackedData::PackedFile *p_file);
};
-
class FileAccessPack : public FileAccess {
PackedData::PackedFile pf;
@@ -142,17 +138,15 @@ class FileAccessPack : public FileAccess {
mutable bool eof;
FileAccess *f;
- virtual Error _open(const String& p_path, int p_mode_flags);
- virtual uint64_t _get_modified_time(const String& p_file) { return 0; }
+ virtual Error _open(const String &p_path, int p_mode_flags);
+ virtual uint64_t _get_modified_time(const String &p_file) { return 0; }
public:
-
-
virtual void close();
virtual bool is_open() const;
virtual void seek(size_t p_position);
- virtual void seek_end(int64_t p_position=0);
+ virtual void seek_end(int64_t p_position = 0);
virtual size_t get_pos() const;
virtual size_t get_len() const;
@@ -160,8 +154,7 @@ public:
virtual uint8_t get_8() const;
-
- virtual int get_buffer(uint8_t *p_dst,int p_length) const;
+ virtual int get_buffer(uint8_t *p_dst, int p_length) const;
virtual void set_endian_swap(bool p_swap);
@@ -169,38 +162,34 @@ public:
virtual void store_8(uint8_t p_dest);
- virtual void store_buffer(const uint8_t *p_src,int p_length);
-
- virtual bool file_exists(const String& p_name);
+ virtual void store_buffer(const uint8_t *p_src, int p_length);
+ virtual bool file_exists(const String &p_name);
- FileAccessPack(const String& p_path, const PackedData::PackedFile& p_file);
+ FileAccessPack(const String &p_path, const PackedData::PackedFile &p_file);
~FileAccessPack();
};
-
-FileAccess *PackedData::try_open_path(const String& p_path) {
+FileAccess *PackedData::try_open_path(const String &p_path) {
//print_line("try open path " + p_path);
PathMD5 pmd5(p_path.md5_buffer());
- Map<PathMD5,PackedFile>::Element *E=files.find(pmd5);
+ Map<PathMD5, PackedFile>::Element *E = files.find(pmd5);
if (!E)
return NULL; //not found
- if (E->get().offset==0)
+ if (E->get().offset == 0)
return NULL; //was erased
return E->get().src->get_file(p_path, &E->get());
}
-bool PackedData::has_path(const String& p_path) {
+bool PackedData::has_path(const String &p_path) {
return files.has(PathMD5(p_path.md5_buffer()));
}
-
class DirAccessPack : public DirAccess {
-
PackedData::PackedDir *current;
List<String> list_dirs;
@@ -208,7 +197,6 @@ class DirAccessPack : public DirAccess {
bool cdir;
public:
-
virtual Error list_dir_begin();
virtual String get_next();
virtual bool current_is_dir() const;
@@ -221,7 +209,6 @@ public:
virtual Error change_dir(String p_dir);
virtual String get_current_dir();
-
virtual bool file_exists(String p_file);
virtual bool dir_exists(String p_dir);
@@ -234,8 +221,6 @@ public:
DirAccessPack();
~DirAccessPack();
-
};
-
#endif // FILE_ACCESS_PACK_H