From 4296dcdadfbdcdde5376c7525e0adf1a4566f52e Mon Sep 17 00:00:00 2001 From: korenkonder Date: Tue, 24 Oct 2023 15:54:28 +0300 Subject: [PATCH] Added some decoration for stream read and write --- src/KKdLib/a3da.cpp | 2 +- src/KKdLib/dds.cpp | 4 ++-- src/KKdLib/io/file_stream.hpp | 10 ++++++++++ src/KKdLib/io/memory_stream.hpp | 10 ++++++++++ src/KKdLib/io/stream.hpp | 10 ++++++++++ src/KKdLib/obj.cpp | 11 +++++------ src/MMPlusDec/MMPlusDec.cpp | 8 ++++---- 7 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/KKdLib/a3da.cpp b/src/KKdLib/a3da.cpp index 85f40948..c7096b9d 100644 --- a/src/KKdLib/a3da.cpp +++ b/src/KKdLib/a3da.cpp @@ -2894,7 +2894,7 @@ static void a3dc_write_a3da_key_f16(stream& s, a3da_key& value, a3da_compress_f1 head.ep_type_post = value.ep_type_post; head.max_frame = value.max_frame; head.length = len; - s.write(&head, sizeof(a3dc_key_header)); + s.write(head); switch (f16) { case A3DA_COMPRESS_F32F32F32F32: diff --git a/src/KKdLib/dds.cpp b/src/KKdLib/dds.cpp index c5519989..1b50d527 100644 --- a/src/KKdLib/dds.cpp +++ b/src/KKdLib/dds.cpp @@ -188,7 +188,7 @@ void dds::read(const wchar_t* path) { goto End; DDS_HEADER dds_h = {}; - if (s.read(&dds_h, sizeof(DDS_HEADER)) != sizeof(DDS_HEADER)) + if (s.read(dds_h) != sizeof(DDS_HEADER)) goto End; if (!((dds_h.flags & DDSD_CAPS) && (dds_h.flags & DDSD_HEIGHT) @@ -362,7 +362,7 @@ void dds::write(const wchar_t* path) { s.open(path_dds, L"wb"); if (s.check_not_null()) { s.write_uint32_t_reverse_endianness(DDS_MAGIC, true); - s.write(&dds_h, sizeof(DDS_HEADER)); + s.write(dds_h); uint32_t index = 0; do diff --git a/src/KKdLib/io/file_stream.hpp b/src/KKdLib/io/file_stream.hpp index e95b344f..872e95be 100644 --- a/src/KKdLib/io/file_stream.hpp +++ b/src/KKdLib/io/file_stream.hpp @@ -36,4 +36,14 @@ public: void open(const char* path, const char* mode); void open(const wchar_t* path, const wchar_t* mode); + + template + size_t read(T& data) { + return read(&data, sizeof(T)); + } + + template + size_t write(const T& data) { + return write(&data, sizeof(T)); + } }; diff --git a/src/KKdLib/io/memory_stream.hpp b/src/KKdLib/io/memory_stream.hpp index 5a638cf9..3667a52f 100644 --- a/src/KKdLib/io/memory_stream.hpp +++ b/src/KKdLib/io/memory_stream.hpp @@ -42,4 +42,14 @@ public: void open(std::vector& data); void copy(void** data, size_t* size); void copy(std::vector& data); + + template + size_t read(T& data) { + return read(&data, sizeof(T)); + } + + template + size_t write(const T& data) { + return write(&data, sizeof(T)); + } }; diff --git a/src/KKdLib/io/stream.hpp b/src/KKdLib/io/stream.hpp index 1bc1829d..556982b8 100644 --- a/src/KKdLib/io/stream.hpp +++ b/src/KKdLib/io/stream.hpp @@ -144,4 +144,14 @@ public: void write_offset(int64_t val, int64_t offset, bool is_x); void write_offset_f2(int64_t val, int64_t offset); void write_offset_x(int64_t val); + + template + size_t read(T& data) { + return read(&data, sizeof(T)); + } + + template + size_t write(const T& data) { + return write(&data, sizeof(T)); + } }; diff --git a/src/KKdLib/obj.cpp b/src/KKdLib/obj.cpp index cbdb039e..950b8a5f 100644 --- a/src/KKdLib/obj.cpp +++ b/src/KKdLib/obj.cpp @@ -1495,7 +1495,7 @@ static void obj_classic_read_model(obj* obj, prj::shared_ptrmaterial_array = alloc->allocate(obj->num_material); for (uint32_t i = 0; i < obj->num_material; i++) { obj_material_data& mat_data = obj->material_array[i]; - s.read(&mat_data, sizeof(obj_material_data)); + s.read(mat_data); for (obj_material_texture_data& j : mat_data.material.texdata) mat4_transpose(&j.tex_coord_mat, &j.tex_coord_mat); @@ -1665,7 +1665,7 @@ static void obj_classic_write_model(obj* obj, stream& s, int64_t base_offset) { obj_material_data mat_data = obj->material_array[i]; for (obj_material_texture_data& j : mat_data.material.texdata) mat4_transpose(&j.tex_coord_mat, &j.tex_coord_mat); - s.write(&mat_data, sizeof(obj_material_data)); + s.write(mat_data); } } s.align_write(0x10); @@ -4471,15 +4471,14 @@ static void obj_modern_read_model(obj* obj, prj::shared_ptrmaterial_array = alloc->allocate(obj->num_material); for (uint32_t i = 0; i < obj->num_material; i++) { - obj_material_data mat_data; - s.read(&mat_data, sizeof(obj_material_data)); + obj_material_data& mat_data = obj->material_array[i]; + s.read(mat_data); if (s.big_endian) obj_material_texture_enrs_table.apply(&mat_data); for (obj_material_texture_data& j : mat_data.material.texdata) mat4_transpose(&j.tex_coord_mat, &j.tex_coord_mat); - obj->material_array[i] = mat_data; } } } @@ -4881,7 +4880,7 @@ static void obj_modern_write_model(obj* obj, stream& s, obj_material_data mat_data = obj->material_array[i]; for (obj_material_texture_data& j : mat_data.material.texdata) mat4_transpose(&j.tex_coord_mat, &j.tex_coord_mat); - s.write(&mat_data, sizeof(obj_material_data)); + s.write(mat_data); } } s.align_write(0x10); diff --git a/src/MMPlusDec/MMPlusDec.cpp b/src/MMPlusDec/MMPlusDec.cpp index eb4fdd32..96aea602 100644 --- a/src/MMPlusDec/MMPlusDec.cpp +++ b/src/MMPlusDec/MMPlusDec.cpp @@ -92,7 +92,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) { uint8_t buf[0x400]; size_t size; if (encrypt) { - while (length && (size = in_file.read(buf, sizeof(buf)))) { + while (length && (size = in_file.read(buf))) { if (length == size) { // PKCS7 Padding uint8_t align = (uint8_t)(0x10 - size % 0x10); for (uint8_t i = 0; i < align; i++) @@ -107,7 +107,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) { } } else { - while (length && (size = in_file.read(buf, sizeof(buf)))) { + while (length && (size = in_file.read(buf))) { aes256_cbc_decrypt_buffer(&ctx, buf, size); if (length == size) // PKCS7 Padding @@ -152,7 +152,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) { uint8_t buf[0x400]; size_t size; if (encrypt) { - while (length && (size = in_file.read(buf, sizeof(buf)))) { + while (length && (size = in_file.read(buf))) { if (length == size) { // PKCS7 Padding uint8_t align = (uint8_t)(0x10 - size % 0x10); for (uint8_t i = 0; i < align; i++) @@ -167,7 +167,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) { } } else { - while (length && (size = in_file.read(buf, sizeof(buf)))) { + while (length && (size = in_file.read(buf))) { aes256_cbc_decrypt_buffer(&ctx, buf, size); if (length == size) // PKCS7 Padding