From 4515228ca6ca94466600a70a80120d918c19a20f Mon Sep 17 00:00:00 2001 From: lzwdgc Date: Fri, 22 Jun 2018 01:50:38 +0300 Subject: [PATCH] Update buffer. --- src/common/buffer.cpp | 4 ++-- src/common/buffer.h | 20 ++++++++++---------- src/db_add_language/db_add_language.cpp | 3 ++- src/model/model.cpp | 8 ++++---- src/model/model.h | 4 ++++ src/save_loader/save.h | 2 +- src/tm_converter/tm_converter.cpp | 2 +- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/common/buffer.cpp b/src/common/buffer.cpp index e07899a..5324438 100644 --- a/src/common/buffer.cpp +++ b/src/common/buffer.cpp @@ -100,14 +100,14 @@ buffer::buffer(const buffer &rhs, uint32_t size, uint32_t offset) std::string buffer::read_string(uint32_t blocksize) const { std::vector data(blocksize); - read(data.data(), data.size()); + _read(data.data(), data.size()); return (const char *)data.data(); } std::wstring buffer::read_wstring(uint32_t blocksize) const { std::vector data(blocksize); - read(data.data(), data.size()); + _read(data.data(), data.size()); return (const wchar_t *)data.data(); } diff --git a/src/common/buffer.h b/src/common/buffer.h index 4904900..e8541de 100644 --- a/src/common/buffer.h +++ b/src/common/buffer.h @@ -23,8 +23,8 @@ #include #include -#define READ(b, var) b.read(&var) -#define READ_N(b, var, sz) b.read(&var, sz) +#define READ(b, var) b.read(var) +#define READ_N(b, var, sz) b.read(var, sz) #define READ_STRING(b, var) var = b.read_string() #define READ_STRING_N(b, var, sz) var = b.read_string(sz) @@ -50,9 +50,9 @@ public: buffer(const buffer &rhs, uint32_t size, uint32_t offset); template - uint32_t read(T *dst, uint32_t size = 1) const + uint32_t read(T &dst, uint32_t size = 1) const { - return _read((void *)dst, size * sizeof(T), 0); + return _read((void *)&dst, size * sizeof(T), 0); } std::string read_string(uint32_t blocksize = 0x20) const; std::wstring read_wstring(uint32_t blocksize = 0x20) const; @@ -102,16 +102,16 @@ public: void read_vector(std::vector &v) const { SizeType n = 0; - read(&n); + read(n); read_vector(v, n); } std::string read_pascal_string() const { uint32_t n = 0; - read(&n); + read(n); std::string s(n, 0); - read(s.data(), n); + _read(s.data(), n); return s; } @@ -128,6 +128,9 @@ public: const uint8_t *getPtr() const { return ptr; } + uint32_t _read(void *dst, uint32_t size, uint32_t offset = 0) const; + uint32_t _write(const void *src, uint32_t size); + private: std::shared_ptr> buf_; mutable uint32_t index_ = 0; @@ -135,7 +138,4 @@ private: mutable uint32_t data_offset = 0; mutable uint32_t size_ = 0; uint32_t end_; - - uint32_t _read(void *dst, uint32_t size, uint32_t offset = 0) const; - uint32_t _write(const void *src, uint32_t size); }; diff --git a/src/db_add_language/db_add_language.cpp b/src/db_add_language/db_add_language.cpp index 27dc108..6b39bf0 100644 --- a/src/db_add_language/db_add_language.cpp +++ b/src/db_add_language/db_add_language.cpp @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -299,7 +300,7 @@ try // to check correctness process_lang(*storage.get(), d / "ru", &polygon4::LocalizedString::ru); - for (auto &f : boost::make_iterator_range(fs::directory_iterator(d), {})) + for (auto &f : fs::directory_iterator(d)) { if (!fs::is_directory(f)) continue; diff --git a/src/model/model.cpp b/src/model/model.cpp index 2e291d3..36f7cc7 100644 --- a/src/model/model.cpp +++ b/src/model/model.cpp @@ -80,14 +80,14 @@ std::string translate(const std::string &s) template void aim_vector3::load(const buffer &b) { - READ(b, x); - READ(b, z); - READ(b, y); + READ(b, base::x); + READ(b, base::z); + READ(b, base::y); } void aim_vector4::load(const buffer &b, uint32_t flags) { - aim_vector3::load(b); + base::load(b); if (flags & F_USE_W_COORDINATE) READ(b, w); } diff --git a/src/model/model.h b/src/model/model.h index 6711336..bf2750c 100644 --- a/src/model/model.h +++ b/src/model/model.h @@ -80,11 +80,15 @@ enum class MaterialType : uint32_t template struct aim_vector3 : vector3 { + using base = vector3; + void load(const buffer &b); }; struct aim_vector4 : aim_vector3 { + using base = aim_vector3; + float w = 1.0f; std::string print() const; diff --git a/src/save_loader/save.h b/src/save_loader/save.h index 0c75594..7372e85 100644 --- a/src/save_loader/save.h +++ b/src/save_loader/save.h @@ -158,7 +158,7 @@ struct screen_segment : public segment void load(const buffer &b) { - b.read((uint8_t*)screenshot.getData().data(), screenshot.getBytesLength()); + b._read((uint8_t*)screenshot.getData().data(), screenshot.getBytesLength()); // rows should be swapped now: bottom is the first row etc. } }; diff --git a/src/tm_converter/tm_converter.cpp b/src/tm_converter/tm_converter.cpp index 399cba9..36e2b00 100644 --- a/src/tm_converter/tm_converter.cpp +++ b/src/tm_converter/tm_converter.cpp @@ -55,7 +55,7 @@ void convert(const path &fn) READ(src, width); READ(src, height); src.seek(0x10); - src.read(&dxt5_flag, 1); + src._read(&dxt5_flag, 1); src.seek(0x4C); auto s = fn.string() + ".bmp";